20%时间的主要原因是将容量利用率保持在80%而不是100%。
您可以将软件开发组织视为将功能请求转换为已开发功能的系统。您可以使用排队论对其行为建模。
理论
如果请求到达的速度快于系统可以为它们提供服务的速度,则它们会排队。当到达速度较慢时,队列大小会减小。由于到达和服务过程是随机的,因此队列大小随时间随机变化。
从数学角度讲,可以问这种“随机性”:必须有一些概率分布,那么队列大小平均将是多少?数学(排队论)对此有一个答案:如果到达和服务过程都是马尔可夫,则N = rho ^ 2 / /(1-rho)。
(其中rho是等于服务率和到达率之比的利用率。如果过程不是Markov,则数学过程更为复杂,但不会更改结论。)
如果绘制此函数,则可以看到平均队列长度在利用率高达0.8时保持较低,然后急剧上升并达到无穷大。您可以通过考虑计算机的CPU来直观地理解这一点:当计算机的利用率接近100%时,计算机将变得无响应。
实践
软件开发的经济性使得当排队处于排队状态时,软件公司会付出高昂的成本。这包括错过的市场机会,过时的产品,过时的项目以及因预期需求而造成的建筑特征造成的浪费。
因此,20%的时间是对优化经济成果的问题的科学解答:通过避免高利用率来避免导致高排队状态。本质上是使系统保持响应能力的懈怠。
紧随其后的是一些实际结论:
- 如果您正在考虑20%的时间并进行成本核算(开发人员的时间成本为X,但是/并且公司可以/无法承受),那么您就做错了。
- 如果您将每周的20%分配给星期五,那么您做错了
- 如果您要设置20%的时间的项目建议书提交/审核/批准系统,那您做错了
- 如果您填写时间表,那说明您做错了
- 如果您将创新作为激励因素使用了20%的时间,那您做错了。尽管有20%的项目推出了新产品,但这并不是重点。如果您的公司在核心时间内无法创新,那就成问题了!
- 20%的时间与创造力无关。不要说您将用20%的时间释放自己的创造力,请问为什么您在核心时间内还没有足够的创造力。
意见中的答案
丹,您说对了,并准确地描述了许多人所犯的错误。您无法选择利用率,因为它是一个输出变量。它是两个过程的特征之比,所以它是正确的,因为这些过程就是它们的样子。组织确实对这两个过程都有影响力;能力和需求的匹配是精益软件开发知识体系所要解决的难题之一。利用率是衡量组织中此问题的能力的指标之一。随着您精益计划的进行,会出现松弛现象,并从价值流中消除浪费。但是,如果您指定20%的时间,则最终将陷入可用容量较少的同一利用率陷阱。
金,这仍然是部分文化的事情。我能想到的最接近的文化参考是所谓的组织变革的马歇尔模型的协同作用水平。它出现在成功的精益转型的末尾,或者出现在从一开始就建立精益的组织中。(这是Bob Marshall的白皮书(PDF)的链接。)
参考资料
在软件工程文献中很好地支持了以上逻辑。Mary和Tom Poppendieck在2006年的《实施精益软件开发》一书中对此进行了暗示。唐纳德·赖纳森(Donald Reinertsen)在其2009年的《产品开发流程原理》(第3章)中通过公式和图表对这一主题进行了深入的研究。