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

【读书笔记】人月神话

时间:2023-06-11 14:22:05浏览次数:62  
标签:神话 读书笔记 编程 系统 交流 人员 进度 项目

 作为一本计算机编程项目管理类的书刊,此书书名就毫不留情地指出“用人月作为衡量一项工作的规模是一个危险和带有欺骗性的神话”。这里向读者传达了这个重要的概念,在估计和进度安排中使用的工作量单位:人月。但实际上,人数和时间的互换是近乎不可能的,因为编程项目的任务不能分解给互相毫无交流的参与人员们(关系如下图所示)。

 

 

 

   在本书开头部分,作者讨论了编程从业者的职业乐趣和苦恼,并且以精妙地将编程比喻为焦油坑,编程团队比喻为外科手术队伍,围绕着软件开发中的各大障碍和误区,展开了对编程团队管理方法的讨论。总结为以下几点:

  1. 系统测试的进度安排。系统测试是最难完成暗示完成的部分,而这种拖延的二次成本却是巨大的。
  2. 空泛的估算。任务的计划进度,可能受限于顾客要求的紧迫程度,无法控制实际的完成情况。
  3. 重复产生的进度灾难。通过增派人手来完成任务的方式往往事半功倍。

   然后,作者以结构师的角度进行分析,阐述正确的做法来保持产品系统的概念一致性和编程人员的正确实践,这也是此书关于概念一致性的核心理论。主要在于:

  1. 创造性活动上的专制性统治但也要求结构师与建筑人员的仔细交流。
  2. 文档化的规格说明以及一系列保证编程实现人员理解决策的手段

   接下来,作者以巴比伦塔建造失败、各个先例的数据的案例来具体分析了大型编程项目中的交流与组织架构,强调了编程中程序空间与计算机产品文档的重要性。

  1. 巴比伦塔项目的失败原因主要在于缺乏交流以及组织。团队交流、项目手册及组织架十分重要。
  2. 整项工作的的估算不能仅依靠编码部分的估计,尤其小型独立程序的数据本就不适合编程系统项目。
  3. 编程产品的实验性工厂为提高产量和缺乏保护环境下运作提供宝贵经验。
  4. 开发过程中专业工具的使用,以及通用工具的开发分配资源对生产率的影响深刻。

   最后,本书介绍了一些对于软件整体部分bug的减少有效的一些理论措施,如自顶向下设计、结构性编程、高级别表达方式等,好的结构设计可以避免很多小错误。

   这本书给我留下的最深刻、最重要的观点便是它对人员与月数的关系的描述。它强调少而精的团队,是因为在关系错综复杂的任务之中,人员交流时间的变多、交流效率的变低会使开发进度延长。我在实验室常常有相同的体会,处于项目边缘的成员们往往很难入手,而在不自觉的等待与观望或费时费力的交流之中让时间悄悄溜走。正是由于这个矛盾的出现,人员与时间的调控,尤其是在大型的复杂编程项目之中,显得尤为重要。如何把一系列程序设计和构建成系统,如何把程序或者系统设计成健壮的、经过测试的、文档化的、可支持的产品,如何维持对大量的复杂性的控制,将成为软件工程这个“焦油坑”中持续存在的问题,而IT领域的飞速发展更是督促着我们不断地学习新工具的最佳使用。

   另一个令人惊叹的观点就在于,结构师交互准则与机制中提到的开发第二个系统的画蛇添足——倾向于过分设计。这里提到,当他们在设计第三到第四个系统时,先前的经验就会互相印证,并且为了避免第二个系统的画蛇添足,他们应坚持至少拥有两个以上系统开发经验的结构师的决策。这提醒了我们,现代软件工程中经验十分重要,一类系统中通用特性的判断,以及系统之间的差异会帮助我们识别出经验中不够用的部分,并且可以成为一种积累。

   总而言之,为了避免可怕的进度偏离,一个优秀的整体架构以及里程碑式的报告举足轻重,等到项目进行之后临时的增援只会大大地扰乱我们的“人月”计划。

标签:神话,读书笔记,编程,系统,交流,人员,进度,项目
From: https://www.cnblogs.com/LIXIHENG/p/17472899.html

相关文章

  • 《大道至简》读书笔记七
    今天的阅读内容主要是关于道家文化的实际应用,作者通过丰富的生活案例,向读者展示了道家文化的精髓,并提供了一些在现实生活中的实用指导。在本章中,作者讲述了一个非常生动的案例,讲述了一位厨师在面对油漆匠的粗鲁行为时如何保持自己内心的平静和冷静。通过这段案例,作者想告诉读者要......
  • 人月神话阅读笔记1
    《人月神话》是一本经典的软件工程书籍,作者弗雷德里克·布鲁克斯在书中提出了许多关于软件开发过程的思考和经验,对软件开发领域产生了很大的影响。下面分两个部分记录我的阅读笔记:部分一:我过去是怎么做的、为什么这样不好在我以前的软件开发项目中,我通常会认为如果向团队增加更......
  • 代码整洁之道读书笔记
    可读性至关重要:代码应该易于阅读、理解和维护。命名清晰明了,函数和类的功能单一且一目了然。采用一致的代码风格和格式,使用注释来解释代码的意图和重要细节。函数的简洁性:函数应该短小精悍,只做一件事情,并且只有一个抽象层级。避免函数过长,可以通过提取功能单一的子函数来降低复杂......
  • 第一行代码读书笔记
    Android是一个开放的移动操作系统,由Google开发。它提供了丰富的开发工具和库,使开发人员能够构建功能强大的移动应用程序。 Android应用程序由组件组成,其中最重要的组件是Activity、Service、BroadcastReceiver和ContentProvider。 Activity是用户与应用程序交互的窗口,每个Ac......
  • 梦断代码读书笔记1
    第0章软件时间作者迷恋于一个开放代码并可以由游戏玩家更改程序的一个游戏,并为在它的基础上创新和增添一些功能而乐此不疲。0代表程序员的思维方式,因为计算机从0开始计数。"HelloWorld"程序能够唤醒每个程序员心中乐观的一面。既然能叫它说话,就能让它做任何事!计算机器协会(......
  • 梦断代码读书笔记3
    第8章白板上的即时贴获得更好进展的关键是将软件改进到程序员自己可以使用的程度。白板上的即时贴:用贴纸,每张纸表示大致同等的工作量。每张即时贴代表各开发者一个月或两个月的工作时间。先在墙上循“点号版本”的顺序贴上,然后就能对每一轮计划的工作和自己是否脱离显示一目了然......
  • 《人月神话》读书笔记2
    第三章读书笔记:第三章主要讲了如何在项目管理中处理现实和时间的矛盾。作者认为,对于大型软件项目,为了避免时间延误和成本增加,需要将项目拆分为更小的模块,并且允许扩展和变更。同时,要保证各个模块之间的协调和集成。作者提出了三种独立的应对时间危机的方法:第一种方法是“移动人......
  • 《人月神话》读书笔记1
    第一、二章读书笔记:《人月神话》的前两章主要对软件工程中的问题和挑战进行了阐述。作者指出,软件开发是一项复杂的过程,需要系统性和规范性的方法来管理和解决各种问题。然而,软件工程师却面临着很多困难。第一个挑战在于“复杂性”,即使一个看似简单的项目,也有很多的细节和因素需要......
  • 《人月神话》读书笔记3
    第四章读书笔记:第四章围绕着软件开发过程中的文档、开发和测试的问题进行了探讨。作者提出了在开发和测试中“少写文档”的思想,认为写作精简的文档能帮助开发人员更快地投入到程序开发和测试工作中去。作者讲述了他在实践中贯彻的“原型方法”、“视觉化方法”和“前置设计”的具......
  • 人月神话读后感
    《人月神话》是一本由弗雷德里克·P·布鲁克斯所著的软件工程经典之作。这本书对于软件开发领域有着深远的影响,它揭示了许多项目管理和软件开发过程中的常见问题,并提出了一些宝贵的经验和教训。在读完《人月神话》后,我对软件开发的理解有了一些新的认识和思考。首先,我深刻认识到......