再度走进《人月神话》的故事

项目滞后的原因

所有的编程人员都是乐观主义者,他们总是假设:一切将运作良好,每一项任务仅花费它所“应该”花费的时间。可是事实上编程人员往往错误地估计了项目的难度以及可能出现的问题,因此在制定计划时经常会缺乏合理的进度安排,那究竟是哪些原因导致了编程人员的这种盲目的自信呢?作者给出了自己的观点:

​ 1.对估算技术缺乏应有的研究;

​ 2.采用的估算技术隐含的假设人和月可以互换,错误地将进度与工作量混淆;

​ 3.对进度缺少跟踪和监督;

​ 4.当意识到进度的偏移时,下意识的反应是增加人力,可这只会让事情更糟。

其实,上个学期我们在做风力摆的项目时,我们对所用到的技术的研究没有做到位,这就导致了我们错误地估计了工作进度,以至于在一些方面出现了问题,于是我们就在相关的方面增加了人手,结果没有任何的改观。

任务的进度安排

人们常常误认为完成一个项目,大部分的时间是耗费在编写软件上,事实上真正留给编程的时间是最少的,真正耗费时间的是系统测试,书中也总结了比较合理的软件任务进度安排:

​ 1/3计划

​ 1/6编码

​ 1/4构建测试和早期系统测试

​ 1/4系统测试,所有的构件已完成

然而事实上大多数程序开发者的进度安排是不合理的,他们分给计划的时间比平常多,然而用于测试的时间真的是少的可怜,然而不为系统测试安排足够的时间就是一场灾难,会带来特别不好的用户体验。

外科手术队伍

现实中会存在这样的矛盾:一只由一流人才组成的小型、精干的队伍有着极高的效率,但很难完成一个大型项目;一支有几百人组成的大型队伍(包含平庸的程序员),虽然能够完成一个大型项目,但是效率比较低,那么究竟怎样组建团队才能较好的解决这个问题呢?

Harlan Mills给出了一个崭新的、创造性的解决方案:大型项目的每一个部分由一个团队解决,但是该队伍以类似外科手术的方式组建,这个队伍一般有10名成员:1位首席程序员,1位副手,1位管理员,1位编辑,1位程序职员,1位工具维护人员,1位测试人员,1位语言专家,两位文秘。这种团队中首席程序员起着核心的作用,他亲自定义功能和性能技术说明书,设计程序,编制源代码,测试以及书写技术文档。其余的人员都是为外科医生(首席程序员)提供需要的支持。在这样一种外科手术团队中,外科医生都了解所有的设计和全部的代码;如果存在观点不统一的情况,外科医生可以单方面解决,这种分上下级的关系使外科手术队伍可以达到客观的一致性。

在我看来,这样的一种团队组织的效率应该比传统的任务分配方式高,因为节省了成员之间的交流时间,同时也减少了成员因不统一意见而相互争论的时间。

原文地址:https://www.cnblogs.com/rjgcqth/p/8620735.html