程序员必读1——《人月神话》

程序员必读1——《人月神话》_第1张图片

        世上有很多很多的神话——他们荒诞不经却被很多人深信不疑。比如:有人说人是猴子变的。在软件开发行业,也有很多神话,比如:人月神话。

       所谓人月,是软件开发中工作量的估算单位。这个版本的开发工作量5人月。所谓的神话是

       5人月=1个人做5个月=5个人做一个月               人月神话

是否认同这个等式涉及到对软件开发本质的认识:软件开发是等同于传统的简单的工业生产过程还是特殊充满高复杂度的专业技能。

认同人月神话的本质是将软件开发过程等同于传统的,简单的工业生产。它包含如下假设:

(1)任何一个经过基本培训的人都可以胜任开发工作。

(2)不同人之间效率差别不大。

(3)工作可以经过简单的分解和组合,得到的结果没有变化。

反之,认为软件开发中人月不能简单的划分,对应如下假定:

(1)软件开发过程是一个高度复杂性的脑力活动。

(2)不同的人之间效率差别很大。

(3)团队成熟度对开发效率影响很大,新增加的人需要经过较长的磨合,临时新增人员可能反而导致效率降低。

软件开发的复杂度认识就是软件开发本质的认识。


       在次基础上引出另外一个神话:银弹。银弹是对付可拍怪物人狼的有效武器,可以一发致命。犹如那梦想中的万能神药,不管什么病,药到病除。

但是,基于软件开发的复杂性,软件开发这个怪物没有银弹可以对付。不存在某一个方法,工具就可以解决软件开发的复杂性。并且经过几十年的发展,依然没有发现银弹。

我们现在在推进敏捷研发流程,必须清楚的认识到:敏捷并不是银弹。期望通过敏捷的某一些实践,例如Scrum,是不可能全面解决软件开发的问题。需要深入敏捷从价值观到实践的各个部分,并且在每个人,每天的工作中执行,才可能达到好的效果。

该书中提出很多观点都非常具有洞察力,例如:软件开发中变化是永恒,唯一的不变是变化。我们敏捷的基本价值就是构建在这一个观点上的。

本书的核心观点还包括:

1: 什么是有效的组织来解决团队的沟通问题。

2: 工具对项目及其重要

3: 原型开发和不断尝试

4: 产品的墒增原理。

等等。

总结: 本书在1970几年对软件的开发过程进行了分析和综述,其中核心观点揭示了软件开发复杂度的本质,并给出了建议的处理建议。同时告诫我们:复杂性是软件开发的本质特征,所以,不要寄希望于银弹。而应该系统性的结合对人的尊重,开放高效的组织,持续进步的工具等众多因素,在付出艰苦卓绝的努力以后,才可能取得成功。

你可能感兴趣的:(程序员必读1——《人月神话》)