人月神话第二遍(总)--读书笔记
我在阅读完成《人月神话》时想起了。在刚刚进入软件工程学习时,老师总会时不时向我们提起一些关于“软件项目开发的完成与增加人员的问题”这句话听起来通俗易懂,但实现起来却遇到了相当大的困难,现在最大的感受,我想这种问题的出现主要是就订单项目而言,因为人员的增加主要是因为客户所要求实现的东西并没有在计划的时间内收到满意的答复和应得的功能与效益。所以项目开发人员不断的增加,本书作者布鲁克斯得出的结论是显而易见的:“向进度落后的项目中增加人手,只会使进度更加落后”。 如果不想加班,不想削减功能,不想推迟发布日期,那么唯一的方法还是只有加人。加足够的人。而且不要逐步加入,一定要一次性加入。要小心的是,新加入的人可能对原来的组织造成冲击,或者对原来的设计有不同意见,特别是我想如果如果有比较强大的设计者时就要当做新组建了一个团队。重新交流,培训新人,就设计达成一致,继续向者目标前进。这也是造成项目延迟的原因之一。
书中主要提到在项目管理方面可以看到项目估算,组织结构和人员角色安排,团队建设和沟通,历史数据积累和建模,软件开发方法论,风险和问题管理等相关的内容;在软件工程方面可以看到架构设计保证概念完整性,整体和部分,空间技能和程序结构的关系,产品集成的方法和消除缺陷的设计思路;在支持过程上我们可以看到文档和流程的建设,软件开发工具对软件开发过程的支持和效率的提升以及工具的选择等相关内容,回过来再看,发现书里面仍然大部分内容涉及到了团队,人和沟通。对于大型的软件工程项目仍然强调了人的重要性,在开篇就在讲开发人员的职业乐趣,后面又通过巴比伦塔讲沟通的重要性,在外科手术队伍中讲团队的组建和分工。这些都涉及到了团队中的人和交互,只有一个有了积极心态和热情的沟通团队,才可能成就一个伟大的团队。从最后的没有银弹,再次肯定了开发工作是一种高智力的脑力工作。
总结一下这本书,讲的主要是软件工程方面的,如何配置人力进行开发 。虽然对于软件编程我们对其了解并不多,但是对于在软件功能的实现,程序设计人员面临的客观性的困难至少我可以站在略懂的角度上去理解他们,对于一个或多个项目来说,公司大多都会搞人海战术,进度没有提前,还整天加班,最后用户不满意,开发人员整天郁闷,结果是用户对公司失去了信任,成了一槌子买卖,开发人员旧人一一辞职,新人天天引进,做法没有改变,情况没有改观,公司没有发展,这就是问题。人月之所以不能成为神话,正是因为增加人手的同时也增加了人与人之间的交流。我们所有的进度都是以“人月”代码产量来衡量的. 而增加"人"并不能缩短"月"的量。这同样是作者的观点,布鲁克斯这个名字在中国知之者不多,但在美国却是大名鼎鼎。因为他在60年代初只有29岁时就主持与领导了被称为人类从原子能时代进入信息时代标志的IBM/360系列计算机的开发工作,取得辉煌成功,在计算机技术的诸多领域中都做出了巨大的贡献。作者在书中提到了他使用了很多年的经验法则:1/3计划1/6编码1/4构件测试和早期系统测试1/4系统测试,虽然布鲁克斯的这本书发表数十年,但他预计的这些问题并没有得到最终的大变革,软工领域仍在面临着多种作则提出的问题,不过令人欣慰的是,大家确实在向这方面改变。在第6章中作者又提到,系统架构师们应该在文档中描述所有外部特性,但是他应该避免干涉具体实现细节,实际上我们动脑想一想解决办法很简单:谁开发、谁决定,对于外部特性的形式化定义不应该扼杀实现人员的创造力。我认为任何事都应当先规划再执行,很多专家和实践人员都同意这样一个观点:需要项目经理投入的最重要的一件事就是规划。只有详细而系统的由项目小组成员参与的规划才是项目成功的唯一基础。不能因为规划或进度计划不准确经常调整而不做计划。项目经理必须以自己的实际行动向项目小组成员传递一种紧迫感我想事情这样规划的话,由于项目在时间、资源和经费上都是有限的,项目最终必须完成。
刚刚读这本书时,我对作者的观点和他所用的一些专业术语或者一些形象的比喻都不太懂,没事做的时候我把它放在电子书里随时翻看,很多地方会给人想要继续读下去的感觉,因为我想要了解它,继续下去会给我们所有问题的解释,尤其是作者在拟题的时候用了很多奇怪的小标题,例如; 焦油坑、外科手术队伍、为什么巴别塔会失败等等一些似乎看起来跟软工方面并不贴边的题目,但作者恰恰用了这些吸引了我的眼球,这本书让我对软件工程的程序设计开发的认识有了巨大的改变,我知道布鲁克斯的成功不是一时的,所以我更相信他的经验足以我受用一生。