偶尔复习了一遍《人月神话》的节选,这一段关于乐趣和苦恼的阐述,虽然未必能覆盖所有的情况,但已经把一些比较普遍的情况给概括了.其实乐趣和苦恼,无非就是那些东西,简单,但难以逾越.
-----------------------------------------------------------------------------------
职业的乐趣
编程为什么有趣?作为回报,它的从业者期望着什么样的快乐?
首先是一种创建事物的纯粹的快乐。如同小孩从玩泥巴中感到愉快一样,成人喜欢创建事物,特别是自己的设计。我想这种快乐一定是对上帝创造世界的映射,一种呈现在每个独特、崭新的叶片和雪花的喜悦。
第二是创建对其他人有用东西的欢乐。内心深处,我们需要其他人使用我们的劳动成果并感到有所帮助。从这个方面,编程系统与小孩用粘土为“爸爸办公室”捏制铅笔盒没有本质的区别。
第三是将相互啮合的部分组装在一起,并看到它们精妙的工作,实现预先所内建的结果,所体现的魔力。程序化的计算机具有像弹珠游戏或点唱机所有的令人入迷的魅力。
第四是学习的乐趣,来自于该工作的非重复的特性。问题在某个或其它方面总不同,解决的人员可以学习新的事物:有时是实践上的,有时是理论上的,或者两者兼有。
最后,是在如此易于驾驭的介质上工作的乐趣。程序员,像诗人一样,几乎工作在纯粹的思考中。程序员凭空地通过实现想象来建造自己的城堡。很少有创造的媒介如此的灵活,如此容易的完善和重建,以及如此容易的实现概念上的构架。(如同我们将看到的,容易驾驭的特性具有它自己的问题)然而程序同诗歌不同,是实实在在可以移动和工作的,以及产生独立于程序的可见输出。它打印出结果,绘制图形,发出声音,移动支架等。神话和传说的魔术在我们的时代变成了现实。即在键盘上键入正确的咒语,显示屏幕活动起来,显示从来没有或者存在的事物。编程非常有趣,因为它满足我们内部深处的创建渴望和愉悦了所有人共同的感受。
职业的苦恼
然而并不全部都是喜悦,了解一些固有的烦恼能使它们出现时,更容易忍受。
首先,必须追求完美。计算机也以这种方式来变戏法。如果咒语的一个字符、一个停顿没有与正确的形式严格一致,魔术不会出现。人类不习惯于完美,只有很少的人类活动需要它。我认为,向完美的方式进行调整是学习编程的最困难的部分。
其次,其它的人设定了目标,供给资源,提供信息。编程的人员很少控制工作的环境,甚至工作的目标。用管理的术语而言,某人的权威对他所承担的责任是不充分的。不过,看起来在所有的领域中,对完成的工作,很少能提供与责任一致的正式的权威。而现实情况中,工作推进的动力需要实际(相对于正式)的权威。对其他人的依赖的影响比较突出,这对系统编程人员尤其痛苦。他依赖者其他人的程序。通常这些程序设计得不合理,实现拙劣,发布不完整(没有源代码或测试用例),或者文档记录得很糟。所以系统编程人员必须花费时间研究和修改在理想情况下应该完整、可用和有用的东西。
下一个烦恼——设计概念是有趣的,但寻找琐碎的BUG 仅仅是一项工作。伴随着创造性活动的,往往是枯燥、沉闷的时间,艰苦的劳动;程序编制工作也不例外。另外,人们发现调试查错具有线性的收敛,或者更糟的是具有二次方的复杂度。所以,测试一拖再拖,寻找最后一个错误比第一个错误花费更多的时间。
最后一个苦恼,有时也是一种无奈——当某人花费大量劳动的产品在完成以前或完成时,显得陈旧。可能同事和竞争对手已在追逐新的、更好的设想。可能替代的方案不仅仅在构思,而且已经在安排了。现实的情况通常比上述的好一些。当产品开发完成时,新的、更佳的产品通常并不可用;仅仅是被大家所谈论。另外,它同样需要数月的开发时间。事实上,仅现实需要时,才要求使用最新的设想。因为所实现系统的价值已能体现回报,满足要求。
诚然,产品开发所基于的技术不断在进步。一旦设计被冻结,在概念上就已经陈旧了。不过,实际产品的实现需要阶段化和进行度量。实现的落后情况需要根据其它现有的系统进行测量,而非未实现的概念。我们所面临的挑战和任务是在现实的时间、有效的资源范围内,寻找实际问题的切实可行的解决方案。
这,就是编程。一个许多人痛苦挣扎的焦油潭以及一个乐趣和苦恼共存的创造性活动。对于许多人而言,其中的乐趣远大于烦劳。本书的剩余部分试图为通过这样的焦油潭搭建一些木板小径。
转自:http://vcbear.mblogger.cn/posts/40222.aspx
分享到:
相关推荐
《我编程,我快乐:程序员职业规划之道》这本书聚焦于软件开发者如何在职业生涯中找到乐趣、实现个人价值和持续成长。作为一个程序员,你的工作不仅仅是编写代码,而是通过代码创造价值,解决问题,甚至改变世界。...
读书笔记:关于程序员的自我修养
通过阅读《人月神话》,程序员和管理者可以更深入地理解软件开发的本质,学习如何有效地组织和管理项目,避免常见的陷阱,并提升软件产品的质量和可维护性。这本书不仅仅是一本技术书籍,更是关于软件开发艺术和智慧...
我编程,我快乐:程序员职业规划之道.pdf 我编程,我快乐:程序员职业规划之道.pdf
Java 程序员职业规划指南 Java 程序员职业规划是指为了实现一个远期目标而... Java 程序员职业规划是非常重要的, Java 程序员应该制定自己的职业规划,明确自己的职业目标和发展方向,提高自己的职业竞争力和满意度。
C++编程惯用法:高级程序员常用方法和技巧.part2.rar
李刚 著 ISBN:9787115263049
《人月神话等程序员书籍》这个压缩包包含了程序员必读的经典书籍,对于任何希望在IT行业,特别是C++程序设计领域深入的人来说,这些资源无疑是宝贵的财富。书籍是知识的海洋,而这些经典之作则如同海洋中的灯塔,...
针对文件信息,接下来的内容将基于“程序员到项目经理”的职业发展路径进行详细的知识点阐述。 首先,程序员与项目经理虽然都属于IT行业中的职位,但他们的工作职责、技能要求、以及日常活动有着根本的不同。程序员...
C++编程程惯用法:高级程序员常用方法和技巧
C++ C++编程惯用法:高级程序员常用方法和技巧.pdf
Android高薪之路:Android程序员面试宝典
疯狂Java:突破程序员基本功的16课.修订版 疯狂Java:突破程序员基本功的16课.修订版.pdf
### 程序员职业规划:让自己变得重要的关键策略 #### 一、引言 在IT行业快速发展的背景下,程序员面临着越来越激烈的竞争和技术更新的压力。本文将深入探讨如何通过有效的职业规划,使自己在职场中变得不可或缺。...
本书着眼于如何帮助程序员在IT行业找到属于自己的成功之路,涵盖了程序员在职业生涯中应该如何规划、技术与商业领域的选择、新技术与旧技术的关系、技术专业领域的深入与广泛涉猎,以及如何为公司创造价值和推广自我...
C++编程惯用法:高级程序员常用方法和技巧.part3.rar
Android高薪之路:Android程序员面试宝典 pdf
C++编程惯用法:高级程序员常用方法和技巧.part1.rar