《人月神话》是IBM360系统之父布鲁克斯所著的经典,它为人们管理复杂项目提供了颇具洞察力的见解,既有很多发人深省的观点,也有大量的软件工程实践,读后受益匪浅,倍受启发。
本书分为15节,其中焦油坑,人月神话,外科手术队伍,贵族专制,民主政治和系统设计以及没有银弹是我最喜欢的几章,以下是我从这几个章节所获得的知识和见解:从(焦油坑)一节中,我认识到了 编程系统产品开发的工作量是供个人使用的、独立开发的构件程序的九倍;编程行业也存在一些苦恼:(1) 将做事方式调整到追求完美,是学习编程的最困难部分。(2) 由其他人来设定目标,并且必须依靠自己无法控制的事物。(3) 真正的权威来自于每次任务的完成。(4)任何创造性活动都伴随着枯燥艰苦的劳动,编程也不例外(5) 人们通常期望项目在接近结束时(bug、工作时间)能收敛得快一些,然而软件项目的情况却是越接近完成,收敛得越慢。(6) 产品在即将完成时总面临着陈旧过时的威胁。
(人月神话)一节阐述了(1) 缺乏合理的时间进度是造成项目滞后的最主要原因,它比其他所有因素加起来影响还大。(2)良好的烹饪需要时间,某些任务无法在不损害结果的情况下加快速度。(3)我们的构思是有缺陷的,因此总会有bug。(4)我们围绕成本核算的估计技术,混淆了工作量和项目进展。人月是危险和带有欺骗性的神话,因为它暗示人员数量和时间是可以相互替换的。(5) 在若干人员中分解任务会引发额外的沟通工作量——培训和相互沟通(6)关于进度安排,作者的经验是为1/3计划、1/6编码、1/4构件测试以及1/4系统测试。(7)因为我们对自己的估计技术不确定,所以在管理和客户的压力下,我们常常缺乏坚持的勇气。(8)Brook法则:向进度落后的项目中增加人手,只会使进度更加落后。(9) 向软件项目中增派人手从三个方面增加了项目必要的总体工作量:任务重新分配本身和所造成的工作中断;培训新人员;额外的相互沟通。
(外科手术队伍)(1) 同样有两年经验而且在受到同样的培训的情况下,优秀的专业程序员的工作效率是较差程序员的十倍。(2)小型、精干队伍是最好的。这一点在软件工艺和极限编程里都得到了充分的体现。(3)两个人的团队,其中一个项目经理,常常是最佳的人员使用方法。(4) 对于真正意义上的大型系统,小型精干的队伍太慢了。(5) 实际上,绝大多数大型编程系统的经验显示出,一拥而上的开发方法是高成本、速度缓慢、不充分的,开发出的产品无法进行概念上的集成。(6) 一位首席程序员、类似于外科手术队伍的团队架构提供了一种方法,既能获得由少数头脑产生的产品完整性,又能得到多位协助人员的总体生产率,还彻底地减少了沟通的工作量。
从(贵族专制,民主政治和系统设计)一节中我意识到了(1)概念完整性是系统设计中最重要的考虑因素。(2) 为了获得概念完整性,设计必须由一个人或者具有共识的小型团队来完成。(3) 对于非常大型的项目,将设计方法、体系结构方面的工作与具体实现相分离是获得概念完整性的强有力方法。(4) 纪律、规则对行业是有益的。外部的体系结构规定实际上是增强,而不是限制实现小组的创造性。(5) 体系结构、设计实现、物理实现的许多工作可以并发进行。
(没有银弹)一节中阐述了人狼是一种具有人和狼两种特征的恐怖生物,而银弹是消灭它的一种最有效的子弹。作者将软件开发比作人狼,而将提高软件开发效率的方法比作银弹。作者预言未来十年,想要试图通过寻找一种有效地银弹将软件开发效率提高一个甚至几个数量级,这种银弹不可能出现。没有银弹这篇文章里作者列举出了当时一些非常先进的技术或思想理念,例如Ada和其他高级编程语言、面向对象编程、人工智能、专家系统、“自动”编程、图形化编程、程序验证、环境和工具、工作站等。虽然这些先进技术在一定程度上提高了软件开发的效率,但是始终没有达到银弹的效果。
总之,软件行业正在迅猛的发展,《人月神话》使我终身受益,作为其中领域的一员,我们必须得加把劲用丰富的知识,积累雄厚的经验技术基础来武装自己,在接下来的大学时光中尽可能的吸收,汲取来自书中和师长那的精髓,斗志昂扬的去迎接每一个挑战,而引领我步步向前的便是《人月神话》!