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

人月神话读书笔记

时间:2023-03-30 17:33:31浏览次数:37  
标签:神话 项目 编程 系统 读书笔记 队伍 进度 团队

第一章作者将软件系统开发比作吞噬了恐龙、剑齿虎等史前巨兽的焦油坑,许多大大小小的团队被软件开发的焦油坑所吞噬。

作者首先介绍了变成系统产品的演进,指出程序、编程系统、编程产品、编程系统产品几个概念间的区别,其中只有编程系统产品才是真正可用的面向用户的产物。

然后作者分别介绍了编程的乐趣和苦恼,当然这部分见仁见智,人类的悲欢毕竟并不相通。

人月神话
第二章作者主要介绍了软件开发项目在进度安排上经常出现的问题。也就是书名人月神话的出处。首先,由于我们对项目开发的进度估计过于乐观,我们估计出来的工作量通常会低于实际需要的工作量,尤其是对测试所需时间的安排常常是进度估算失误的重灾区,这应该是很多有经验的开发者会在估时的时候乘以一个固定的系数的原因(1.5 或者 2 甚至 3)。其次人员和时间的关系并非总是反比的关系,如果任务属于可以完全分解的理想状态话,是可能达到人员越多时间越少的反比效果的,但是,任务越复杂也就越难以分解,那任务中的沟通需求就会占用更多的时间,甚至可能导致人员越多,项目所需的时间越长。进而可以得出结论:当进度落后的时候,无脑增加开发人手可能并不能加快开发进度,甚至有可能导致进度更加缓慢。向进度落后的项目中增加人手,只会使进度更加落后,这也被成为 Brooks 法则。

外科手术队伍
基于上一章的结论:更大的队伍不一定能带来更快的开发进度,那么,问题来了,什么样的队伍才是合适的呢,小团队固然高效,但是你不能指望一个 20 人的小团队在合理的时间内去开发一套完整的操作系统吧?作者在这一章里给出了解决方案:将大项目合理地划分成更小的系统,各个外科手术队伍分别开发这些更小的系统。当然外科手术队伍只是一个小团队的方案,具体细节我认为已经不再具有很大的参考价值,但是精干的小型队伍这一理念仍然很有价值。

这里我联想到大企业病的问题,企业规模的扩大必然会导致人浮于事、效率低下的问题,于是如今一些大企业都会将企业的业务分割给各个小团队来负责,一个很著名的例子就是亚马逊的两个披萨的原则,有效地避免了大团队的导致的低效问题。

贵族专制、民主政治和系统设计
接上一章:短小精干的队伍带来了新的问题,如何对大项目进行合理的分割?这依赖于一个很重要的前提:概念的完整性,具体而言是指在项目的开发过程中,应该有一个一以贯之的明确的目标和清晰界定的范围,否则随着人员的变动和时间的变迁,这个项目可能会逐渐演变成四不像(我最近在参与的一个项目就是如此,人员的变动导致了项目功能、技术栈的变迁,项目的周期被极大地拉长)。而如何产生概念的完整性呢?答案是贵族专制,少数人决定一个概念并厘清边界,然后据此分割执行,否则人多嘴杂,必然会导致项目在讨论中变成奇怪的样子。

 

标签:神话,项目,编程,系统,读书笔记,队伍,进度,团队
From: https://www.cnblogs.com/ewqewq/p/17273661.html

相关文章

  • 《人月神话》——读后感3
    过去是怎么做的:  我只经历过两人组队和三人组队,我无法分辨当时的组队情况分工什么的是好是坏。为什么这样不好:  所以,这个问题我无法回答。我只能说,我们将各个题目分......
  • 人月神话读书笔记
    第1章:焦油坑大型系统开发就像一个焦油坑,很多强壮的动物都在其中挣扎。如果将一个“程序”提升为“产品”(意味着:通用化、测试、文档、维护)需要3倍的时间;如果将一个“程......
  • 人月神话读书笔记2
        在刚刚进入软件工程学习时,老师总会时不时向我们提起一些关于“软件项目开发的完成与增加人员的问题”这句话听起来通俗易懂,但实现起来却遇到了相当大的困难,这是......
  • 人月神话读后感1
    这本书虽然有做过一些细小的修订,用更新的思想进行扩充,但我还是认真阅读了这本书的第一版序言。其中,作者提到在很多方面,管理一个大型的计算机编程项目和其他行业的大型工程......
  • 《人月神话》——读后感2
    过去是怎么做的:  我总是写完全部的代码再进行测试。为什么这样不好:  如果bug很多,就会导致最后的提交时刻,要一次次的重复查找bug并解决,甚至推翻重写代码,这是致命且让......
  • 《人月神话》——读后感1
    焦油坑:过去几十年的大型系统开发就犹如这样一个焦油坑,很多大型和强壮的动物在其中剧烈地挣扎。他们中大多数开发出了可运行的系统——不过,其中只有非常少数的项目满足了目......
  • 读书笔记-《人月神话》-2
    对于软件本身的复杂性,作者得出的结论是,当前没有任何方法能使软件的生产率提高一个数量级。但作者并没有消极的接受这个结论。而是深入分析了软件复杂性到底是如何导致软件......
  • 《代码大全》 读书笔记1
    在王建民老师的推荐下,最近拜读了Codecomplete《代码大全》,这部大块头确实经典,涉及到了软件开发的方方面面。有点后悔没有早些阅读,值得推荐给还没读过的朋友。它并不是针......
  • 《用户故事与敏捷方法》读书笔记2
    书接上回,上回说到用户故事三要素,那么什么是一个好的用户故事呢?用户故事的编写准则 好的用户故事应该遵循以下的编写原则INVEST原则   Independent......
  • DDD读书笔记
    《DDD实战-欧创新》DDD是什么?“DDD是一种指导思想和方法论,指导拆分复杂业务、划分边界和建设领域模型,并最终指导微服务系统建设落地(draft)”如何使用DDD“使用......