速读《人月神话》

人月神话

[美]弗雷德里克·布鲁克斯/著(Frederick Phillips Brooks)

汪颖/译

人月这个词组是一个考察工作量的度量单位,一个人月也就是一个人在一个月能够完成的工作量。在软件工程里,经常用多少个人月来估算项目的工作量。

作者用了一个孕妇生孩子的案例说明了人月这个单位混淆了工作量和进度这两个概念。一个孕妇生一个孩子需要10个月,那么为了加快生孩子的过程,我们是不是可以让10个孕妇在一个月里就把孩子生出来呢?显然不行。

同样,很多软件项目管理人员总是希望通过加入更多人手来加快软件工程的完成进度。然而实际情况并非如此,因为软件工程的各项工作之间往往有一个前后沉积的关系,得完成一项,才能进行另一项,加进来的人手并不能马上就开展后面的工作,所以想要通过增加人手来缩短工作时间其实只是一个神话。人月神话所反映出的是软件开发在项目管理中遇到的难题。管理人员因为盲目乐观,对项目开发中的困难没有充分认识,在计算工作的工作量和交互时间上,采用了错误的计算方法,忽略了细节对整体的巨大影响,这就很可能导致项目延期。

比如说很多工作路径上的事情是无法分解的,往往只能一个人完成,即使有些工作可以拆解,但是一个人做事情和很多人做事情的模式是不一样的。一个人工作时需要的沟通很少,想怎么做就怎么做。但是人一多,就需要持续的沟通交流,需要了解彼此的工作习惯和工作内容,然后这些人才能团结协作,完成同一个目标。这就是需要花费很多时间去开会和交流。

归根结底,软件行业是一个知识密集型的行业,团队中人员数量很多,角色也很多。这些角色使用的语言和思维方式都是不一样的,要让这样一群人形成有战斗力的团队,流畅的沟通是必须的。而要达到流畅的沟通,一段时间的磨合期是必须的。

作者在书中通过多篇文章为我们提供了相应的方法和举措。

首先,作者建议以小团队的方式进行合作,以类似外科手术的团队组织结构来开展工作。调查表明,最好成员和最差成员工作的效率是10比1,作者认为应该让优秀的人作为整个团队的核心来开展工作,团队中其他人各司其职作为辅助来完成整体工程。这就是外科手术团队的奥秘。

作者提出了项目管理建议是防微杜渐,提出了很多具体可行的建议。

软件工程是一个非常复杂的项目,这不是一个简单的相加的项目,因此,项目管理人员一定要认识到防微杜渐的重要性,对于项目中的延迟和意外要有充分的警惕性。千里之堤,溃于蚁穴。很多项目的失败,其实都是源于一个个很微小的延迟和意外,这些微小的延迟和意外本来确实没有很严重的后果,但是藏在这些工作人员背后的侥幸心理才是最致命的。

为此,作者提出了很多建议。

项目推进过程中,要设立一些关键的节点。作者把这称为里程碑事件,一旦有了目标,项目团队成员就有了明确的目标可以前赴后继,想方设法达成目标了。里程碑事件的关键在于保证百分之百的完成度。

还有一部分问题是无法彻底解决的。

人月神话中的一些问题,根源在于软件工程本身的特性,是无法彻底解决的。这是书中最有名的故事,没有银弹。

银弹就是银做的子弹。在西方神话中,为了杀死狼人,必须使用白银做的子弹,这里的银弹是指一种彻底解决问题的招数或技能。作者说在软件工程管理上没有银弹,也就是说在软件工程的项目管理中总会遇到无法解决的困难,任何时候都不可能是从头到尾一帆风顺的。

作者从两个方面解释了原因,其一,计算机技术的发展太快了,计算机硬件与软件迅速发展,工作人员需要不断地学习新的知识技能。其二,软件研发本身的内在特性也制约了软件工程的进展,作者用四个词概括了这种特性,复杂性,一致性,可变性,不可见性。

尽管人月神话无法达到,但可以通过一系列的方法无限趋近这一神话,帮助软件开发者进行有效的项目管理。

软件工程可能是人类创造出的最错综复杂的一项工作,甚至这种复杂度还在不断增加,人们能做的只有不断学习更新的技术,探索更好的管理方法,

原文地址:https://www.cnblogs.com/hermitlee/p/13570212.html