编程为什么有趣?
首先,这种快乐是一种创建事物的纯粹的快乐。如同小孩在玩泥巴时感到的快乐一样成年人喜欢创建事物,特别是自己进行设计。
其次,这种快乐来自于开发对他人有用的东西。内心深处,我们期望我们的劳动成果能够被他人使用,并能对他们有所帮助。
第三,快乐来自于整个过程体现出的一股强大魅力——将相互啮合的零部件组装在一起,看到它们以精妙的方式运行着,并收到预期的效果。
第四,这种快乐是持续学习的快乐,它来自于这项工作的非重复特性。人们所面临的问题总是这样那样的不同,因而解决问题的人可以从中学习新的事物。包括实践上的或理论上的。
最后,这种快乐来自于易于驾驭的介质上工作。程序员,就像诗人一样,几乎仅仅在单纯的思考中工作。很少有创作介质如此灵活,如此易于重建,如此容易实现概念上的设想。
编程的快乐在于它不仅满足了我们内心深处进行创造的渴望,而且还唤醒了每个人内心的情感。
然而,这个过程并不全是快乐的。了解一些编程固有的苦恼,当它们真的出现时,才能更加坦然地面对。
首先,苦恼来自于追求完美。因为计算机是这样变戏法的:如果一个字符、一个停顿,没有与正确的形式一致,魔术就不会出现。
其次,苦恼来自由他人来设定目标,供给资源和提供信息。编程人员很少能控制工作环境和工作目标。即个人的权威和他所承担的责任是不相匹配的。现实情况中,实际的权威来自于 每次任务的完成。
第三,编程人员编程依赖与其他人所编写的程序。它们理想情况下本应该是可靠的、完整的,现实中却因设计得并不合理、实现拙劣、文档记录不完整,编程人员不得不花费时间去研究和修改。
下一个苦恼是概念性设计是有趣的,但寻找琐碎的bug却是一项重复性的活动。伴随着创造性活动的,往往是枯燥沉闷的时间和艰苦的劳动。
另外,发现调试和查错往往是线性收敛的,更糟的是,具有二次方的复杂度。结果,测试一拖再拖,寻找最后一个错误比第一个错误将花费更多的时间。
最后一个苦恼,有时也是一种无奈。当投入大量辛苦的劳动,产品在即将完成或者终于完成的时候,却已显得陈旧过时。可能是同事和竞争对手已在追逐新的、更好的构思;也许替代方案不仅仅是在构思,而且已经安排了。
这就是编程,一个许多人痛苦针扎的焦油坑以及一种乐趣和苦恼共存的创造性活动。
网友评论