编程的乐趣与苦恼

来源:互联网 发布:评价火星哥的唱功知乎 编辑:程序博客网 时间:2024/05/10 05:10

      编程为什么有趣?作为回报,他的从业者期望得到什么样的快乐?

     首先,这种快乐是一种创造事物的纯粹快乐。如同小孩子在玩泥巴是感到快乐一样;成年人喜欢创建事物,特别是自己进行设计。

     其次,这种快乐来自于开发出对他人有用的东西。内心深处,我们期望我们的劳动成果能够被他人使用,比能对他们有所帮助。从这一角度而言,这同小孩子用黏土为"爸爸的办公室"捏制笔筒或笔架没有任何本质的区别。

     第三,快乐来自于整个过程体现出的一股强大的魅力--将相互咬合的零部件组装在一起,看到它们以精妙的方式运行着,并收到了预先所希望的效果。比起弹球游戏机或自动点唱机缩聚有的迷人魅力,程序化的计算机毫不逊色。

     第四,这种快乐是持续学习的快乐,他来自于这项工作的非重复特性。人们所面临的问题总有这样那样的不同,因而解决问题的人可以从中学习到新的事物:有时候是实践上的,有时候是理论上的,更或者是两者兼而有之的。

     最后,这种快乐还来自于在易于驾驭的介质上工作。程序员,就像诗人一样,几乎是仅仅工作在单纯的思考中。程序员凭空地运用自己的想象,来建造自己的"城堡"。很少有创造介质如此灵活,如此易于精炼和重建,如此容易实现概念上的设想。不过,我们也将看到,容易驾驭的特性也由他自己的问题。

     神话和传说中的魔法在我们的时代己变成现实。在键盘上输入正确的咒语,屏幕会活动、变幻,显示出前所未有的也不可能存在的事物。编程不仅可以满足我们内心深处进行创造的渴望,而且还唤醒了每个人内心的感情。

    但是,往往事情的发展总不是一帆风顺的,这个过程并不全都是快乐的。我们只有事先了解一些编程固有的苦恼,这样,当它们真正的出现时,才能更加坦然地面对。

    首先,苦恼来自追求完美。实际上,我认为,学习编程最困难的部分,是将做事的方式向追求完美的方向调整。
其次,苦恼来自于由他人来设定目标、供给资源、提供信息。程序员很少能控制工作环境和工作目标。对于系统编程人员而言,对其他人的依赖是一件非常痛苦的事情。他依靠其他人的程序,而往往这些程序设计的并不合理、实现拙劣、发布不完整(没有源代码或测试用例)、或者文档记录得很糟。所以,系统编程人员不得不花费时间去研究和修改,而它们在理想情况下本应该是可靠完整的。

    下一个苦恼--概念性设计是有趣的,但寻找琐碎的bug去只是一项重复性的活动。伴随创造性活动的,往往是枯燥沉闷的时间和艰苦的劳动。程序编制工作也不例外。

    最后一个苦恼,有时也是一种无奈--当投入了大量的辛苦劳动,产品在即将完成或者终于晚成的时候,却已显的陈旧过时。可能是同事或竞争对手已在追逐新的、更好的构思;也许替代方案不仅仅是在构思,而且已经在安排了。

    现实情况比上面所说的通常要好一些,当产品开发完成时,更优秀的新产品通常还不能投入使用,而仅仅是为大家谈论而已。事实上,只有在需要时,才会用到最新的设想,因为所实现的系统已经能够满足要求,并体现了回报。

    诚然,产品开发所基于的技术在不断地进步,一旦设计被冻结,在概念上就已经开始陈旧了。不过,实际产品需要一步一步按阶段实现。实现落后与否的判断应根据其他一有的系统,而不是未来实现的概念。

    因此,我们所面临的挑战和任务是在实际得进度和有效的资源范围内,寻找解决实际问题的切实可行方案。

    编程--一个许多人痛苦挣扎的焦油坑以及一种乐趣和苦恼共存的创造性活动。对于许多人而言,其中的快乐远远大于苦恼。