读《人月神话》所感所思

  近日,读了老师推荐的《人月神话》,深感项目开发的艰辛。《人月神话》这本书最开始的版本是1975年的,四十年过去,当下看来书中有些观点依旧适用,而有些观念已经过时。以下列举看过这本书之后两个印象十分深刻的观点:

  •    “人月是危险和带有欺骗性的神话,因为它暗示人员数量和时间是可以相互替换的。”

  诚然,这个观点至今还是毋庸置疑的。

  人月之所以是危险和带有欺骗性的,原因是人们混淆了工作量和项目进展。根据Brook 法则,向进度落后的项目中增加人手,只会使进度更加落后。向软件项目中增派人手从三个方面增加了项目必要的总体工作量: 任务重新分配本身和所造成的工作中断;培训新人员;额外的相互沟通。

  “人月”问题似乎只能在项目开始时进行有效预防,而在项目开发过程中进展一旦落后,再高效的的解决方案也还是会使预期效果打折扣或者预期耗费时间增加。预防“人月”问题,关键在于建立细致的项目开发日程文档,落实好项目进展日志。一天一天的进度落后比起重大灾难, 更难以识别、 更不容易防范和更加难以弥补。一旦文档具体到开发人员们无法自欺欺人时,开发人员们才不会明日复明日,而是提高效率完成所规定的工作。

  从一开始便杜绝项目进展落后问题的出现,需要的不仅仅是详尽的日程规定,更加需要开发人员们高度的热情和积极向上的乐观精神。这就要求开发团队有合理而高效的激励机制。激励机制的建立主要从两个方面考虑:物质层面和精神层面。  

  物质层面:

  •        薪酬奖金:对于工作突出的个人,可以适当提高薪酬,发放奖金或者奖品。

                

  精神层面:

  •         目标激励:确定适当的目标,诱发人的动机和行为,达到调动人的积极性的目的。
  •         尊重激励:管理者不重视员工感受,不尊重员工,就会大大打击员工的积极性。
  •         荣誉和提升激励:对于一些工作表现比较突出、具有代表性的先进个人,给予必要的荣誉奖励。
  •         淘汰激励:可采用处罚方式,即利用带有强制性、威胁性的控制技术,来创造一种令人不快或带有压力的条件,以否定某些不符合要求的行为。

  另外,团队成员之间应该以尽可能多的方式进行相互之间的交流:非正式、常规项目会议,会上进行简要的技术陈述、共享的正式项目工作手册等等。如此,才可以确保开发工作能按时按需完成,不会半途而废。

  •   瀑布模型的错误的!

  作者在《人月神话》出版后的20年,指出自己在75年的书中,瀑布模型是错误的。

瀑布模型(图片来源于百度)

  它的基本谬误是它假设项目只经历 一次 过程,所有错误发生在编码实现阶段,因此它们的修复可以很顺畅地穿插在单元和系统测试中;并且假设整个系统一次性地被构建,在所有的设计、大部分编码、部分单元测试完成之后,才为闭环的系统测试合并各个部分。

  在需求不断变化的开发过程中,瀑布模型的思想显然不适用。与此同时,作者还提出增量开发模型更佳。因为增量开发模型思想是渐进地精化。

增量开发模型(图片来源于百度)

   增量开发模型的优点是,在所有时刻,开发者都拥有一个可运行的系统,所以可以很早开始用户测试,以及可以采用按预算开发的策略,来彻底保证不会出现进度或者预算的超支。对于大型系统开发来说,增量开发模型确实是比瀑布模型更优的选择。但是,增量开发模型也存在缺点。虽然增量模型的灵活性可以使其适应需求变化的能力大大优于瀑布模型,但也很容易退化为边做边改模型,从而使软件过程的控制失去整体性。

  《人月神话》的一开始便把软件工程比作是焦油坑,诚然,软件工程这个焦油坑还会在将来很长一段时间内使开发者们举步维艰。面对软件工程这样将持续很长时间的问题来说,关键在于不断地学习与开发和利用新工具。如何提高软件开发的效率将会成为信息技术时代的关键问题之一。

				
时间: 2024-10-03 08:42:37

读《人月神话》所感所思的相关文章

读<<人月神话>>

这本书在软件领域知名度很高,每次看到年度推荐的文章里面都有这本书且强烈推荐.出版30年了,可谓经典. 但我在读的过程中并没有那么深的体会.书中很多章节都是基于大型项目或者大型系统的经验总结,至今为止我还没有参与大于30人的项目.只能说自己的境界还不够. 第一章,焦油坑 再也找不到一个词比焦油坑更能形容,软件开发的过程了.我们都在挣扎.计划,计划,不断计划,但还是拖延,拖延,拖延.... 职业的乐趣: 创造性,贡献助人为乐,过程的魅力或者解决问题的成就感或写代码的快感,持续学习新事物,驾驭感. 职

读“人月神话”有感

在软件工程这门课中我们学到,一个软件的开发过程不是简单的一个选择编程语言编码实现的过程,而是一个要经过可行性研究分析.需求分析.形式化说明.总体设计.详细设计再到编码实现的过程,后期还需要对软件进行维护,整个软件的开发过程需要开发成员之间的密切而有效的合作. 这个学期,经同学的推荐,我读了一下<人月神话>这本书,一开始并不知道这是一本关于软件工程的书,毕竟这书名迷惑性太大,一般的人都会理解为是人跟月亮的神话,完全不会像软件工程的方向靠近.不过当你读了这本书之后会发现,整本书都是在以一种非常幽默

读人月神话有感

人月神话书如其名一样震撼人心,它引起了许多别的领域的读者对此进行评价. 律师,医生,社会学家,心里学家,和软件人员一样对此书提出评论和建议.人们经常通过比较计算机软件开发生产率和硬件制造生产率来支持这个观点,后者在 20 年内至少翻了 1000 倍.正像第 16 章所解释的,反常的并不是软件发展得太慢,而是计算机硬件技术以一种与人类历史不相配的方式爆发出来.很多年后作者还是会被道“你现在认为哪些在当时就 是错误的?哪些是现在才过时的?哪些是软件工程领域中新近出现的?”很多年来人们对软件生产率和影

人月神话

读人月神话给我感受最深刻的是作者以焦油坑为例向我们抛出了大型系统开发的问题,简短的说出了作为程序员的乐趣与苦恼.人月即产品开发的人数和时间,文章指出了人月并不能衡量一项工作的规模,即人与月是不能相互转换的,在程序开发过程中在某个条件下可以通过增加人数来提高工作效率但到一定情况下再增加人数只会使效率越来越低同时给出了作者自身关于软件任务进度的安排1/3用于计划,1/6用于编码,1/4用于构件测试和早期系统测试,1/4用于系统测试,对于项目开发而言提前的计划非常重要会避免进度的拖延,对于一个进度落后

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

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

读《人月神话》所感

<人月神话> 读书心得: 因为现在还是学生,且没有什么真正在应用项目的开发经验,所以读<人月神话>这本书,与其说是在学习这位计算机先驱的经验,不如说是在了解一个大型软件系统的开发过程以及在开发过程中将会遇到的困难.但是,通过一些小项目的练习经验,还是有很多感触. 如果以后工作了,从事软件编程这个行业,在拿起这本书读一读,有了实际的经历,一定会有更多的收获. 读<人月神话>所感,布布扣,bubuko.com

读《人月神话》有感

<人月神话>是IBM360系统之父布鲁克斯所著的经典,它为人们管理复杂项目提供了颇具洞察力的见解,既有很多发人深省的观点,也有大量的软件工程实践,读后受益匪浅,倍受启发. 本书分为15节,其中焦油坑,人月神话,外科手术队伍,贵族专制,民主政治和系统设计以及没有银弹是我最喜欢的几章,以下是我从这几个章节所获得的知识和见解:从(焦油坑)一节中,我认识到了 编程系统产品开发的工作量是供个人使用的.独立开发的构件程序的九倍:编程行业也存在一些苦恼:(1) 将做事方式调整到追求完美,是学习编程的最困难部

初读《人月神话》

在平时的工作中,时常体会到消耗大量时间的往往不是一些难度很高的技术问题,而是一些由于工作流程管理不当及沟通不善造成的时间浪费,比如没有经过深入全面地分析和详细地设计就开始编码,事后常常要花大量的时间返工和修改:比如代码管理混乱,合并代码时常常出现各种小错误,耽误了进度:比如没有撰写清晰完备的文档,后续其他同事在维护之前的代码时,非常费时费力,等等.因此,学习一些项目管理方面的知识非常有必要.抱着这种心态,我翻开了<人月神话>,开始第一次阅读.下面摘录一些本次阅读过程中的一些笔记: 1.任何创造

读《人月神话》之感受

中国科学技术大学软件      朱秀秀           原创作品转载请注明出处 自暑假以来,就认识到这本书几乎成了软件行业不可或缺的一碗鸡汤,不过在我刚一看到“神话”两个字,两眼顿时放光,觉得闲暇之余还可以看看神话之类的小说,煞是惬意,可是暑假档期排得实在是不能再满了,于是乎,决定开学之后再看吧. 暑假的课程紧锣密鼓的进行着,一天,两天....只能说从来没有如此充实的度过长达一个月的起早贪黑的学习生活,好在这段难忘的时间终究还是离我而去,几场考试过后,向往已久的研究生生活开始了. 于是在老师