“史前史中,没有别的场景比巨兽在焦油坑中垂死挣扎的场面更令人震撼。上帝见证着恐龙、猛犸象、剑齿虎在焦油中挣扎。它们挣扎得越是猛烈,焦油纠缠得越紧,没有任何猛兽足够强壮或具有足够的技巧,能够挣脱束缚,它们最后都沉到了坑底。”这是这本书最前面的一段话,Brooks用了焦油坑这个形象也有趣的比喻,来让人们知道,很多的大型软件设计系统就和这些猛兽一样,因为种种原因,落入了焦油坑,一个一个的淹没在焦油坑里,能够留下来的少之又少。每一个成功的大型软件系统背后,都付出了无数的艰辛,软件开发人员也为此付出了不少的心血。相信不少人看到这个有趣的比喻,都会有兴趣看下去的。
《人月神话》的作者,现在看上去是一位很和蔼的老人,Brooks,被称为“IBM 360 系统之父”。在计算机行业有很大的影响力,也为这个行业或者说学术界,做出了很大的贡献。美国计算机协会(ACM)称赞他“对计算机体系结构、操作系统和软件工程作出了里程碑式的贡献”。就比如简单的来说,我认为,这本书就算是一个贡献。
在软件项目管理领域,像《人月神话》这样有影响力并且畅销不衰的书很少见,甚至几乎没有。这本书为任何人管理复杂项目提供了颇具洞察力的见解,有很多发人深省的观点,也有大量的软件工程现实。大型编程项目深受由于人力划分产生的管理问题的困扰,保持产品本身的概念完整性是一个至关重要的需求,这本书探索了达成一致性的困难和解决的方法,并深入的探讨了软件工程管理的其他方面。最新一版本的书,相较之前比较早的版本,Brooks又增加了一些新的想法和建议,非常吸引人。
这本书的小标题都起的很有意思,比如一开始的“焦油坑”,后来的“外科手术队伍”、“ 贵族专制、民主政治和系统设计”、“为什么巴比伦塔会失败”、“干将莫邪”等等,每一个都让人有往下继续读的感觉。每一个也都有其各自的深意。
比如文中提到的外科手术队伍(The Surgical Team),则在强调如何在有意义的时间内创造大型的系统。也就是一个效率的问题。但是这其中又有很多难以两全的事情,所以,Mills就提供了一个解决方案。他建议大型项目的每一部分,由一个团队解决。继续使用医生的比喻,就是这个团队大概要分为:外科医生,副手,管理员,编辑等,每一个部分都有其各自的工作划分。保证整个系统必须具备概念上的完整性,要有一个系统结构师从上到下进行所有的设计。且这种方法,运用到实际操作中,也是很实用很适用有效率的。
“为什么巴比伦塔会失败”也是我很喜欢的一个章节。据《创世纪》记载,巴比伦塔是人类继诺亚方舟之后的第二大工程壮举,但同时,这也是一个彻底失败的工程。这就主要说明了一个沟通的问题。如果设计每一块程序的人交流沟通不到位,那么这个程序很可能就不能完整的做出来。作者也为这个提供了很多的建议,沟通的方式有多种,比如通过会议,最直接的方式,让大家都对其他小组的东西有一个大致的了解。比如我做出了一个东西,里面有的设计部分和别人的设计部分有了冲突,那么再改起来就是一件很麻烦而且很耽误时间的事情。
另外作者一直在强调关于文档规整的问题,这个其实我认为也是非常重要的,设计出一款软件,同时必须配备一个详细的说明文档,才算完整。很多工科生这方面都比较欠缺,有的写文档时也写得不够详细,很多东西都一带而过了。大一的很多课程的学习上,老师也大多会要求写文档,我觉得这就算是一个很好的练习。把自己设计出来的东西,完整的表达出来,也是我们必须要掌握的基本技能,否则也不能称得上一个合格的软件工作者。
通过《人月神话》这本书,确实让我学习到了很多富有创造性的观点和思想,我觉得对我以后的学习都会有很大的帮助。而且以后可能都会经常的翻看。通过这本书,我也大概了解了在设计大型软件系统的过程和通常遇到的问题,虽然现在我还没有机会接触参与这种设计,但是我相信以后一定会派上用场。
注释:
部分内容摘自《人月神话》;