《人月神话》第一章的主要内容是编程是一个乐趣与苦恼并存的焦油坑。
书中用了一个很新形象的比喻:大型软件系统的开发就像是一个焦油坑,而软件开发人员就像是被焦油坑淹没的猛兽。这个比喻很形象的说明了大型软件系统的开发是一个及其复杂的事情。
1. 编程系统产品
许多程序员都相信这样一个神话:就像车库中的创业者一样单个的程序员通过更高的人均代码量,替代一个产业化的队伍,做出优秀的产品。
但是一个能运行的程序和一个最终的产品完全不是同一个概念,并且差距很大,后者至少是前者9倍的成本。
一个真正有用的产品是一个通过各种测试的、通用性的、可跨平台运行的、具有规范化接口、可与其他构件集成的程序,并且有完整的文档,任何人根据文档可以运行、测试、修复和扩展。
形成一个最终的产品的成本要大的多。而开发人员更应该将形成真正有用的产品作为开发目标。
2.编程的乐趣:
书中列举了很多编程的乐趣,我自己总结了俩条:
(1)成就感
成就感主要在于你可以自己可以做出一个东西并且对别人有帮助,在这个过程中遇到困难并解决,当你完成一个软件或一个项目时别人对你投来敬佩的眼光。这种成就感我想大家都有所体验,就好比小时候自己手工制作出一个玩具一样,都能高兴好几天。
(2) 持续学习的乐趣
持续学习的乐趣主要在于在编程的过程中有时会需要运用各方面的知识,会迫使你去学以致用,这样你就会感觉每天都会有所进步,这种感觉也是非常享受的。
3. 编程的苦恼
当然,任何事情都有两面性,有乐趣自然就会有苦恼。但总体上我认为我在其中体会到的乐趣要大于苦恼,所以我本人是非常热爱编程的。
我们先要认识到会有哪些苦恼,这样在以后遇到这些苦恼时就会坦然面对。
主要有一下几点:
- 来自细节
- 来自被动
- 来自bug
- 来自时效性
(1) 苦恼来自于细节,因为程序是非常敏感的,一旦有一个细小的地方不正确,整个程序就不能运行,所以有时一些细节的问题会给你带来苦恼。
(2) 苦恼来自于被动,因为在实际中你都是根据别人定的目标需求来进行编程,并且有时候还需要被动的去研究、修改别人不规范的代码,这有时会很痛苦。
(3) 苦恼来自于bug,寻找琐碎的bug将不会是一件很有趣的事,往往伴随着枯燥沉闷的时间和艰苦的劳动,并且寻找最后一个错误比第一个错误将花费更多的时间。
(4) 苦恼来自于时效性,因为有时候你开发一个程序产品,而当你克服各种困难最终完成的时候,已经有其他高效的团队开发出了更先进的替代品,这样你开发出来的就过时了,这往往很让人无奈。
以上就是第一章的内容,以及我个人的理解。总之一句话:真正热爱编程的人从中体会到的乐趣大于苦恼。