已经有好几周没有写书评了,今天突然想起来要写一写。由于上次的书评
是
关于C++的,今天打算写写软件工程方面的。对于软件工程而言,我个人认为到目前为止,尚未有哪本书的影响力和深刻程度能够超越《人月神话》(全名是:The Mythical Man-Month -- Essay on Software
Engineering)。于是考虑来聊一下鼎鼎大名的《人月神话》。如果你已经熟读此书,并且自认为深刻掌握其精华,本帖子你就不必再看了。<!-- program-think-->
★作者及写书的背景
根据“如何选择IT书籍
”里面提到的经验,作者是书籍质量的一个主要保证。所以我先来八卦一下《人月神话》的作者:Frederick Phillips Brooks
(以下简称Brooks)。这位老兄最牛X的成就是在60年代
(他当时才29
岁)主持并完成了一个同样很牛X的IBM 360
系统的开发。IBM 360
后来被誉为是人类从原子能时代进入信息时代的标志。该项目不光具有历史意义,而且在软件工程方面非常有代表性(因为其规模和复杂度)。为了给大伙儿加深印象,列举该项目的几个数据如下:
--------------------------------
软件人员总数 2000 四十年后,微软的Windows 2003团队也就5000人
软件总费用 5亿$ 发明第一个原子弹的曼哈顿工程也不过才花20亿$
开发周期 4年
--------------------------------
注意,上述仅仅是软件方面的统计。
最终,IBM 360
项目并没有完成全部的预定目标,但是对于这个史无前例的项目,居然没有中途夭折,本身已经算是奇迹了。后来,Brooks在1975
年(距今已30多年)把他所写的一些软件工程方面的随笔(很多都与360项目有关)整理出版,也就是我们今天点评的《人月神话》。
★本书的结构
前面已经说了,Brooks当年是把他写过的一些随笔整理出书的,所以书中的各个章节相对来说比较独立。因此你不一定按照排版的顺序来阅读。比如俺每次重读这本书都只是挑选其中一两个章节来看。
★本书的看点
虽然本书的每个章节都称得上是经典,但限于篇幅,只把俺印象最深刻的几章介绍一下。
◇第2章,关于“人月
”的误导
这是本书最有名气的章节。在本章,Brooks明确反对使用“人月”这个极具欺骗性的度量单位。因为人月
这个称谓暗示着“人”和“月”是可以互换的。
即使到今天为止,还是有大量的编程人员、测试人员、项目经理和软件公司老板在错误地使用人月
来衡量软件开发的工作量,实际上,当某人宣称某工作量是6个人月时,这句话本身是没有太大意义的。一般来说,1个人干6个月的工作,6个人在1个月内几乎很难完成。所以俺在沟通工作量时,都会明确地讲清楚,需要几个人干几个月。
另外,Brooks根据人月的不可互换推导出一个怪论:向进度落后的项目增加人手会导致项目更加落后
。这个怪论是如此出名,以至于后来被称为“Brooks法则
”。这个法则蛮有用滴,每当有上级领导企图通过增加人手来赶进度时(往往在项目后期),俺都会搬出这个法则来拒绝这种企图。
◇第3章,关于团队的组成
为了解决前几章中提到的大型团队的种种困难,Brooks提出了一种新的解决方案:把大型团队拆分为若干个类似于外科手术式的小团队。
每个小团队有一名主程序员(类似于主刀医生),所有的问题分解和功能定义都通过主程序员来完成,以此来降低沟通成本。并且,每个主程序员配备若干个平庸的人帮他/她打下手,也很符合现实情况(还记得“二八原理系列
”中提到的优秀人员和平庸人员的比例吗?)。具体的角色职责我就不细说了,书上都有。
◇第16、17章,关于“没有银弹
”的大实话
实际上第16章“没有银弹”的内容来自于作者在1986年作的报告,后来才加入书中。第17章“再论没有银弹”是20周年版加入的。
据作者在本书的“20周年纪念版”中宣称,“没有银弹”是引发最多争议的章节。不过我个人认为:虽然引发最多争议,但是这两章却是全书最重要、最深刻且最有价值的章节。即使你从事的工作和软件工程无关,你也应该认真阅读它。
Brooks在第16章分析了软件开发的根本性困难
(复杂性、非一致性、易变性和不可见性)和次要性困难
。分析完根本性困难和次要性困难之后,作者断言:未来十年内,不可能
有某种技术突破(银弹)能够彻底解决根本性困难
,从而导致软件开发效率有数量级
的提高。
现在,时间已经过去了远远不止十年。在“没有银弹”发表之后,软件界冒出了数不清的新玩意儿(比如面向对象、组件技术、设计模式、CMM、UML、敏捷开发、RAD、等等),很多新玩意儿的创造者都号称他们发明了银弹。但实际上没有哪个新技术能够经受住时间的考验并真正获得银弹的称号。
★俺的建议
啰嗦了这么多,最后来说说俺的几点建议:
如果你从来没有看过本书,那赶紧去找一本来,并全部读一遍(不一定要按顺序看)。
如果你以前看的是老版本,那赶紧去找来新版(20周年纪念版),并重点看看增补的4个章节。
如果你已经把新版全部看完,今后可以考虑定期(例如每隔一两年)再拿出来翻一翻。
另外,此书在网上有20周年纪念版的中文版和英文版可供下载,喜欢看电子书的同学Google一下即可寻获。
版权声明
本博客所有的原创文章,作者皆保留版权。转载必须包含本声明,保持本文完整,并以超链接形式注明作者编程随想
和本文原始地址:
http://program-think.blogspot.com/2009/03/book-review-mythical-man-month.html
分享到:
相关推荐
人月神话一本风行几十年仍然被称为经典的软件工程经典
这本书特别针对没有接受过计算机科学或软件工程专业学习的软件开发人员,这类人员除了熟悉所用语言语法和语义之外,很少接受其他专业培训,对软件工程中的一些概念理解欠缺。软件设计方面考虑较少。如果要成为一个...
教师演讲稿——倾心教育热土共铸不朽师魂.docx
代码不朽 - 编写可维护软件的10大要则 带目录, 扫描, 非文字版
中国银行员工百年庆演讲稿:风雨同舟 百年不朽.doc
202__年教师演讲稿——倾心教育热土共铸不朽师魂.docx
不朽的艺术:走进大师与经典课后答案.pdf
苦难磨练意志-不朽立于万世——读《名人传》有感(1000字).docx.docx
本书使用 java 语言(本书中的唯 一一种语言 来阐述和解释我们的原则。但是我们并 不是要教大家如何使用 Javaÿ 我们会假设读者至少可以阅读 Java 代码和 java 标准库的 API, 并且尽可能地保证示例代码足够简单,只...
贝多芬致不朽的爱人的情书.doc
研究生思想汇报:回顾先烈不朽事迹
视力能够回答问题的,性感和高效的界面(例如搜索引擎) 比Google更好更快。 借助, 和产品特点搜索缓存浏览的内容网络连接转让和抵押EUL ETH,ATOM和EUL余额监控脑部监测还有更多!建立$ yarn install$ yarn start...
Orientacao_Objetos_E_Estrutura_De_Dados_2021:东方人的不朽行为
【不朽的失眠阅读答案】不朽的失眠赏析.docx
不朽的艺术:走进大师与经典 期末考试答案;
回顾大师不朽的数学人生,了解成就:吴类(拓扑学示性类及示嵌类)和吴公式,古代数学的算法和可计算性分析,开创崭新的**数学机械化**领域,提出 **用计算机证明几何定理的“吴方法”**,成为**自动推理领域**的先驱...
狼派不朽驱动是狼派推出的不朽系列的鼠标驱动软件,为使用这款产品的用户提供更好的鼠标连接、属性设置和查询等功能,需要的朋友欢迎下载!鼠标介绍颜色:橙色/灰色/黑色/白色重量:104克适合手型尺码:S码和M码适合...
人类的奇迹 不朽的丰碑精选.doc
软件工程领域的不朽经典。 程序员,项目管理者必看的一本好书,强力推荐!