人月神话阅读笔记-01
焦油坑
编程产品是简单程序通过通用化,测试,文档,维护等产生的。(保证是一个完整的程序)
编程系统是简单程序符合规范,功能上相互协作,并能与系统在交互上不出错。(保证能与系统配合)
编程系统产品=编程系统+编程产品。编程系统产品才是大多数系统开发的目标。
编程系统产品的成本是简单程序的9倍。
人月神话
乐观主义:
系统编程的的进度安排背后的第一个错误假设是:一切都将运作良好,每一项任务仅花费它所“应该”花费的时间。一切运转正常对于单个任务而言具有可实现性,但对于大型编程工作而言,任务多,还有先后次序,一切正常的概率变得很小。
人月神话:
用人月作为衡量一项工作的规模是一个危险和带有欺骗性的神话,因为它暗示数量和时间是可以相互替换的。人数和时间的交换仅限于以下情况:某个任务可以分解给参与的人员,而且他们之间不需要相互的交流。沟通所增加的负担由两个部分组成:培训和相互的交流。培训的成本是随人数的增加而线性增加的。沟通的成本随人数的增加而快速上升。
系统测试:
单元测试和系统测试受到进度安排中的顺序限制影响很大,因为预计的缺陷比实际的少很多,所以对测试的估计也是不准确的。
作者的经验是:1/3计划,1/6编码,1/4构件测试和早期系统测试,1/4系统测试,所有构件的完成。
空泛的估算:
为了满足顾客期望的日期而造成的不合理进度安排。
有两种解决方案:开发并推行生产率图表,缺陷率图表、估算规则等;
让项目经理坚持他们的估计
重复产生的进度灾难:
向进度落后的项目中增加人手,只会使进度更加落后。
外科手术队伍
最好的和最差的表现在生产率上平均为10:1,在运行速度和空间上具有5:1的惊人差异!简言之,$20,000/年的程序员的生产率可能是¥10,000/年程序员的10倍。
得出的结论很简单:如果一个200 人的项目中,有25 个最能干和最有开发经验的项目经理,那么开除剩下的175 名程序员,让项目经理来编程开发。所以说有经
验的程序员才是最廉价的劳动力啊。Harlan Mills 的提议提供了一个崭新的、创造性的解决方案2,3。Mills 建议大型项目的每一个部分由一个团队解决,但是该
队伍以类似外科手术的方式组建,而并非一拥而上。也就是说,同每个成员截取问题某个部分的做法相反,由一个人来进行问题的分解,其他人给予他所需要的
支持,以提高效率和生产力。有时候民主和平等也许并非是最好的选择:因为首先在人在智力上、能力上就并不平等。外科手术式的团队其实是延续了早期英雄
式的编程风格:主要的程序员决定了项目的大部分内容,而其他人则成为他的副手,帮助他完成各项细节性的工作。