《人月神话》(P2)错误的进度估计

简介: 在众多的项目中,缺乏合理的进度安排是造成项目延期最主要的原因,这比其他所有因素加起来影响还要大。这个灾难是怎么发生的呢?所有编程人员都是乐观主义者所有系统的进度安排背后第一个错误的假设是:一切都将运作良好,每项任务仅需要花费它“应该”花费的时间。

在众多的项目中,缺乏合理的进度安排是造成项目延期最主要的原因,这比其他所有因素加起来影响还要大。这个灾难是怎么发生的呢?

所有编程人员都是乐观主义者

所有系统的进度安排背后第一个错误的假设是:一切都将运作良好,每项任务仅需要花费它“应该”花费的时间。对于创造者,只有在实现的过程中,才能发现我们构思的不完整和不一致性。

编程人员通过非常纯粹的思维活动构思程序,所以很容易自信的认为实现过程中不会遇到困难。然而我们的思维是有缺陷的,项目越大,能够按照计划顺利进行的概率就越小。

人月

在估计和进度安排的过程中使用“人月”作为工作量单位是十分荒谬的,是一个带有危险和欺诈性的神话,他暗示着人员数量和时间可以相互替换。然而人数和时间的互换仅仅适用于,某个任务可以分解给参与人员,并且他们之间不需要相互交流的情况。

当不能分解时,人手的添加对进度没有任何帮助,大多数编程工作都具有这种特征。就像你无论找几个妈妈,孕育一个生命总是需要10个月的时间。
对于可以分解的情况,增加人手可以加快进度,但是会提高成本,2个人的效率可能仅等于1.5个人。原因在于沟通、培训、交流等事物增加了工作量,而且所增加的工作量可能会完全抵消任务分解所产生的作用。
软件开发作为一项系统工作,沟通、交流的工作量非常大,它会快速消耗任务分解所节约下来的时间。

系统测试

系统测试进度的安排往往是编程中最不合理的部分,都过于短了。很少项目允许为为测试分配一半的时间,然而大多数项目的测试实际上是花费了进度中一半的时间。

不安排足够的测试时间将会是一场灾难,由此造成的项目延期成本高昂,在早期规划时,保留充分的测试时间非常重要。

作者建议进度安排:

1/3 计划
1/6 编码
1/4 构建测试和早期系统测试
1/4 系统测试,所有的构建已完成

以上内容就是原版《人月神话》第二章——人月神话,前三节所讲述的内容。

在本章中,作者试图告诉我们,项目之所以延期,很大部分原因是因为项目在最初的计划阶段,就错误的估计了项目进度

管理人员很容易会认为项目功能完成就意味着开发完成了,没有为测试阶段安排较长时间的意识,往往测试的时间只能占到项目周期的1/8甚至更少。这明显是犯了乐观主义的错误,项目管理人员甚至比开发人员更加乐观。

如果不是站在专业的角度上,似乎很难理解测试阶段所花的时间,更难理解的是为什么增加人手不能让项目进度加快。

目录
相关文章
|
11月前
|
编解码 算法 数据挖掘
MIT:用无监督为世界上每个像素都打上标签!人类:再也不用为1小时视频花800个小时了
MIT:用无监督为世界上每个像素都打上标签!人类:再也不用为1小时视频花800个小时了
|
程序员
程序员和领导对项目 delay 的理解是不是有偏差?
吴宇森导演大家一点不陌生,听了他的故事后,我对 delay 的理解更深刻了。 吴宇森,中国香港导演、编剧、监制、演员。1986年执导的枪战片《英雄本色》奠定其暴力美学的电影风格,并获得第6届香港电影金
101 0
|
存储 Java 程序员
BeanDifinition(加几行代码,可以产出让队友几天也找不出的Bug)
前言 文本已收录至我的GitHub仓库,欢迎Star:github.com/bin39232820… 种一棵树最好的时间是十年前,其次是现在
97 0
|
机器学习/深度学习 调度 项目管理
『软件工程8』软件项目进度安排与跟踪,一招学会计算关键路径
接下来的这篇文章中,将讲解软件项目的进度安排与跟踪!
『软件工程8』软件项目进度安排与跟踪,一招学会计算关键路径
|
机器学习/深度学习 人工智能 安全
NeurIPS 2019民主大实验:提升审稿质量、避免“搭便车”,这回都听你们的!
NeurIPS 2019官方在Medium上更新博客,利用官方统计的立体化数据做了一系列实验,将社区和网友关于评审流程和评议意见、审稿人分配等建议悉数采纳,这回都按你们的意见办!但分析显示,产生的结果并没有想象中的那么美丽。
119 0
NeurIPS 2019民主大实验:提升审稿质量、避免“搭便车”,这回都听你们的!
|
存储 算法 NoSQL
重现死亡现场!对外部数据3D建模,这个尸检算法把死亡时间预测误差缩小到38分钟
重现死亡现场!对外部数据3D建模,这个尸检算法把死亡时间预测误差缩小到38分钟
320 0
|
测试技术 编译器
《人月神话》(P9)时间估算
在本书的第二章节——人月神话中,作者有提到关于编程时间的问题,大体上是这么说的:项目之所以延期,排在第一位的原因是因为缺乏合理的进度安排,而且列举了会导致进度安排不合理的原因,其中大部分都是人为因素或者观念以及概念上的问题,例如估算盲目自信、遭受到外部压力、不重视测试环节或者对编程工作量没有清晰的认识等等。
1287 0