第二章 人月神话(The Mythical Man-Month)
美食的烹调需要时间;片刻等待,更多美味,更多享受。
在众多软件项目中缺乏合理的进度安排是造成软件项目滞后的主要原因。造成这种灾难的原因是什么呢?
乐观主义
所有的编程人员都是乐观主义者。
系统编程的进度安排背后的第一个错误的假设是:一切都将运作良好,每一项任务仅花费它所“应该”花费的时间。
单个任务中,“一切都将运行正常”的假设在进度上具有可实现性,然而对于大型系统,一切正常的概率接近于无。
人月
第二个谬误的思考方式是在估计和进度安排中使用的工作计量单位:人月。
用人月作为衡量一项工作的规模是一个危险和带有欺骗性的神话。
系统测试
通常实际出现的缺陷数量比预料的要多得多,系统测试又受到顺序的限制,因此,系统测试的进度安排常常是最不合理的部分。
空泛的估算
厨师两分钟煎一个蛋,顾客的选择:生吃,或者等待,或者煎焦的蛋。
重复产生的进度灾难
一个生动的例子得出的Brooks法则:
向进度落后的项目中添加人手,只会时进度更加落后。(Adding manpower to a late software project makes it later.)
项目的时间依赖于顺序上的限制,人员的最大数量依赖于独立自任务的数量。