人月神话阅读笔记02
在这个日新月异的社会,软件的更替速度都很快,时间是许多软件发布的关键,先发布的软件就可以占据市场,就有可能获得成功,这就是“早起的鸟儿有虫吃”的道理。
但是在众多软件项目中,缺乏正确的时间进度是造成项目滞后的最主要原因,甚至它比其他所有因素加起来的影响还大。导致这种普遍性灾难的原因有很多。首先,我们对估算技术缺乏有效的研究,更加严肃地说,它反映了一种悄无声息,但并不真实的假设——一切都将运作良好。 第二,我们采用的估算技术隐含地假设人和月可以互换,错误地将进度与工作量相互混淆。 第三,由于对自己的估算缺乏信心,软件经理通常不会有耐心持续地进行估算这项工作。 第四,对进度缺少跟踪和监督。其他工程领域中,经过验证的跟踪技术和常规监督程序,在软件工程中常常被认为是无谓的举动。 第五,当意识到进度的偏移时,下意识(以及传统)的反应是增加人力,但是这往往会事倍功半。
软件工程是一个新兴的产业,它还很年轻,而我们身为软件工程师,我们是行业里的新鲜血液,所以我们和我们的工程都是年轻和乐观的,就像朝阳一样。所以系统编程的进度安排背后的第一个假设是:一切都将运作良好 ,每一项任务仅花费它所“应该”花费的时间。然而大型的编程工作,或多或少包含了很多任务,某些任务间还具有前后的次序,从而一切正常的概率变得非常小,甚至接近于无。第二个谬误的思考方式是在估计和进度安排中使用的工作量单位:人月。成本的确随开发产品的人数和时间的不同,有着很大的变化,进度却不是如此。因此我认为用人月作为衡量一项工作的规模是一个危险和带有欺骗性的神话。它暗示着人员数量和时间是可以相互替换的。但是软件开发本质上是一项系统工作沟通、交流的工作量非常大,它很快会消耗任务分解所节省下来的个人时间。从而,添加更多的人手,实际上是延长了时间进度。
我们作为新兴的力量,我们不仅要为软件工程行业注入新鲜的血液,更要结合实际,量力而为,切忌夜郎自大。