人月神话阅读笔记-01

焦油坑

编程产品是简单程序通过通用化,测试,文档,维护等产生的。(保证是一个完整的程序)
编程系统是简单程序符合规范,功能上相互协作,并能与系统在交互上不出错。(保证能与系统配合)
编程系统产品=编程系统+编程产品。编程系统产品才是大多数系统开发的目标。
编程系统产品的成本是简单程序的9倍。

人月神话

乐观主义:

系统编程的的进度安排背后的第一个错误假设是:一切都将运作良好,每一项任务仅花费它所“应该”花费的时间。一切运转正常对于单个任务而言具有可实现性,但对于大型编程工作而言,任务多,还有先后次序,一切正常的概率变得很小。

人月神话:
用人月作为衡量一项工作的规模是一个危险和带有欺骗性的神话,因为它暗示数量和时间是可以相互替换的。人数和时间的交换仅限于以下情况:某个任务可以分解给参与的人员,而且他们之间不需要相互的交流。沟通所增加的负担由两个部分组成:培训和相互的交流。培训的成本是随人数的增加而线性增加的。沟通的成本随人数的增加而快速上升。

系统测试:
 单元测试和系统测试受到进度安排中的顺序限制影响很大,因为预计的缺陷比实际的少很多,所以对测试的估计也是不准确的。

作者的经验是:1/3计划,1/6编码,1/4构件测试和早期系统测试,1/4系统测试,所有构件的完成。

空泛的估算:
为了满足顾客期望的日期而造成的不合理进度安排。

有两种解决方案:开发并推行生产率图表,缺陷率图表、估算规则等;

让项目经理坚持他们的估计

重复产生的进度灾难:

向进度落后的项目中增加人手,只会使进度更加落后。

外科手术队伍

最好的和最差的表现在生产率上平均为10:1,在运行速度和空间上具有5:1的惊人差异!简言之,$20,000/年的程序员的生产率可能是¥10,000/年程序员的10倍。

得出的结论很简单:如果一个200 人的项目中,有25 个最能干和最有开发经验的项目经理,那么开除剩下的175 名程序员,让项目经理来编程开发。所以说有经

验的程序员才是最廉价的劳动力啊。Harlan Mills 的提议提供了一个崭新的、创造性的解决方案2,3。Mills 建议大型项目的每一个部分由一个团队解决,但是该

队伍以类似外科手术的方式组建,而并非一拥而上。也就是说,同每个成员截取问题某个部分的做法相反,由一个人来进行问题的分解,其他人给予他所需要的

支持,以提高效率和生产力。有时候民主和平等也许并非是最好的选择:因为首先在人在智力上、能力上就并不平等。外科手术式的团队其实是延续了早期英雄

式的编程风格:主要的程序员决定了项目的大部分内容,而其他人则成为他的副手,帮助他完成各项细节性的工作。

贵族专制、民主政治和系统设计

现在让我们来处理具有浓厚感情色彩的问题——贵族统治和民主政治。结构师难道不是新贵?他们一些智力精英,专门来告诉可怜的实现人员如何工作?是否所有的创造性活动被那些精英单独占有,实现人员仅仅是机器中的齿轮?难道不能遵循民主的理论,从所有的员工中搜集好的创意,以得到更好的产品,而不是将技术说明工作仅限定于少数人?
为了实现概念完整性,在软件体系结构设计的时候必须实行贵族专制,让少数的架构师来决定整体的架构,普通程序员毫无发言权。但是Brooks为了安慰那些可怜的普通程序员,就告诉他们:其实实现细节也是需要一样的创造性、同样的新思路和卓越的才华。但是谁都知道,如果能够成为贵族,为何要在制造工艺上费劲心思呢?




posted @ 2019-02-19 22:06  #魂  阅读(179)  评论(0编辑  收藏  举报