人月神话读后感

时间:2024.4.27

《人月神话》读后感

在软件领域中,很少能有像《人月神话》一样具有深远影响力和畅销不衰的著 作。Brooks 博士为人们管理复杂项目提供了最具洞察力的见解,既有很多发人 深省的观点,又有大量软件工程的实践,影响着一代又一代….

《人月神话:软件项目管理之道》是由IBM System/360系统之父佛瑞德·布鲁克斯所著经典文集

全书讲解软件工程、项目管理相关课题,被誉为软件领域的圣经,该书于19xx年首次发行 ,并于19xx年重新发行纪念版 ,其中新增了对〈没有银弹〉一文的评论和回应,与4个额外的新章节。

书开始就形象有趣的把软件危机比作:焦油坑 ========== 史前史中,没有别的场景比巨兽在焦油坑中垂死挣扎的场面更令人震撼。上帝见证着恐龙、猛犸象、剑齿虎在焦油中挣扎。它们挣扎...让我感觉到,软件开发过程中所遇到困难是多么的多,开发多么艰难。

当我看完《人月神话》突然感觉到它把我从充实代码的清晰阶段升华,拓展到软件开发的高层度, 一个周密,准确,明朗的开发需求分析,可行性研究软件实现是软件开发的完美递进,他们相互辅助,相互促进,如海浪一层的推着前浪奔向远方,而《人月神话》如软件工程开发经济的精华,碧玉。

在《人月神话》面前《设计模式》、《原型设计》、《灵活软件开发》、《面对对象思维》、只不过是冰山一角。《人月神话》---软件项目管理的圣经,软件领域的《孙子兵法》。 人月神话这部分讲述人力 和时间 并不体现线性关系。指出以大量人员和较短的时间,并不能缩短软件的开发进度。一窝蜂的作业方式无助于软件生产,且会制造麻烦,产生出更差的软件。向进度落后的项目追加人力,只会使进度更加落后。因为新进的人员需要时间了解整个项目,而增加额外的沟通消耗。当有 N 个人必须在这群人之中进行沟通时 ,N 增加,其输出 M 将抵消其效益,甚至倒退(最后几天所完成的进度,远不如刚开始几天所完成的进度 )。

我的体会:软件开发的多少人参与和完成时间不成正比,过多的人参与并不一定能缩短开发时间。如战争,部队多,人多并不是关键,更多需要武器的先进,战术,兵多后方面的补给就得多。如是参与软件开发的人增加,软件的花费将提高,刚参加这需要时间了解项目,给软件管理带来了不协调。

人月神话的核心法则:概念完整性和架构师。Brooks认为,一个整洁、优雅的变成产品必须向它的每位用户提供一个条理分明的概念模型,这个模型描述了应用,实现应用的方法以及用来指明操作和各种参数的用户界面使用策略。概念的完整性是易用性中最重要的因素。而架构师,则是负责保证产品所有方面的概念完整性的。架构

师设计的是能够让用户理解产品概念的模型,这包括所有的功能的详细说明以及调用和控制的方法。

我的体会:概念完整性将软件开发连成了一条钻石项链,每个部分都不可忽视,不可取代。整体的抽象完整是软件管理的灵魂。正因为如此,可见架构师的重要性。因此另一方面 , 把工作切分给更多人做将造成额外的沟通代价——训练和相互的交流 。欲增加软件项目的人手,总共必须付出的代价可分为三方面:工作重新切分本身所造成的混乱与额外工作量、新进人员的训练、新增加的相互交流。

书其中有内容提到:外科手术团队。在接受相同的训练、同样都是两年资历的情况下,优秀专业程序员的生产力要比差劲的程序员好上十倍。短小精悍团队是最棒的——尽可能用最少的人。绝大多数大型软件系统的经验显示,使用一堆人蛮干的方式最耗成本、最慢、最没有效率,做出来的系统在概念上也最不完整。

我的体会:软件编码实现过程中,需要不是人多,而是少而精的优秀程序员,编码员。所以整体程序员的素质很重要,有必要培训提高他们的素质。

《人月神话》的第二系统效应就一个人所做过的设计而言,第二个系统是最危险的系统,一般来说,都倾向于过度设计。当他做第三或之后的系统时,之前的经验会互相印证,以确认出这类系统的一般性特色,而系统彼此之间的不同处,也会帮助他辨别出属于特殊和非通用的部份。除了做些功能上的修饰之外,第二系统效应还有另外一项特征,那就是倾向于将之前已熟悉的技术发挥到淋漓尽致,但却没有留意到,这项技术早就跟目前项目的基本系统假设有冲突而不再适用,OS/360有好多这样的例子。

对大部份OS/360的设计人员来说,它也是个第二系统,设计成员分别来自1410-7010磁盘操作系统、Stretch操作系统、Project Mercury实时系统、给7090用的IBSYS操作系统等等,几乎没有人拥有两个上述系统的发展经验,所以OS/360可称得上是一个最佳的第二系统效应示例。

我的体会:第二系统效应,不但消耗了巨大花费,而且将没有经验的开发人员拉进开发是一件很囧的事情。并不会给软件管理带来好处。

软件系统可能是人类创造中最错综复杂的事物,往往一个很小的功能,其实也需要开发人员的架构设计方面的完善,对其它模块的影响及扩展,以及代码编写工作。用户在前台可能看到的只是几个文字,实际是中开发人员日夜奋战的结果。很多时候,客户的需求修改,在他们眼里看起来是如此的简单,可他们却忽视了很多他们看不到的因素 。总之,只有大家彼此沟通,彼此理解,才会做出精品来


第二篇:人月神话读后感(1)


人月神话读后感

二十九年前(1975)﹐IBM大型电脑之父──Fred Brooks 出版一本书﹕"The Mythical Man-Month"。收集了他在19xx年代领导1000多人共同发展OS/360大型软件系统的心得和经验。该书是论文集﹐其中有一篇文章叫"The Mythical Man-Month"﹐他就以此作为书名。在1956~1965 之间﹐Brooks实际领导IBM 360 大型电脑的开发计划﹐包括硬体结构及庞大的OS/360作业系统在内﹐因之他具有IBM 大型电脑之父的尊称。由于OS/360是多达1000位程式师共同合作的大型软件开发工作﹐让他深刻了解到大型软件开发的技术和管理上所面临的种种困难和挑战。于是﹐他就将其领导开发OS/360软件系统的经验心得收集在这本书里。人们常拿Man-Month (多少人﹐做多少个月)来计算软件的工作量﹐但是Brooks发现软件的开发工作是需要人与人之间密切沟通的﹐使得设计工作不易分割﹐所以Man-Month 为单位的计算方法是有问题的(mythical)。也就得出著名的Brooks法则── 「对于进度已落后的软件开发计划而言﹐若再增加人力﹐只会让其更加落后。」(Adding manpower to a late software project makes it later)这是该书名称的涵义。

看完此书后,我发现人月神话无处不在,其实在我们做

软件工程来说,此书已经渗透进去了。本书作者为人们管理复杂项目提供了颇具洞察力的见解,既有很多发人深省的观点,也有大量的软件工程实践。 本书对我触动最大的,一是保持设计的概念完整。无论对小软件还是大软件,都必须由一个设计师主导,最多两个人讨论来共同完成软件的整体设计。作为一个软件,一个系统,必须有一个清晰明确的概念模型,大家都在这个框架下工作,所有的创新发展都必须与基本的概念相吻合。具体的实现人员可以细化概念,但只有总设计者才有否定与发展基本概念的权力。需要注意的一点是,即使是总设计师一直是同一个人,他脑海中所认为理所当然的规则或者概念,很可能由于没有明确的文档化,而没有成为所有开发者共同的概念。概念的完整性,对于很多小规模软件,由于开发人员不多,开发经理一般都能控制住所有的代码,概念完整性在组织层面就维持住了。但要注意以后的Bug修改,功能扩展的时候,也要时刻留意与最初的设计是否概念上相容。对于大规模的软件系统,则必须通过树状组织结构,层层控制,总设计师还是一到两人,每一层都有对下层的绝对把握能力。

二是“一个拿2倍工资的人,生产率可能是其他人的10倍。”不知道其他公司的程序员们如何看。我觉得,作为公司,应该给最好的人最好的待遇,或者说给比目前更高的待遇。组建一个团队,最好的就是那种精英团队。微软就是这

种思路吧,把最聪明的人集中在一起,想不成功都难。

三是进度落后与增加人力。记得当年看《C++编程思想》,Bruce说“十个妇女不能在一个月内生下小孩”(大意),于我心有戚戚焉。而本书作者Brooks得出的结论是对我是震撼性的:“向进度落后的项目中增加人手,只会使进度更加落后”。以前,增加人手基本是挽救进度落后项目的主要办法。这个办法行不通的话,难道只有“加班”一条路了?如果不想加班,不想削减功能,不想推迟发布日期,那么。。。。。唯一的方法还是只有….加人。加足够的人。而且不要逐步加入,一定要一次性加入。要小心的是,新加入的人可能对原来的组织造成冲击,或者对原来的设计有不同意见(特别是加入的人中有比较强大的设计者)。那么,就当作,新组建了一个团队吧。交流,培训新人,就设计达成一致,继续向者目标前进。

不同的社会经验,不同的思想状态,对读本书的心得也不一样。在此我说说书中许多非常好的观点。

1.外科手术队伍The Surgical Team

项目经理在项目的初期必须清楚的估计项目的人月运作模式(时间、人力在项目各阶段的分配),例如什么时候需要出什么样成果,决定了什么时候需要什么样的人加入项目,这是项目经理的责任。

2.贵族专制,民主政治Aristocracy,Democracy,System

要获得概念的完整性,设计必须由一个人或具有共识的小组来完成。

3.画蛇添足The Second-System Effect

讲述的基本都是基于IBM 360操作系统以及编译程序等方面的经验,讲述如何避免开发第二个系统的风险,作者认为开发第二个系统的设计师设计出来的系统是最危险的,因此要求他们自律。

4.贯彻执行Passing the word

印象比较深刻的是"体系结构设计人员必须为自己描述的任何特性准备一种实现方法,但他不应该支配具体的实现过程。"

5.巴比伦塔会失败Why did the Tower of Babel Fail? 讲述巴比伦塔会失败的原因是缺乏交流。

6.胸有成竹Calling the Shot

主要讲述如何计算编程时间,以及提出几个人的经验算法。 讲述的各种算法可能都不太适合与现在的高级语言,但Portman的观点仍然适合现在,即编程人员实际的编程时间只有50%,其他的时间都花在了无关的琐碎事情上。

7.削足适履Ten Pounds in a Five-Pound Sack

主要讲述程序占用的空间等,在70年代比较突出,但现在好多了。

8.提纲擎领The Documentary Hypothesis

说明文档的作用

9.未雨绸缪Plan to Throw One Away

唯一不变的是变化本身。 在大型项目中,项目经理需要有两个和三个顶级程序员作为技术轻骑兵,当工作繁忙最密集的时候,他们能急驰飞奔,解决各种问题。

10.干将莫邪Sharp Tools

主要讲述项目中管理好各种工具的重要性,项目经理首先要制定一种策略,让各种工具成为公用的工具,这样才能使开发、维护和使用这种工具的开发人员的效率更高,这种工具可能是开发人员开发出来的,也可能是使用现有的,可能是通用的,也可能是专用的或个人偏好的。比如:文档编写工具、开发工具(包括各种不同开发平台)、调试工具、测试工具、数据库工具、版本管理、项目管理工具等。

11.整体部分The Whole and the Parts

特别是这句话"BELL实验室监控系统项目的V.A.Vyssotsky提出,“关键的工作是产品定义。许许多多的失败完全源于那些产品未精确定义的地方”,细致的功能定义,详细的规格说明,规范话的功能描述说明以及这些方法的实施,大大减少了系统中必须查找的BUG数量。虽然这句话的意思只是说明精确定义产品将减少BUG的数量,但我看到了系统分析的最重要的工作——产品定义。

12.祸起萧墙Hatching a Catastrophe

这章节说明使项目进度拖后的最大原因不是重要的事件,如新技术、重组等,而是一些琐碎的小事,每件小事只耽误半天或一天时间,但这种小事多以后,将使项目的进度严重拖后。 项目对于公司就如程序对测试工程师一样,如果不了解它,它就是一个黑盒子,如果不打开这个黑盒子,你可能永远不知道盒子里面有什么。

13.另外一面The other face

本章说明程序的另一面——文档。

不了解,就无法真正拥有——歌德,作者引用的歌德的话来描述文档对客户的重要性,提出客户需要什么样的文档以及文档的格式和包含的内容,指出当时存在的大多数文档只描述了树木,形容了树叶,但没有整个森林的图案。 想想,这种情况在现在仍然没有改变。于是作者提出了两个观点:

1.流程图:流程图是被吹捧得最过分的一种程序文档。许多程序甚至不需要流程图,很少程序需要一页以上的流程图

2.自动文档化(self-documenting)的程序:提出文档与程序合为一体,能很好的解决文档与程序分开造成的文档过时的问题,并说明了在程序中加入文档的一些方法和技巧。

14.没有银弹-软件工程中的根本和次要问题(No Silver Bullet-Essence and Accident in software Engineering)

人狼是传说中的妖怪,只有银弹才能杀死他。作者认为软件项目具有人狼的特性,因为软件项目也可能变成一个怪物,一个落后进度、超出预算、存在大量缺陷的怪物。作者通过软件系统的内在特性复杂性、一致性、可变性和不可见性来分析说明了软件天生就没有银弹。 作者试图通过分析软件问题的本质和很多侯选银弹的特征来探究其中的原因。他行动的第一步是将大块的“巨无霸理论”替换成“微生物理论”。这个变化的过程告诉你,进步是逐步取得的,伴随着辛勤的劳动,对规范化过程应进行持续不懈的努力,而这个努力的过程相应的就诞生了软件工程。

15.再论《没有银弹》No Silver Bullet Refired

看完再论《没有银弹》后,虽然作者说有不少人对他的观点持反对或不同意见,但我始终觉得他的观点是对的——根本和次要问题的划分以及定义。作者认为软件开发困难的部分是概念的结构,如规格化、设计和测试等概念的结构,而不是概念的表述和实现概念,虽然实现概念可能占用了小于90%的时间,就如现今的软件开发一样,系统分析通常占用的整个项目开发时间不超过20%,而80%的时间花在编程上一样。

更多相关推荐:
《人月神话》读后感

人月神话读后感在软件领域中很少能有像人月神话一样具有深远影响力和畅销不衰的著作Brooks博士为人们管理复杂项目提供了最具洞察力的见解既有很多发人深省的观点又有大量软件工程的实践影响着一代又一代人月神话软件项目...

人月神话读后感

人月神话读后感在刚刚进入软件工程学习时老师总会时不时向我们提起一些关于软件项目开发的完成与增加人员的问题这句话听起来通俗易懂但实现起来却遇到了相当大的困难这是我在阅读完成人月神话时最大的感受我想这种问题的出现主...

读《人月神话》有感

读人月神话有感读过人月神话马上就被深深的吸引了这确实是一本很值得多次阅读的好书每次阅读可能都能从中得到一些提示因此把感触比较深的几点记下来编程会有很多的乐趣首先是一种创建事物的纯粹快乐如同小孩在玩泥巴时感到愉快...

人月神话读后感

人月神话读后感张明二十九年前19xxIBM大型电脑之父FredBrooks出版一本书quotTheMythicalManMonthquot收集了他在19xx年代领导1000多人共同发展OS360大型软件系统的心...

人月神话读后感

人月神话读后感人月神话这个书名乍听起来真像是一部科幻小说或是言情小说的名字真是很吸引别致后来经老师提醒才知道这竟是一部在软件行业中享有里程碑地位的名著一部在软件领域拥有极高声誉畅销了20多年的必读经典在这本书中...

《人月神话》读后感

学号0967020xx9姓名张小波班级软件工程专升本3班人月神话读后感在软件领域中很少能有像人月神话一样具有深远影响力和畅销不衰的著作Brooks博士为人们管理复杂项目提供了最具洞察力的见解既有很多发人深省的观...

人月神话读后感

人月神话读后感这本300多页中文新版的神书在经过了20多年的历史之后仍然畅销不衰究竟是什么让它有如此的魅力过去的一个月一点一滴的阅读之中算是初步的了解到了它的一部分吧人月神话的核心观点概念完整性和架构师Broo...

人月神话读后感

人月神话读后感刚开始读这部书就深深的震撼了我不仅仅是作者对程序的观点和思想还有就是这些观点和思想在现实中也非常实用看完这本书后我发现人月神话就在我们身边作者为人们管理复杂项目提供了很具洞察力的见解既有很多发人深...

人月神话读后感

在软件工程中人月神话是一本影响深远和经久不衰的著作在本文中提到了在软件工程遇到的软件危机以及探索解决软件危机的银弹是否存在本书对我产生了极大的震撼让我惊叹在在实际的工程开发中存在的如此众多和严重的问题在我大学的...

希腊神话读后感

希腊神话读后感读希腊神话给我印象第一深刻的就是各种乱伦现象宙斯娶了自己的姐姐赫拉这种事情在现在这个社会是要遭到鄙视的但是在3000年前的社会伦理道德还不成熟的情况下这种现象比较普遍宙斯的无数私生让我不禁想起动物...

《希腊神话》读后感

希腊神话故事读后感当我读了希腊神话故事这本书之后不禁佩服希腊人的想象力每一个神每一个英雄每一个人都有各自的性格特点希腊的神不像中国的神那样中国的神是凭空唯心想象出来的人们把他们想象得非常完美伟大而神秘他们有常人...

古希腊神话读后感

古希腊神话读后感20xx5124颜韶华我是很喜欢读神话故事的以莫大的热情去读了古希腊神话没曾想众多的英雄诸神的事迹美丽的故事会深深的震撼我让我深深的着迷例如盗火的普罗米修斯大力神赫拉克勒斯太阳神之子法厄同等等在...

人月神话读后感(12篇)