最近阅读了罗森伯格的《梦断代码》,算是近距离观察了十几年前软件开发的状态。这本书是作者对OSAF主持的Chandler项目进行田野调查  而写的一本书。本书是在讲一事,也是在讲百千事;是写一软件,也是在写千百软件。在描述Chandler项目的过程当中亦提出了很多观点,带给我们很多思考。让我们这些软件工程专业的学生对软件开发有了一个更深层次的认知。

在本书第一章,作者为我们介绍了一个布鲁克斯法则:“往已延误的项目里补充人力,只会使其继续延误”。

布鲁克斯曾是IBM的资深程序经理,他亲眼目睹了IBM System/360主机操作系统的打造过程,该系统是当时规模最大的项目。那台巨大而昂贵的大型计算机,本应是后来二十年中生意场上的中流砥柱,但它的孕育和诞生却饱受延误和成本超支之苦,正如布鲁克斯所言,它变成了一个“沥青坑”,一个能粘住大企业的陷阱,哪怕是对于IBM这样孔武有力的公司也不例外。布鲁克斯所在的部门,深受进度落后之困,不断招募新程序员参与项目,如同李将军派遣一个又一个旅团进攻墓园山脊——结果发现后援力量非但没能挽救项目,反而使情况越来越糟。

所以布鲁克斯法则就这样诞生了,听起来既是原则也是悖论:“往已延误的项目里补充人力,只会使其继续延误”。布鲁克斯说软件开发者通常都是乐天派,他们认为每个缺陷都可以迅速被修正,且修正旧缺陷必能减少新缺陷的数量。这种盲目乐观,加上程序员想要取悦主顾,往往进度在一开始的时候就偏离正轨。布鲁克斯发现,在实际的开发中,编程只占项目开发时间的1/6,有一半时间用于测试和修改缺陷。但只有少数项目经理会按照这种思路去安排开发人员的工作时间。

对于软件而言,项目各有差异,工具不断升级,每当团队中加入一个新组员,老组员就得放下手中的工作,帮助新组员进入角色,每位组员都要等待重新分派任务,好让新组员有事情可以做。在你意识到这一切之前,已经远远落后于进度了。在最坏的情况下,这会导致灾难般的延误循环,一种再生性进度灾难。每一次重新安排进度计划,都导致雇佣更多人力,于是又不得不重新安排进度。

制作软件的大量工作受困于“序列约束”,它限制了任务分解的程度:完成某项任务是处理其他任务的先决条件,这与人力投入多少无关。最后布鲁克斯以不同个体程序员生产力的巨大差异来完成对“人月神话”反驳——极好的程序员能在规定时间内完成十倍于普通程序员的工作量,而且完成质量也五倍于普通程序员。若人与人之间的工作效果如此不同,那么衡量标准也无从谈起。

布鲁克斯法则在一定程度上暗示了最理想的发开组规模是一个人。因为这样一个单个开发者就无需为了与同事沟通而停下工作了。虽然在软件历史上一些“孤狼”贡献良多,但是太多软件渐成巨物,仅凭一人之力无法做成。所以编程到最后还是演变成了一种团队努力,一种团队合作。

转载于:https://www.cnblogs.com/cxr0711/p/6938906.html

梦断代码阅读笔记之一相关推荐

  1. 梦断代码阅读笔记03

    经过几天的阅读,终于将这本书看完了,读完了整个故事,我进行了简单的总结,感觉不仅仅是在写代码与计算机或软件交流,更多的是做事行为. 首先是做事得有目标.无论做什么事情都要有目标和动力,这样做起事来无论 ...

  2. 梦断代码阅读笔记01

    就像这本书的推荐序一样,这本书最大的的魔力是它不只是讲技术和理论,而是向我们真实的反映了一流软件开发师是如何进行软件开发的,他把真实的事,人,技术以及产品的发展过程结合在一起.我们现在没有进行开发项目 ...

  3. 梦断代码阅读笔记之二

    第5章 管束奇客和狗 管理的任务就是让人能协同工作,益其长处.弱其短处.数字只是管理的一个起点,并非终点. 用代码行数计算软件生产力不太可靠. 非正式机制总是存在,而且如果没真正理解就改变他是很危险的 ...

  4. 梦断代码阅读笔记 03

    孟子曾经曰过"鱼,我所欲也,熊掌亦我所欲也:二者不可得兼,舍鱼而取熊掌者也",这就是我们耳熟能详的"鱼与熊掌不可兼得"的由来,无独有偶,其实生活中也有很多的&q ...

  5. 梦断代码阅读笔记02

    最近读到了第四章,大体讲了: 模块化和组件化是软件人员的梦想,谁都想把几个模块插到一起就可以完美的运行并完成任务,但现实却相当残酷,可以运行的模块通常不能与自己想写的程序配合工作,好的源代码由于商业利 ...

  6. 梦断代码 ---阅读笔记02

    Agenda之魂 由于不知道Agenda的意思,所以去查了一下,它是议事日程; 待议诸事项一览表; 日常工作事项; 议程的意思.不过在本书中确实一个项目的名字,它是为解决各种信息的管理问题. 继续努力 ...

  7. 阅读笔记《梦断代码》其二

    梦断代码阅读笔记之二 读"乐高王国"的时候,真的引起了我的共鸣.因为以前我就是作者描述的那种程序猿,专注于制造螺丝和螺母这种小细节,而不屑于利用别人早就写出来不 知多少个版本的代码 ...

  8. 《梦断代码》阅读笔记01

    这几天阅读了老师推荐的<梦断代码>前几章,通过本书简介可以知道本书大概主要讲的是做软件过程中的困难. 第一章软件时间,主要讲的是从事软件制作行业的艰辛,需要没日没夜的加班工作,书中有这样一 ...

  9. 《梦断代码》阅读笔记之第8章至最后

    以下是我读了梦断代码第八章之后的读书笔记: 1.自己做的软件自己一定要用,即"吃你自己的狗食",自己的软件开发出来后自己都不会用那么还要指望别人用不成? 2.在软件开发编写代码的时 ...

最新文章

  1. 疫情过后人工智能是否能迎来春天?
  2. [SDOI2017]硬币游戏
  3. 七步确定一个优化项目的难易度
  4. python 3 廖雪峰博客笔记(三) 命令行模式与交互模式
  5. 搜索引擎CACHE策略研究
  6. 【黑金原创教程】【FPGA那些事儿-驱动篇I 】实验十八:SDRAM模块① — 单字读写...
  7. springboot使用AOP打印日志信息
  8. Vertx.vertx()初始框图和模块
  9. sql 占比计算_数据库索引的优化及SQL处理过程(建议收藏)
  10. js获取文件的后缀名
  11. 2022年APP软件游戏应用网站Pbootcms模板源码+支持WAP
  12. MySQL练习题 (练习表+题目+答案)
  13. 杭电OJ系列 刷题顺序
  14. 20190303-AJAX教程
  15. 天玑9200领跑背后,高端芯片掀起蝴蝶效应
  16. python终端命令行输入一条语句后出现三个点是什么?
  17. google关键词匹配和扩展工具
  18. 计算机系统引导失败怎么办,win7系统引导选择失败怎么办|win7系统引导选择失败的解决方法...
  19. 未来十年计算机体系结构的历史和趋势
  20. MOOC《深度学习基础》笔记(一)

热门文章

  1. matlab全景图素材,matlab以simulink的方式建立一个vr模型
  2. 影响网站权重的关键性因素有哪些?
  3. python第五单元答案_中国大学MOOC第五单元测试答案_数据结构与算法Python版慕课答案在哪里可以看...
  4. vue 判断是否位 float_VUE中条件注释法css,判断ie浏览器
  5. html css右下角三角形,html – 框内的CSS中的三角形
  6. Speedata uhf_7.6.3.jar错误硬代码问题
  7. gfnormal 域名 是阿里云的高防IP
  8. Eclipse构建路径
  9. selenium3 浏览器驱动下载及验证
  10. 发票打印不全不完整的解决方案(Win10)