人月神话:有多传奇?

前言

本文为《人月神话(40周年纪念版)》试读博文

摘要

  • 这是一本软件工程领域的经典之作,第一次笔者听到这个书名还是在大学的一次技术研讨会上,现在已经过去两年多,借此机会来重新研读一下此书。
  • 我将通过一个准程序员的视角来阐述自己对本书的浅见,希望大家给予指点批评!

正文

焦油坑是啥?

首先映入眼帘的是野兽与野兽打架的场景..几只野兽挣扎着半天也无法逃脱这个坑,如同过去几十年大型的系统开发,他们中大多数开发出了可运行的系统,但是却因为极少数的项目满足了目标、进度和预算的要求。因此,他们一个接一个地淹没在了焦油坑中。

我觉得:一个项目的开发是一个复杂的动态系统,没有最优化结果,只有顾客满意的答案。索要考虑的因素也很多,必须全面策划,平衡因素,团队的高效,协调一致,才能保证目的的成功!简单的说就是顾客是上帝

那么职业的乐趣所在呢

还记得那个经典语句吗,HelloWorld!这几乎是所有语言学习当中,第一个范例程序。从当初第一次学习C,但是不知道有啥用,到后来第一次解决错误(称之为bug),在到后来做出一个小项目,最后默默的想成为一个不错的程序员。

想必每次调试成功的自豪感是难以言表的,代码是死的,但是在程序员的雕琢下活生生的编程了一个功能,一个项目,未来甚至会创造出与人一样会思考的机器人(人工智能?)

放下一切杂念,只是单纯的关心这个程序问题,一心一意的把它解决;希望自己的劳动成果可以被他人使用。

这种完成编程之后的一丝愉悦,就是唤醒每个人内心的情感的体现;也满足了对于创造的渴望。

有开心就有苦恼了呗

对于程序追求完美、难以控制工作环境和目标会让程序员感到烦恼;但更重要的是,对其他人的依赖是一件很难受的事情,依赖别人写的程序却发现设计的并不合理,文档也没有,最后不得不去研究修改,这是很可怕的。

程序员不喜欢过多的去受到依赖和约束,更不喜欢一大堆的文档,尤其是当这些文档没有记录清楚的时候。

寻找琐碎的bug,这种重复性的工作,让人心生烦恼。最让人难过的就是辛苦开发出来的系统最后没有得到使用。

职业的酸甜苦辣

码农这个词,经常被提到,编码常常被认为是一种无价值和创造性的活动,他们理想化的认为需求和设计可以做的足够详细,

引用

编码仅仅是一种体力劳动,这是对每一位程序员的不尊重

处于最后一道工序的编码人员,他们产出的代码最终形成的形成了软件系统和产品,当他们的价值往往并不能得到相应的承认

其实,我想说,如果你都没当过码农,你又有啥资格说他/她,这不好那不好呢。

向进度落后的项目中增加人手,只会使进度更加落后。 -Brooks法则

乐观主义

一切都将运作良好,每一项任务仅花费它所“应该”花费的时间。

这其实是一个错误的结论!假设一切都会运转良好,而不会遇到任何的风险和问题。而恰恰实际情况是在实际开发中遇到一个疑难问题耽误几天或一周的时间。

人月

用人月来衡量一项工作的规模是一个危险和带有欺骗性的神话,因为它暗示了人员数量和时间是可以相互替换的。

系统测试

  1. 在进度安排中,由于顺序限制所造成的影响,没有哪个部分比单元调试和系统测试所受到的牵涉更彻底。而且,需要的时间依赖于所遇到的错误、缺陷的数量及其难以捕捉的程度。理论上,缺陷的数量应该为零。
  2. 但是,由于我们的乐观主义,通常实际出现的缺陷数量比预料的要多得多。
  3. 因此,系统测试进度的安排常常是编程中最不合理的部分。

空泛的估算

基于可靠基础的估算出现之前,项目经理需要挺直腰杆,

坚持他们的估计,确信自己的经验和直觉总比从期望派生出的结果要强

得多。

重复产生的进度灾难

  1. 简单、武断地重复一下Brooks法则:向进度落后的项目中增加人手,只会使进度更加落后。
  2. 这就是除去了神话色彩的人月。项目的时间依赖于顺序上的限制,人员的数量依赖于单个子任务的数量。
  3. 总之,在众多软件项目中,缺乏合理的时间进度是造成项目滞后的最主要原因,它比其他所有因素加起来的影响还要大

后续

人力(人)和时间(月)之间的平衡远不是线性关系,使用人月作为生产率的衡量标准实际是一个神话。

看到这里的人估计很少了吧,,附上两幅图给大家:

哆啦a梦此时此刻会从他的神奇口袋里,拿出啥呢??

>

>

>

>

天啊,竟然是人月神话,,,所以说这本书是一本难得的经典,大家一定要看哦,就让这本书伴我走向程序员的新征途吧!

时间: 2024-11-04 13:06:23

人月神话:有多传奇?的相关文章

《人月神话 》读后感

之前一直听老师讲<人月神话>仿佛这就是一个传奇.   百闻不如一见,在这本300多页(中文新版)的神书,在经过了20多年的历史之后,仍然畅销不衰,究竟是什么让它有如此的魅力?过去的一个月,一点一滴的阅读之中算是初步的了解到了它的一部分吧. 人月神话的核心观点:概念完整性和架构师   Brooks认为,一个整洁.优雅的变成产品必须向它的每位用户提供一个条理分明的概念模型,这个模型描述了应用,实现应用的方法以及用来指明操作和各种参数的用户界面使用策略.概念的完整性是易用性中最重要的因素.而架构师,

读&lt;&lt;人月神话&gt;&gt;

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

《人月神话》读后感

这个学期选择软件冲程这门课我受益匪浅.在这段学习的过程中读完了一本人月神话则是我认为最有价值的经理. 在软件领域中,很少能有像<人月神话>一样具有深远影响力和畅销不衰的著作.作者布鲁克斯被誉为“IBM System/360之父”,他曾是这一系统的项目经理,后来在设计期任360操作系统的项目经理.由于这一工作,他与Bob Evans和Erich Bloch 1985年曾获美国国家技术奖.Brooks博士早期曾担任IBM公司Stretch和Harvest计算机的体系结构设计师.1999年,他还荣获

人月神话阅读笔记03

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

人月神话阅读笔记07

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

人月神话——我的理解

人月神话中第一章就提到了The Tar Pit ,在焦油坑种挣扎并且体验快乐并苦恼的编程过程,人月神话的开始就在讨论超级项目的合作与分工的矛盾以及内部模块的复杂交织.作者是IBM OS/360项目的项目经理和主要负责人,IBM/360所犯的错误以及给我们的启示成就了这本书,本书的目的是为身处焦油坑里的软件工作人员提供一点帮助和引导.依作者的观点,“人月神话”的出现和工程进度的不合理安排有很大关系,因此合理工程化体系的建立很有必要,盲目的软件生产心理和人员协调中存在的问题导致了软件工业的巨大失败率

《人月神话》阅读笔记02

今天我读了人月神话—外科手术队伍和巴比伦塔的失败.有许多体会. 在开发小组中,最好和最查人员生产率比在10:1,在运行效率和空间上5:1惊人差距.如果一个200人的项目中,有25个最能干和最有开发经验的项目经理,那么开除剩下的175名程序员,让项目经理来编程开发. 对于一个软件项目,适合的项目团队规模在20人左右,这是一个专职的IT项目经理可以管理的最大值.那由于项目进度压力需要增加团队规模到100人的时候,让项目经理来开发实际操作是很困难的方式,在这里推荐的方式是将系统按照高内聚,松耦合分解为

人月神话读后感

书中应用焦油坑表示过去几十年的大型系统开发,很多大型和强壮的动物在其中剧烈挣扎.让我感觉到,软件开发过程中所遇到困难是多么的多,开发多么艰难.但是这本书同时告诉了我们软件的开发有苦也有乐,我们可以在编程过程中体会那份快乐.<人月神话>是为软件开发经验的天马行空总结.比<Beautiful code>更为有远见,把我从充实代码的清晰简介升华,拓展到软件开发的高层度, 一个周密,准确,明朗的开发需求分析,可行性研究,软件实现是软件开发的完美递进. 人与神话中讲述人力和时间并不体现线性关

人月神话03

这两周我把<人月神话>剩下的章节看完了. “整体部分”这章讲了 我们的构思是有缺陷的,因此总会有bug.但我们可以利用一些方法来减少bug的出现,细致的功能定义.详细的规格说明.规范化的功能描述说明以及这些方法的实施,大大减少了系统中必须查找的bug 数量. 构件的单元测试,单元测试这一概念在这学期学习软件工程课时老师经常提到,作者很有先见性,测试对于发影藏的bug起着很大作用. “祸起萧墙”,本章讲了软件开发的不可与预测性.对计划和控制职能进行适度的技术人力投资是非常值得赞赏的.它对项目的贡