梦断代码阅读笔记之一

小皇帝闹闹 小皇帝闹闹     2022-09-03     450

关键词:

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

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

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

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

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

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

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

《梦断代码》读书笔记1

《梦断代码》一书记录的是作者罗森伯格对OSAF主持的Chandler项目进行田野调查,通过Chandler开发过程来揭示软件开发过程中一些根本性的大问题。对本书才刚刚阅读了三分之一,就已经忍不住对作者描述的开发过程所感叹,虽然... 查看详情

梦断代码阅读笔记01

 梦断代码阅读笔记01                              &nbs 查看详情

梦断代码阅读笔记01

               梦断代码阅读笔记01                &nbs 查看详情

梦断代码阅读笔记01

第0章软件时间 黑代码:原来程序逻辑中没有的部分,之后加进去的代码。互联网时间:20世纪90年代科技行业的兴盛产生的一个词多指“快速”的意思。软件时间:文中并没有直接给出软件时间的定义。“做软件的过程当中... 查看详情

梦断代码阅读笔记之四

第七章OSAF的第一个“演示日”,看起来并不顺畅的演示,但是却是实现了以往没有过的模块,是工作人员们几个月的心血。而这整个改变正是许多细节都发生改变的结果。用户的错误理解却真实反映出关注细节、无视上下文的... 查看详情

梦断代码阅读笔记之二

在本书第一章里,作者为我们介绍了一些关于开源的历史和开源的开发方式。同时作者为我们对比了传统开发模式与开源开发的优劣之处。这两者的对比能让我们对于软件开发模式有一个更深刻的认识。     &nb... 查看详情

梦断代码阅读笔记之三

今天我看到了本书的第九章,本章主要讲了关于软件开发的方法论。同时作者为我们介绍了软件缺陷编年史上数量不多但是足以警示世人的惊人灾难。        1962年6月,水手一号探测飞船在发射5分钟... 查看详情

梦断代码阅读笔记之六

第三章--原型与Python我们在编程的前期选择语言的时候是最难过的,这真的是一个痛苦的选择,文中提及很多种语言:C、汇编、Fortran等等。最后,选择了Python语言。在我们的编程过程中也会出现类似的问题,一开始的方向和选... 查看详情

梦断代码读书笔记

阅读时间:2018年2月5号这次主要是读完梦断代码的的前4章之后,记录下来所得到的感悟。不知道是不是因为没有经历过真正的软件设计,我在读梦断代码的时候感觉到明显的吃力,尽管已经读了大概有4章,还是没有从这4章中提... 查看详情

阅读笔记5

梦断代码阅读笔记5从狗的需要管束引论到程序员需要管束。工程的质量、进度、成本也需要进行策划决策。质量三角,既好、又快、还便宜,同时满足的事情不太可能发生。软件经理非常重要,他制定进度、推动程序员按进度... 查看详情

梦断代码---读书笔记01

                                 &n 查看详情

《梦断代码》读书笔记

?我这周读完了《梦断代码》,这本书详细讲了Chandler软件的开发过程。在讲团队协作时,作者提到了一本书《大教堂与集市》。《大教堂与集市》的作者认为,重要的软件应该像建大教堂一样,由独立的巫师精心打造,在面世之... 查看详情

梦断代码读书笔记

   笔记(一) 首先,作者一开始就向我们介绍了程序员的真实生活:代码、日期、紧张、焦虑。这是我从书中体会出来代表程序员的词语。我第一次感到编程可能是一件辛苦的事,回想自己编程的时候,只是歇一... 查看详情

梦断代码读书笔记

   第一个,乐高之梦。将程序用乐高积木一样拼接起来。对于这一点,现在很多公司都已经多多少少在用了。但是书中也提到,有很多程序员往往不喜欢借用别人的代码,如果看一个文档超过两分钟没有找到自己所需... 查看详情

阅读笔记3

梦断代码阅读笔记3Chandler项目并没有真的“正在“改变世界(至少尚未开始)。但Chandler项目正是为改变世界之梦所驱动。卡普尔自己以及他的莲花公司还有更多开发者对项目的执着与对灾难的坚持。正是某种意义上的开发者的... 查看详情

《梦断代码》读书笔记

1.黑洞式的缺陷——即无法确定修正所需时长的缺陷2.在实际开发中,编码只占软件项目开发时间的1/6,有一半时间用于测试和修复缺陷。但只有少数项目经理会真正安装这种思路来安排开发人员的时间3.只有在任务能分派给许多... 查看详情

阅读笔记4

梦断代码阅读笔记4卡普尔的团队开始问自己一个看似简单的问题:我们如何组织信息?如何对这种信息组织法建模——需要怎样的数据结构才能让计算机也能回答这个问题?软件没有磁芯。它就像洋葱般层层叠叠,每一层都辛... 查看详情

《人月神话》阅读笔记01

...“我刚刚找出了最后一个错误”。 这一个观点,在《梦断代码》中也有所提及,那其中讲述的是,程序员对过往错误不在追悔莫及,对于新的项目仍抱有良好的希望。因此,推广到我们的日常学习中,愚认为对于过往逝去的... 查看详情