布鲁克斯定律:

人月=人*月,月≠人月/人

极端情况下,Brooks定律会出现这样的情况:“投入更多的人到一项延迟的工作上,可以导致该项工作更加延迟”。

Barry Bohem:可以将软件开发进度压缩25%,但是不能再多了
200/20/6X现象:
–人数增加1倍,工期缩短20%,缺陷增加6倍

反思:
–1 在实践中,我们是否经常通过给项目组增加人手的方式加快进度?
–2 有哪些合理的加快进度的措施?

定律分析

布鲁克斯定律(Brooks’Law)里面用了几个字眼“人、月”。是的,此布鲁克斯就是彼布鲁克斯,《人月神话》的作者。

投入更多的人到一项延迟的工作上,可以导致该项工作更加延迟!这句话一笔点破IT行业的项目延期情况,以及项目经理为之头疼的项目计划进度。希望更多的老板能知道此类的道理。

但是为什么这句话项目经理会有不同的意见?

这就是投入的是新人还是老人的问题。如果一个团队10个人,在某一个阶段10个人分组,扩建为两个团队分别做不同的模块,那么,在某优先级高的项目中,一个组5个人搞不定,临时从另外一个组凑掉2个人来做事。

因为实际上是老员工做老的模块,所以会给人一种增加人手就能快速推进工作的印象。

但是增加新员工,实际上对软件开发来说,是非常失败的东西,新人进团队,常见的问题如下:

1、新人需要上手学习
2、一开始的时候,需要老手去指导他,这个阶段,老手的工作效率实际上是降低的
3、如果没有代码规范,你要重新交给他,在此之前,他的工作输出是负面的。
4、各个模块的设计思路,空手借过来的代码,需要重读、在别人的思路上继续工作,甚至重构。
5、组内沟通成本会呈几何级数增大:四个人可能只需要开碰头会,十个人就要正儿八经的填写日报、周报——因为一个ltm的精力有限,跟控不过来。

6、项目经理分心在管理事务上:人数多了,可是现在可以让他们做的工作一下子没有这么多,项目经理得要想办法安排工作给这些人都有事做。以免出现部分人闲置部分人牢骚的现象。这样子反倒会让项目经理没有心思在真正该做的事情上。
7、如果有人没事做,就会很害怕自己被裁员,就会做一些看起来像是工作的事情。戒是做一些抵销工作进度的事情。

以上很多观点总结自《人月神话》:『Adding manpower to a late software Project makes it later.』引自The Mythical Man-Month.Chapter2 page25)

所以,增加新人的做法是失败的。增加原团队中的人,是比较流行的方法,同时,也给人很多错觉:增加人手,是可以缩短项目周期的!

200/20/6X现象:
–人数增加1倍,工期缩短20%,缺陷增加6倍
反思:
–1 在实践中,我们是否经常通过给项目组增加人手的方式加快进度?
–2 有哪些合理的加快进度的措施?

问题解答:

如果用一个例子来解释这种增加人手的方法。个人倾向于用篮球比赛。比如几年前的丹佛掘金,招来了AI,但是两个得分王并没有 把掘金的战绩提升上去。一个新人和已有团队的磨合,存在很大的风险点。

在实践中,增加老人和增加新人的区别在上文已经论述过,在此不再赘述。针对常规的情况,我们可以把四个维度的事情作为一个四个坐标点:时间(快)、成本(省)、目标(多)、质量(好)。

如何合理的加快项目进度?
在通常的情况下,项目出现延期,或者要提前完成。在投入更多人力无效的情况下。还有哪两种选择?

1、放弃质量,带着很多问题发布版本。
2、减小目标,调整需求范围,规划跟多的迭代版本,分期实现功能。

正常的选择就是“砍需求”,调整需求范围,能在短期内提供版本,供客户使用。

当面对deadline时,怎么操作项目,能一目了然的看出团队的成熟度,当然,更重要的是看出老板对软件行业的理解度。

关于项目进度:可以理解完成90%就等同于完成50%。即:90%的工作等于一半。

软件开发定律系列之布鲁克斯定律有感相关推荐

  1. 软件管理定律系列之布鲁克斯定律

    布鲁克斯定律: 人月=人*月,月≠人月/人 极端情况下,Brooks定律会出现这样的情况:"投入更多的人到一项延迟的工作上,可以导致该项工作更加延迟". Barry Bohem:可 ...

  2. 软件开发随笔系列一——分布式架构实现

    软件开发随笔系列一--分布式架构实现 文章目录 软件开发随笔系列一--分布式架构实现 理论基础 分布式架构的实现 内核框架 应用开发 基础设施 服务接入 监控 日志监控 调用链监控 度量指标监控 健康 ...

  3. 软件开发随笔系列二——关于架构和模型

    软件开发随笔系列二--关于架构和模型 文章目录 软件开发随笔系列二--关于架构和模型 软件模型 功能模型 概念层 边界 参与方 分组分类 逻辑层 功能组织图 层次.模块化 接口 流程模型 概念层 业务 ...

  4. PMP 管理学6大定律之五(布鲁克斯定律)

    1.定义: 为一个延误的IT项目增加人员,将导致更多的延误. 2.起源:     是IBM360计算机的另一个设计师布鲁克斯提出的,讲述了软件开发的一些制约因素.布鲁克斯定律说,任何软件的开发都有所谓 ...

  5. 软件开发解惑系列之五:内向性格不爱说话的同学,没有合适的工作方法是不行的

    做软件开发的从性格上来说有两类人:外向的.内向的. 不同的性格的人,具有不同的工作方式和方法,和生活习惯,对于软件开发这个职场环境来说,内向性格不是劣势,很多人外表看着外向,其实潜意识也有很多内向性格 ...

  6. 嵌入式物联网软件开发实战系列(STM32+FreeRTOS)

    一.使用STM32CubeMx 创建物联网项目软件工程 二.STM32CubeMx 配置时钟 三.STM32CubeMx 配置GPIO 及 GPIO 相关接口在软件工程中的形式及使用 四.STM32C ...

  7. 软件开发项目进度控制浅谈

    一.影响软件开发项目进度的因素 要有效地进行进度控制,必须对影响进度的因素进行分析,事先或及时采取必要的措施,尽量缩小计划进度与实际进度的偏差,实现对项目的主动控制.软件开发项目中影响进度的因素很多, ...

  8. 基于AUTOSAR规范的电机控制器软件开发

    基于AUTOSAR规范的电机控制器软件开发 本系列文章主要介绍如何开发符合AUTOSAR规范的电机控制器软件的详细过程. 全系类分为基础篇和实战篇:基础篇内简要介绍最新的AUTOSAR规范,嵌入式软件 ...

  9. 统治软件开发中的著名定律

    文| https://www.timsommer.be/famous-laws-of-software-development/ 翻译| 码农翻身 和其他领域一样,在软件开发的世界中也有一些有趣而著名 ...

最新文章

  1. PostgreSQL SQL 语言:并行查询
  2. 正则表达式中的*,+,?以及\w和\W的区别等常见问题的总结
  3. Java学习笔记(六)--字符串String类
  4. boost::callable_traits添加可变参数的测试程序
  5. 高仿真的类-ApplicationContextAware
  6. Dubbo的Provider配置
  7. 外挂学习之路(4)--- 大海捞针找call call const法
  8. 面试项目亮点_当面试官谈到项目经验的时候,你知道怎么回答吗?怎么反过来控制面试流程?...
  9. Javascript基础ppt
  10. 本地快速搭建FTP服务器
  11. matlab解方程 中det,matlab中det函数
  12. 金仓数据库KingbaseES与Oracle大对象类型之间的区别
  13. vue自定义组件总结
  14. Bioventus在马来西亚上市DUROLANE(R),并选中Athrotech作为独家经销伙伴
  15. Notepad++ 7.6(64-bit)安装Jsonviewer插件
  16. 微软牵手大疆打造先进无人机技术
  17. 《2022 数字时代|元宇宙产业发展高峰论坛》圆满落幕
  18. 华为畅享20 pro 和华为畅享Z 的区别 哪个好
  19. 好看的桑基图是如何炼成的!
  20. 查看进程及结束进程命令

热门文章

  1. javascript中match方法和exec()方法详解与深度区别(非原创)
  2. 初学__Python——Python数据类型之文件
  3. K Co-prime Permutation 构造,gcd,互质(2020.12.南京)
  4. python类和对象详解_Python公开课 - 详解面向对象
  5. JavaScript的常用工具汇总
  6. VsCode 配置 C/C++ 开发环境,真的很简单
  7. 新闻系统粗略说明文档
  8. 风吹来_梅花香自苦寒来!一组赏心悦目的梅花图……
  9. 模块计算机型x86yu,ldd3学习之九:与硬件通信
  10. 奔图内部扫描错误13_现代浏览器内部揭秘(第三部分)