首页 > 其他分享 >人月神话读书笔记一

人月神话读书笔记一

时间:2023-04-29 18:00:16浏览次数:37  
标签:神话 项目 焦油 读书笔记 乐趣 任务

用了将近一周的时间,终于把人月神话读完了。本想着今天把读书笔记全部发完,但是老师要求每天都要发表博客,所以我决定分三天发表。我看的是40周年中文纪念版。相比于原版增加了一些作者根据今天软件工程管理现状添加的一些新的观点与评论,看看哪些过时了,哪些依然有效。

  人月神话在开头有一句荷兰谚语:Een schip op het strand is een baken in zee.[A ship on the beach is a lighthouse to the sea.] ----DUTCH PROVERB.意思是:岸上的船儿,如同海上的灯塔,无法移动。刚开始我感觉这句话牛头不对马嘴的,它想表达什么,岸上的船没用吗,那为什么还把它比喻成海上的灯塔。就这样我带着满腹的疑问与好奇开始读这本书。

  第一章讲的是焦油坑,焦油坑是作者用来形容大型系统开发的一个概念。史前时代,恐龙、猛犸象、剑齿虎这些大型食肉动物碰到焦油坑也是没有办法挣脱的,而且越用力就越容易被沉入坑底。这种场景就像极了我们平时写程序时的尴尬,很多问题堆积到一块,以至于太过复杂,不知道从哪里下手。现在想到王建民老师的教导,对解决焦油坑真是恰到好处。老师说的很对分而治之,把大的问题分为一个个小的问题逐个解决,前台后台分开写,DAO层SERVERLATE层在分开写,一个工程的开发也是这样。同时作者也在本章中也总结了编程的乐趣——创造全新的事物,并且该事物对他人是有用的;而且在创造的过程中你需要不断地进行学习,从而获得持续学习的乐趣等等。这些快乐不仅满足了我们内心身处进行创建的渴望,而且还唤醒每个人内心的情感。任何事物带来快乐的同时,不可避免有着随之而来地苦恼,于编程而言——追求完美。对我来说,在软件开发中我的乐趣在于:1、开发对其他人有用的东西的乐趣/2、面对不重复的任务,不断学习的乐趣。烦恼就是有时候真的不会不会编程。

  第二章讲的是人月神话。对于这个我有自己的远一点理解,因为王老师经常让我们极限测试,在规定的时间内编完程序,这真是一种挑战。人月神话虽然强调的不是这个,但是也有一点涉及时间的概念。对于软件项目进度的估算往往会根据项目的紧急程度而得出过于乐观的结果,这一方面是因为所有的编程人员都是乐观主义者,我们往往会认为“这次肯定能运行”或者是“我已经找出了最后一个bug”,另一方面则来源于市场的压力,这种情况在国内环境更甚。我们对于进度估算的第一个错误假设就是:一切都将运作良好,每一项任务仅花费它所“应该”花费的时间。而这个假设往往是一厢情愿的,对于创造性工作来说,创造者常常是在实现过程中,才发现在构思设计时候的不完整性和不一致性,从而反馈到的构思设计上,处理这种问题的时间和复杂程度会随着项目的结构以及任务的大小而呈现非线性增加的关系。所以对于大型软件项目来说,“一切都将运作良好”就是一件概率非常小的事情了。在软件项目中我们往往用人月这个指标在衡量项目的工作量。但是人月这个指标实际上是一个危险的带有欺骗性的神话。它暗示着人员数量和时间是可以互相替换的。只有在将任务分解给参与人员后他们之间不需要互相交流的情况下,人数和时间才是可以互换的。在实际软件项目中,只要项目具有一定规模,不论是设计、开发、测试、部署各个阶段都会有分解任务给不同人员,而且这些阶段本身也属于一种任务的分解,在不同人员间分解任务就不可避免的引发额外的沟通成本——培训和相互沟通。因为软件开发本质上是一项系统工作——错综复杂的关系下的一种实践,沟通、交流的工作量非常大,它很快会消耗任务分解所节省下来的个人时间。简单来说就是,3个人要干3个月的事情不是说安排9个人就能1个月干完了。而且,在进度落后的项目中增加人手的做法,往往只会使进度更加落后。这就是去除了神话色彩的人月。

标签:神话,项目,焦油,读书笔记,乐趣,任务
From: https://www.cnblogs.com/lzs666/p/17364314.html

相关文章

  • 四月读书笔记三
    在人月神话中巴比伦塔的失败主要是因为交流不畅,语言不通使得复杂的工程在交流模块变得更加的复杂,过度的交流影响了建筑的效率以及概念的完整性。软件产品也是一样的,一个软件产品的复杂度并不比巴比伦塔低,从分析到设计到开发到测试,整个流程下来,完全可以说软件产品就是一个小型的巴......
  • 梦断代码读书笔记 6
    第十章工程师和艺术家编程是工程还是文学?是科学还是艺术?高德纳写的书名叫《计算机程序设计艺术》,他在1984年获得图灵奖时发表感言说:“计算机编程是门艺术”。写《计算机程序设计艺术》这本书他花了十年,写TeX和metafont程序设计没写到也花了近10年。他宣称,写软件要比写书“难多......
  • 2023/4/28读书笔记
       今天,上了计算机网络,学习了运输层的相关知识,简单介绍了UDP与TCP的协议与区别,一个可靠,一个尽可能交付,学习了端口与运输层为应用进程提供逻辑通信。后来,在概率论上学了了方差的定义,计算方法,常见方差,方差性质,标准差,标准化,协方差COV的定义,计算方法,性质,与相关系数。......
  • 四月读书笔记2
    四月读书笔记2关于进程管理和客户需求,进程管理只是项目管理中的一个方面,还有比进程管理失控更加可怕的,那便是未能准确地获取客户的需求,导致项目运行方向犹如救经引足,南辕北辙。收集客户需求看似简单,然而实际情况千变万化不一而足,某些用户仅仅偶尔使用程序,有些用户必须依赖程序,还......
  • 读书笔记02
    这本书讲述了几十年前软件专案管理问题与经验,作者将大型系统开发比作一个焦油坑,我原本以为软件开发还是比较容易的,有了新想法,就会有新的软件产品出现,但是却不知道项目不能满足目标、进度、预算的要求,就不能成为一个好项目。程序,通过不同的途径转变成不同的产物,使之变得更有用,成本......
  • 四月读书笔记二
    程序员几乎仅仅工作在单纯的思考中,程序员凭空运用自己的想象,来建造自己的“城堡”。很少有这样的介质——创造的方式如此灵活,如此得益于精炼和重建,如此得容易实现概念上的设想。这句话是《人月神话》中我比较喜欢的一句话。所谓焦油坑,就是由于如同诗人一般的程序员们不断的将工作......
  • 构建之法读书笔记-4月
    《构建之法》是一本由丹尼尔·布鲁斯坦所著的研究人类思维方式的书籍。它探讨了构建和创新的过程,以及我们如何利用这些过程来改善我们的生活和工作。在全书中,布鲁斯坦提出了一种三个阶段的构建模型,分别是发现、抽象和建立。他指出这三个阶段不仅是构建过程的必要步骤,而且在任何......
  • 《代码大全》读书笔记3
    第七章是《代码大全》中关于代码优化的章节,对于软件工程师来说,良好的代码优化技能是非常重要的。在这一章中,作者详细介绍了如何进行代码优化,包括性能调整、空间利用、算法和数据结构的优化等方面的内容。通过阅读这一章,我深刻地认识到了代码优化的重要性,并学习了许多实用的技巧和......
  • 《人月神话》读后感 3
      第五章主要介绍了项目的初步探讨,阐述了一个项目在启动之前需要考虑的因素,包括项目的目标、需求、资源、约束等等。读完这一章,我认识到项目启动前的准备工作非常重要,只有在充分考虑所有因素后,才能建立一个可行的计划并确保项目的成功。  第六章是这本书的核心章节之一,主要介......
  • 《人月神话》读后感2
      在第三、四章中,作者强调了软件开发过程中人员的重要性,以及团队合作的关键作用。  在第三章中,作者讲述了“向生产力之路”这一概念,即通过增加人力、时间或资源来提高软件开发的生产力。然而,作者指出这种做法并不可行,因为人力、时间和资源的增加并不能带来相应的效果提升,反而......