什么是MMM
首先,我想解释布鲁克定律的背景。是什么让他在1975年创建的?
人工月是假设的工作单位,代表一个人在一个月内完成的工作;布鲁克斯定律说,不可能以人工作月来衡量有用的工作。
来源:https : //zh.wikipedia.org/wiki/The_Mythical_Man-Month
过去,复杂的编程项目将意味着庞大的整体系统。Brooks声称,如果没有开发人员之间的交流,也没有在任务和执行任务的人员之间建立一套复杂的相互关系,就无法将这些任务完美地划分为多个任务。
在高度凝聚力的软件整体中,这是非常正确的。无论完成多少解耦,大型整体仍然需要新程序员学习该整体所需的时间。以及增加的通信开销,这将消耗越来越多的可用时间。
但是真的必须这样吗?我们是否必须编写巨著并将通讯渠道保持n(n − 1) / 2
在n
开发人员数量在哪里?
我们知道有一些公司,成千上万的开发人员正在从事大型项目……而且它确实有效。因此,自1975年以来,一定有一些变化。
减轻MMM的可能性
2015年,PuppetLabs和IT Revolution发布了2015年DevOps状态报告的结果。在该报告中,他们集中于高绩效组织与非高绩效组织之间的区别。
高绩效组织显示出一些意外的属性。例如,它们在开发中具有最佳的项目截止日期性能。最佳的操作稳定性和可靠性。以及最佳的安全性和合规性记录。
报告中突出显示的令人惊讶的事情之一是“每日部署”指标。他们不仅测量了每天的部署量,还测量了每天的部署量/开发人员数量,以及在高性能组织中增加更多开发人员与非高性能组织中的开发人员的影响。
这是该报告中的图表-
而绩效低下的组织则符合“神话人月”的假设。高性能组织可以根据开发人员的数量线性扩展部署/日/开发的数量。
Gene Kim 在2016年伦敦DevOpsDays的精彩演讲中谈到了这些发现。
怎么做
首先,如何成为一个高绩效的组织?有几本关于这个问题的书,在这个答案中没有足够的空间,所以我只链接到它们。
对于软件和IT组织而言,成为高性能组织的关键因素之一是:注重质量和速度。
例如,沃德·坎宁安(Ward Cunningham)将技术债务解释为我们允许未解决的所有问题。这是管理层所接受的,因为它总是带有在有时间时将其修复的承诺。
没有足够的时间,技术债务只会变得越来越糟。
这些是什么导致技术债务增加的?
遗留代码正如Michael Feathers 在《有效使用遗留代码》中所定义的那样,它是没有自动测试的任何代码。
任何时候都使用快捷方式将代码投入生产;运营负担将永远维持下去。然后,部署过程变得越来越长。
吉恩在演讲中讲述了一个有关公司部署了六周时间的故事。涉及成千上万个极易出错的繁琐步骤,绑架了400人,他们每年将这样做四次。
DevOps的宗旨之一是可靠性来自更频繁地进行较小的部署。
例
这两个演示展示了亚马逊为减少将代码部署到生产所需的时间而做的所有事情。
根据Gene的说法,在这些高绩效组织中,唯一会随着时间变化的是开发人员的数量。因此,以亚马逊为例,您可以说他们在四年中仅通过增加人员就将部署增加了十倍。
这意味着在一定条件下,采用正确的体系结构,正确的技术实践,正确的文化规范,开发人员的生产力可以随着开发人员数量的增加而扩展。DevOps绝对处于所有这些中间。