人月神话--读书笔记

2018-03-08

《人月神话》读书笔记--关于人月的讨论

作为一本计算机编程项目管理类的书刊,此书书名就毫不留情地指出“用人月作为衡量一项工作的规模是一个危险

和带有欺骗性的神话”。这里向读者传达了这个重要的概念,在估计和进度安排中使用的工作量单位:人月。但实

际上,人数和时间的互换是近乎不可能的,因为编程项目的任务不能分解给互相毫无交流的参与人员们(关系如

下图所示)。

在本书开头部分,作者讨论了编程从业者的职业乐趣和苦恼,并且以精妙地将编程比喻为焦油坑,编程团队比喻

为外科手术队伍,围绕着软件开发中的各大障碍和误区,展开了对编程团队管理方法的讨论。总结为以下几点:

  1. 系统测试的进度安排。系统测试是最难完成暗示完成的部分,而这种拖延的二次成本却是巨大的。
  2. 空泛的估算。任务的计划进度,可能受限于顾客要求的紧迫程度,但紧迫程度无法控制实际的完成情况。
  3. 重复产生的进度灾难。通过增派人手来完成任务的方式往往事半功倍。

然后,作者以结构师的角度进行分析,阐述正确的做法来保持产品系统的概念一致性和编程人员的正确实践,这也

是此书关于概念一致性的核心理论。主要在于:

  1. 创造性活动上的专制性统治但也要求结构师与建筑人员的仔细交流。
  2. 文档化的规格说明以及一系列保证编程实现人员理解决策的手段

接下来,作者以巴比伦塔建造失败、各个先例的数据的案例来具体分析了大型编程项目中的交流与组织架构,强调

了编程中程序空间与计算机产品文档的重要性。

  1. 巴比伦塔项目的失败原因主要在于缺乏交流以及交流的结果即组织。团队交流、项目手册及组织架构重要。
  2. 整项工作的的估算绝不能仅依靠对编码部分的估计,尤其是小型独立程序的数据本就不适合编程系统项目。
  3. 编程产品的实验性工厂为提高产量和缺乏保护环境下运作提供宝贵经验。
  4. 开发过程中专业工具的使用,以及通用工具的开发分配资源对生产率的影响深刻。

最后,本书介绍了一些对于软件整体部分bug的减少有效的一些理论措施,如自顶向下设计、结构性编程、高级别表

达方式等,好的结构设计可以避免很多小错误。

这本书给我留下的最深刻、最重要的观点便是它对人员与月数的关系的描述。它强调少而精的团队,是因为在关系错

综复杂的任务之中,人员交流时间的变多、交流效率的变低会使开发进度延长。我在实验室常常有相同的体会,处于

项目边缘的成员们往往很难入手,而在不自觉的等待与观望或费时费力的交流之中让时间悄悄溜走。

正是由于这个矛盾的出现,人员与时间的调控,尤其是在大型的复杂编程项目之中,显得尤为重要。如何把一系列程

序设计和构建成系统,如何把程序或者系统设计成健壮的、经过测试的、文档化的、可支持的产品,如何维持对大量

的复杂性的控制,将成为软件工程这个“焦油坑”中持续存在的问题,而IT领域的飞速发展更是督促着我们不断地学习新

工具的最佳使用。

另一个令人惊叹的观点就在于,结构师交互准则与机制中提到的开发第二个系统的画蛇添足——倾向于过分设计。这里

提到,当他们在设计第三到第四个系统时,先前的经验就会互相印证,并且为了避免第二个系统的画蛇添足,他们应坚

持至少拥有两个以上系统开发经验的结构师的决策。这提醒了我们,现代软件工程中经验十分重要,一类系统中通用特

性的判断,以及系统之间的差异会帮助我们识别出经验中不够用的部分,并且可以成为一种积累。

总而言之,为了避免可怕的进度偏离,一个优秀的整体架构以及里程碑式的报告举足轻重,等到项目进行之后临时的增

援只会大大地扰乱我们的“人月”计划。

原文地址:https://www.cnblogs.com/chenzhikai/p/8529867.html

时间: 2024-10-09 12:44:39

人月神话--读书笔记的相关文章

人月神话读书笔记

作者介绍:20世纪最后一年也就是1999年的图灵奖,授予了年已69岁的资深计算机科学家布鲁克斯(Frederick Phillips Brooks, Jr.).布鲁克斯这个名字在中国知之者不多,但在美国却是大名鼎鼎.因为他在60年代初只有29岁时就主持与领导了被称为人类从原子能时代进入信息时代标志的IBM/360系列计算机的开发工作,取得辉煌成功,从而名噪一时.以后他作为硬件和软件的双重专家和出色的教育家始终活跃在计算机舞台上,在计算机技术的诸多领域中都做出了巨大的贡献.从某种意义上说,对于布鲁

人月神话 读书笔记01

在刚刚进入软件工程学习时,老师总会时不时向我们提起一些关于“软件项目开发的完成与增加人员的问题”这句话听起来通俗易懂,但实现起来却遇到了相当大的困难,这是我在阅读完成<人月神话>时最大的感受.本书作者布鲁克斯得出的结论是显而易见的:“向进度落后的项目中增加人手,只会使进度更加落后”.如果不想加班,不想削减功能,不想推迟发布日期,那么唯一的方法还是只有加人.加足够的人.而且不要逐步加入,一定要一次性加入.要小心的是,新加入的人可能对原来的组织造成冲击,或者对原来的设计有不同见,特别是我想如果如果

人月神话读书笔记(2)

并不是所有的努力都是成功的.(XIV) 简而言之,我相信由于人员的分工,大型编程项目碰到的管理问题和小型项目碰到的管理问题区别很大:我相信关键需要的是维持产品自身的概念完整性. 如果我们想解决问题,就必须试图先去了解问题.(4) 相同功能的编程产品的成本,至少是经过测试程序的三倍.(6) 相同功能的编程系统构件的成本至少是独立程序的3倍.如果系统有大量的组成单元,成本还会更高.(6) 它(编程系统产品)的成本高达9倍.然而,只有它才是真正有用的产品,是大多数系统开发的目标.(6) 首先,这种快乐

人月神话阅读笔记—第三章

人月神话阅读笔记-第三章 一个由一流人才组成的小型的精干的队伍比由一群平庸的程序员组成的大型团队更有效率,但是这里面有一个重要的问题:如何在有意义的进度安排内创建大型的系统. 优秀的程序员和较差的程序员之间生产效率的差距是巨大的,当一个10人的精干团队进行开发,和一个100个人的平庸程序员进行开发,前者的效率更高.但是对于效率和概念的完成性来说,最好由少数干练人员开发,而大型系统需要大量人员进行开发,但是这两者是有矛盾的,需要进行平衡. 在开发过程中,可以使用一种崭新的开发方案,类似于外科医生做

人月神话阅读笔记—第四章

人月神话阅读笔记-第四章 ------2016.6.14 概念的完整性是很重要的,为了反应一系列连贯的设计思路,可以省略一些不规则的特性和改进,不提倡独立和无法整合的系统,最需要的是在整体概念上的完整性要求. 获得概念的完整性时,会出现一种情况,编程系统使计算机更加好用,但是功能比较多的时候,软件外部描述就会比系统本身大很多:但是功能太少,不能满足需求,但是都需要满足概念上的完整性. 在进行概念的完整性时,产品设计需要由一个人或者少数几个人来实现,但是对于大型的系统,需要将设计方法.体系结构的工

人月神话阅读笔记03

阅读了<人月神话>第10章 提纲掣领,里面提到的关于软件相关的开发文档的问题,使我受益颇深.以前每每写程序时,老师总会要求我们写一些需求分析,软件流程图,还有各种各样的日志文档,心里总是觉得烦不胜烦.明明程序已经写好了,文档写不写又有什么关系呢?这不是在浪费时间嘛.但是后来在写四则运算的编程题时,我就遇到了一些麻烦.刚开始我自己写又进行“翻新”的时候,我总是忘了自己之前是怎么想的,思路是怎么样的,很多时候不得不花上许多时间去重新阅读上次的代码,或者直接推翻重写.后来进行二人开发时,发现没有文档

人月神话阅读笔记07

第1章 焦油坑      焦油坑的意思说明了即使你足够强大,也无法摆脱束搏而沉到坑底.IT项目也是这样,不论是开发大型软件系统还是小型项目,都会遇到诸多复杂的问题和影响因素,项目本身就是一个足够复杂的动态系统,没有最优,只有满意.项目四要素,人员,组织环境,干系人,外部依赖和约束,风险和假设,团队,人等诸多问题都是你必须要考虑的问题,任何一个要素出现大的差错都可能导致项目失败,只有所有要素能够平衡好,团队能够协调一致才能够保证项目成功 第2章 人月神话      进度问题是IT项目管理最为关注的

人月神话阅读笔记之一

人月神话讲的主要是软件工程方面的,如何配置人力进行开发 .虽然对于软件编程我们对其了解并不多,但是对于在软件功能的实现,程序设计人员面临的客观性的困难至少我可以站在略懂的角度上去理解他们,对于一个或多个项目来说,公司大多都会搞人海战术,进度没有提前,还整天加班,最后用户不满意,开发人员整天郁闷,结果是用户对公司失去了信任,成了一槌子买卖,开发人员旧人一一辞职,新人天天引进,做法没有改变,情况没有改观,公司没有发展,这就是问题.人月之所以不能成为神话,正是因为增加人手的同时也增加了人与人之间的交流

人月神话阅读笔记—序言及第一、二章

初读人月神话这本书的前言和序言,觉得这本书在关于软件体系结构思想层次方面应该是很高的,而且它流传甚广,并且经过了40余年的沉淀,仍然经久不衰,可见此书的影响是相当深远的. 从目录来看,此书说的不是如何进行程序代码的编写,更多的是关于软件工程中的管理问题,从很多的具体事例,和软件工程历史上发生的一些著名事件来引出章节的内容,以及通过这些具体事件,反映了一些什么样的问题和解决的办法. 第一章的标题名为焦油坑,以开发过程中遇到的很多问题来比喻.介绍了编程系统产品所耗费的时间其实是很多的,接着介绍了作为