职业的乐趣和苦恼
职业的乐趣和苦恼
人月神话
这段话写的让我很有同感,创造的乐趣只有在工作中才能体会,而真正参与工作就代表又不得不面对工作的苦恼,否则就变成了对遥远的幻想的渴望,像小朋友对科研的兴趣一样。什么时候小孩子们不去为了内卷和压过别人去学习和工作呢?所以他们才会讨厌学习.. 虽然社会和他们的父母已经无可救药了。
编程为什么有趣?作为回报,它的从业者期望得到什么样的快乐?
首先,这种快乐是一种创建事物的纯粹快乐。如同小孩在玩泥巴时感到快乐一样,成年人喜欢创建事物,特别是自己进行设计。我想这种快乐是上帝创造世界的折射,一种呈现在每片独特、崭新的树叶和雪花上的喜悦。
其次,这种快乐来自于开发对他人有用的东西。内心深处,我们期望我们的劳动成果能够被他人使用,并能对他们有所帮助。从这一角度而言,这同小孩用粘土为“爸爸的办公室”捏制铅笔盒没有任何本质的区别。
第三,快乐来自于整个过程体现出的一股强大的魅力—— 将相互啮合的零部件组装在一起,看到它们以精妙的方式运行着,并收到了预先所希望的效果。比起弹球游戏机或自动电唱机所具有的迷人魅力,程序化的计算机毫不逊色。
第四,这种快乐是持续学习的快乐,它来自于这项工作的非重复特性。人们所面临的问题总有这样那样的不同,因而解决问题的人可以从中学习新的事物:有时是实践上的,有时是理论上的,或者兼而有之。
最后,这种快乐还来自于在易于驾驭的介质上工作。程序员,就像诗人一样,几乎是仅仅工作在单纯的思考中。程序员凭空地运用自己的想像,来建造自己的“城堡”。很少有创造介质如此灵活,如此易于精炼和重建,如此容易实现概念上的设想(不过我们将会看到,容易驾驭的特性也有它自己的问题)。
然而程序毕竟同诗歌不同:它是实实在在的东西;它可以移动和运行,能独立产生可见的输出;它能打印结果,绘制图形,发出声音,移动支架。神话和传说中的魔术在我们的时代已变成了现实。在键盘上键入正确的咒语,屏幕会活动、变幻,显示出前所未有的也不可能存在的事物。
编程的快乐在于它不仅满足了我们内心深处进行创造的渴望,而且还唤醒了每个人内心的情感。
然而这个过程并不全都是快乐的。我们只有事先了解一些编程固有的苦恼,这样,当它们真的出现时,才能更加坦然地面对。
首先,苦恼来自追求完美。因为计算机是以这样的方式来变戏法的: 如果咒语中的一个字符、一个停顿,没有与正确的形式一致,魔术就不会出现(现实中,很少有人类活动会要求如此完美,所以人类对它本来就不习惯)。实际上,我认为,学习编程最困难的部分,是将做事的方式向追求完美的方向调整”。
其次,苦恼来自由他人来设定目标、供给资源和提供信息。编程人员很少能控制工作环境和工作目标。用管理的术语来说,个人的权威和他所承担的责任是不相配的。不过,似乎在所有的领域中,对要完成的工作,很少能提供与责任相一致的正式权威。而现实情况中,实际(相对于形式)的权威来自于每次任务的完成。
对于系统编程人员而言,对其他人的依赖是一件非常痛苦的事情。他依靠其他人的程序,而这些程序往往设计得并不合理、实现拙劣、发布不完整(没有源代码或测试用例)或者文档记录得很糟。所以,系统编程人员不得不花费时间去研究和修改,而它们在理想情况下本应该是可拿的、完整的。
下一个苦恼 —— 概念性设计是有趣的,但寻找琐碎的bug却是一项重复性的活动。伴随着创造性活动的,往往是枯燥沉闷的时间和艰苦的劳动。程序编制工作也不例外。
另外,人们发现调试和查错往往是线性收敛的,或者更糟糕的是,具有二次方的复杂度。结果,测试一拖再拖,寻找最后一个错误比第一个错误将花费更多的时间。
最后一个苦恼,有时也是一种无奈 ——当投入了大量辛苦的劳动,产品在即将完成或者终于完成的时候,却己显得陈旧过时。可能是同事和竞争对手己在追逐新的、更好的构思;也许替代方案不仅仅是在构思,而且己经在安排了。