第一次听说人月神话还是在大一上学期的导论课那会儿,那会儿好像就已经确定了自己要学软件,于是就去问王建民老师能不能给我推荐几本软件工程方面的书,我想要提前自己学学,以为老师会给我推荐一些某种语言类的学习书,但是貌似不是,他推荐的一堆书里面其中就有这本《人月神话》,当时的我真的不理解,别的书还好,像是梦断代码,好歹里面有个代码俩字儿,但这个……那个人月是啥意思,人和月亮的神话故事??可是这和软件工程又有什么关系呢?也许是单纯因为好奇心吧,趁着双十一我就买了一本,但是好奇心来得快去的也快,书到手以后,我想着反正自己已经有了啥时候看都行,就一拖再拖,直到这个寒假,我才慢慢地揭开了它神秘的面纱。

原来所谓人月是指人员和时间的关系,作者认为用人月作为衡量一项工作的规模是一个危险和带有欺骗性的神话,书名由此得来。书中提到当一项任务由于次序上的限制不能分解时,人手的添加对进度没有任何帮助,而对于可以分解的,其子任务之间又需要相互沟通和交流,而沟通交流的工作量非常大,他很块会消耗任务分解所节省下来得个人时间。从而,添加更多人手,实际上是延长了而不是缩短了时间进度。由此向进度落后的项目中增加人手,也只会使进度更加落后!

建立怎样的组织架构是项目成功的关键。书的第三章作者提到了Mills的提议“大型项目的每一个部分由一个团队解决,但是该队伍以类似外科手术的方式组建,而并非一拥而上”。即提倡外科手术式的团队组织:就是一个主治大夫,其他的如助理大夫,护士等,都是配合主治大夫来进行手术。在软件开发组织上的过份民主,往往带来的是没有效率和责任,参与其中的人想法太多,层面参差不齐。所以,软件开发的组织,应该借鉴外科手术式的团队方式,有一个主要的负责人,其他人都是分工协作的副手,这样效率最好,结果最好。

概念完整性是系统设计中最重要的考虑因素。软件项目的核心概念要由很少的人来完成,以保证概念的完整性。少就是多,项目的定位需要和功能多少的权衡。太多的想法,使项目没有焦点,什么都要放进去,结果什么都做不像。我想起了作者书上提到的一个例子,在选择是让体系结构的团队承担该工作,可以出色完成任务,但是比所允许的进度多了三个月,而且程序实现团队的150人只能坐在那里干等10个月;还是让程序实现队伍来负责该工作。可能仍将推迟三个月,而且质量更加低劣。结果将工作分派给了后者,结果也确实如此。更糟的是,由于概念完整性的缺乏,至少增加了一年的调试时间。而造成这个错误决策的决定性因素正是时间进度和让150名编程人员参与工作的愿望。同工作广泛的水平分割相比,垂直划分从根本上大大减少了劳动量,使交流彻底地被简化,概念完整性得到了大幅提高。获得概念完整性十分重要,宁可省略一些不规则的特性和改进,也不提倡独立和无法整合的系统。对我来说,平常的编程也是一样,一定在下手之前头脑里先有一个明确清晰的设计思路和整体规划,这样看似是浪费时间,其实大大节省了编程进度,像自己原来那种边编程边想的做法既容易出错又消耗时间。

      最后就是软件开发过程中必要的沟通手段。软件开发中最大的风险往往不是技术的缺陷,而是缺少沟通。工作人员之间需要沟通确定任务分工,老员工需要花时间跟新员工交流清楚工作内容,程序员更是需要与客户做好沟通,你弄得再好不是客户想要的照样白搭。莎士比亚说“一千个观众眼中有一千个哈姆雷特”。即仁者见仁智者见智,每个人对不同的程序设计及实现都会有自己的看法,所以啊,最终要做好一个作品,沟通很重要。

      书中作者比喻道,做软件就像是在“焦油坑”中,苦苦挣扎,却越陷越深,焦油坑中是累累白骨。软件开发是一个充满乐趣与烦恼的职业,我们时不时地会获得一种创建事物的纯粹快乐,亦会有着反复寻找琐碎bug的苦恼,但,这才是编程,一个许多人痛苦挣扎的焦油坑以及一种乐趣和苦恼共存的创造性活动。对我而言,我热爱这门学科,而他所带给我的快乐也亦远大于苦恼。
 

<<人月神话>>阅读体会(一)的更多相关文章

  1. IT项目管理——《人月神话》读后感

    这也许是和候红老师的最后的几节课了吧,侯老师是一个很有思想深度,很关心同学的好老师. 一开学就布置了阅读<人月神话>的作业,说实话,我没有看,以我的速度可能2.3个小时就看完了,但是我觉得 ...

  2. 《The Mythical Man-Month(人月神话)》读后感(2)

    第10章 未雨绸缪 在化学领域中,在实验室可以进行的反应过程,并不能在工厂中一步实现.一个被称为“ 实验性工厂(pilot planet)”的中间步骤是非常必要的,它会为提高产量和在缺乏保护的环境下运 ...

  3. 《The Mythical Man-Month(人月神话)》读后感(1)

    临近考试周,这里我通过平时阅读的<人月神话>十九个章节和知乎.简书等网页中网友们对<人月神话>的读后感,对书中各个章节进行简单的总结,以下均为个人手打观点的思考与整合,仅供大家 ...

  4. 《人月神话》读书笔记 PB16110698 第七周(~4.19)

    每逢读书笔记上交作业时刻,班级blog页面上总能看到<人月神话>相关的读书笔记,本次软工课邓老师推荐的第一篇读书笔记也是写的<人月神话>,算是对它“耳濡目染”了.本周,我终于抽 ...

  5. 软件项目发展历史<人月神话>这本书好

    几乎是计算机软件开发的发展历史     人月神话,增加人手并不一定能提高开发速度. 原因在于,有些任务是无法分解的,存在先后顺序.无法同步进行. 增加人手,增加的是沟通成本,相互牵制.可以分解的任务就 ...

  6. Java课程寒假之《人月神话》有感之一

    一.焦油坑 以前上课的时候,老师讲过早期的程序由于工作量不大,大多只需要几个人完成,随着软件规模的不断扩大,代码量直线上升,仅仅一两个人可能没有办法完成这样的任务,多以开始形成了团队的规模,焦油坑说的 ...

  7. 第八周读书笔记(人月神话X月亮与六便士)——到底什么才是一个程序员的自我修养?

    写了这么久的读书笔记,涉及到问题大多是一些如何把软件工程做好,如何把自己的职业生涯做好.但总感觉逻辑链上缺了一环,亦即:我们为什么要把软件工程做好,我们成为一名优秀的职业生涯的意义到底在于什么?我觉得 ...

  8. 读书笔记第三周 人月神话 刘鼎乾 PB16070837

    读书笔记第三周:人月神话   这本书主要讲述了如何管理一个软件开发团队的问题,其中如何提高团队的效率可以说是本书的重点之一了.感觉这本书地中文版翻译得比较晦涩,很多表达比较模糊,看起来有些吃力,因此下 ...

  9. 《人月神话》读书笔记(2)-week3

    为了确保团队中的每个人都能保持系统概念上的完整性,关于项目的书面规格说明是必不可少的.手册要描绘用户可见的一切,但不应支配实现的过程.光有规格说明也是不够的,会议也是必要的.书中提到的周例会会迅捷地给 ...

随机推荐

  1. luogu P3241 [HNOI2015]开店

    传送门 (下面记年龄为\(a_x\))题目要求的是\[\sum_{x=1}^{n} [a_x\in [l,r]]*dis(x,u)=\sum_{x=1}^{n} [a_x\in [l,r]]*de_x ...

  2. 第19月第20天 UITableView:改变 TableHeaderView 的高度 获取目录大小

    1.UITableView:改变 TableHeaderView 的高度 CGRect newFrame = headerView.frame; newFrame.size.height = newF ...

  3. 阿里前CEO卫哲:马云好玩,人工智能泡沫巨大,新零售重在社区

    阿里前CEO卫哲:马云好玩,人工智能泡沫巨大,新零售重在社区 投资中国网 08-21 08:34 投中网(https://www.chinaventure.com.cn) 编者按:当下的技术时代,是跨 ...

  4. Miller-Rabin判质数和Pollared-Rho因数分解

    朴素判质数:$ 在[2..\sqrt{n}]$范围内枚举逐一判断是不是$ n$的因数 时间复杂度:$ O(\sqrt{n})$ 当n达到$ 10^{18}$级别时,显然效率过低 Miller-Rabi ...

  5. jq的css方法

    读属性: $(selector).css(name) 设置属性: 法一: $(selector).css(name,value) 法二: $(selector).css(name,function(i ...

  6. 技巧性极强的strings命令

    打印文件中的可打印字符串(print the strings of printable characters in files).常用来在二进制文件中查找字符串,与grep配合使用.strings命令 ...

  7. react踩坑记录——使用fetch获取json数据报错

    报错: 原因其实是list.json文件路径错误,该文件路径是相对于index.html的,而不是App.js或者index.js.

  8. Hadoop环境准备

    1. 集群简介 HADOOP集群具体来说包含两个集群:HDFS集群和YARN集群,两者逻辑上分离,但物理上常在一起. HDFS集群负责海量数据的存储,集群中的角色主要有: NameNode.DataN ...

  9. shell编程 之 引号、括号的用法总结

    1 单引号 a=1 b='a string' 单引号屏蔽各种特殊字符.echo ‘$a " % \n ' 只能得到 $a " % \n 单引号可以指明界限,防止由分隔符----空格 ...

  10. ActiveMQ常见消息类型

    JMS由下面三部分组成:消息头.属性.消息体.其中消息体定义了五种消息体格式,也可以称为消息类型. JMS规范中的消息类型包括TextMessage.MapMessage.ObjectMessage. ...