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

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

建立怎样的组织架构是项目成功的关键。书的第三章作者提到了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. cpp 常量函数(函数后加const)

    const用在成员函数后 主要是针对类的const 对象 如: class Text{ public:     void printconst(void)const{cout<<" ...

  2. 【jquery隐藏、显示事件and提示callback】【淡入淡出fadeToggle】【滑入滑出slideToggle】【动画animate】【停止动画stop】

    1.jquery隐藏and显示事件 $("p").hide();      //隐藏事件$("p").hide(1000);  //1秒内缓慢隐藏$(" ...

  3. mysql 查询优化 ~ 多表查询改写思路

    一 简介:在之前我们从基础可知,现在咱们聊一下改写的几种思路二 分类:  1 left join  2 inner join  3 right join三 具体改写思路:思路1 本身不包含子查询,将多 ...

  4. Django学习手册 - pycharm 安装/建立第一个网站hello world

    步骤阐述: 1.下载 pycharm 安装包,安装pycharm 2.打开pycharm软件,新建工程项目 3.新建APP,配置url,启动项目 步骤1: pycharm 官网下载: https:// ...

  5. exsi5.5以上版本支持虚拟机的二次虚拟化

    从存储里找到虚拟机的位置 下载并修改虚拟机的.vmx配置文件(记得做好备份) 打开<虚拟机名>.vmx文件,在末尾追加如下字段,保存退出. nce.enable = TRUE hyperv ...

  6. linux下安装oh-my-zsh

    如果是linux 系统,首先你需要安装 zsh sudo yum install zsh 或者 sudo apt-get install zsh 接下来我们需要下载 oh-my-zsh 项目来帮我们配 ...

  7. 20165231 预备作业二:学习基础和C语言基础调查

    微信文章感想 读了娄老师微信公众号中的文章,老师给我们的启示首先就是要坚持,万事开头难,但是只要肯坚持就一定会有所成就,不管是学习还是生活方面.其中最有触动的就是减肥了,是我三四年来一直难以完成的目标 ...

  8. 【VMware vSphere】ESXi系统设置静态IP

    写在前面:           为了方便管理,一般将ESXi系统的IP设置为静态           ESXi6.5系统和6.0系统类似,这里以ESXi6.0系统为例           1, 进入系 ...

  9. LwIP Application Developers Manual2---Protocols概览

    1.前言 本文是对LwIP Application Developers Manual的翻译 lwIP是模块化的并支持广泛的协议,这些大部分协议可以被裁减从而减小代码的尺寸 2.协议概览 链路层和网络 ...

  10. 1.Spring Boot入门及其jar包依赖模型分析

    Spring Boot介绍 Spring Boot是由Pivotal团队提供的新框架,其设计目的是简化Spring应用的搭建以及开发过程.其目标是: 为所有Spring开发提供一个从根本上更快,且方便 ...