理想情况下,Scrum团队能完全不受干扰地实施Sprint工作。产品负责人永远不会引入变更,客户永远不会提出紧急需求,用户也永远不会发现任何缺陷。
尽管团队都渴望能有一个不受干扰的Sprint环境,但大多数团队都无法独善其身。绝大多数Scrum团队确实得在Sprint中处理各类干扰。
如果只需将团队迭代的5-10%用于处理干扰,并不会给团队带来太大问题。
但某些Scrum团队受干扰的程度要频繁很多。并且有时侯,这就是他们工作环境的固有特性。在Sprint计划会议上,这些团队通常会在计划中加入一定量的缓冲。(我已经在本博客中专门写作叙述过此事。)
除了在Sprint中规划缓冲外,那些容易受干扰的团队还应在Sprint中跟踪缓冲使用情况。
本人使用缓冲的案例
可以将缓冲视为Sprint中允许的干扰应对预算。同财务预算一样,您也不会想要在干扰应对中超出预算。为了确保不发生这种情况,一种好的做法是:定期对比到当前时间为止已使用的预算和应使用的预算。
我毕业后第一份工作的薪水并不太高。但只要我小心使用,仍然是够的。在拿到月薪的第一周,我很兴奋,觉得自己有能力做一个不错的晚餐。通常意味着要吃鸡胸肉和沙拉,甚至有时候我会烤牛排。
不过到月底时,我已经把鸡胸肉和沙拉换成了42美分一盒的通心粉和奶酪粉。
我应该每周评估食物开支。如果第一周过后,只花了四周食物预算的四分之一,我就会自我感觉良好。但如果第一周花了35%的食物预算,我就会在月中尽早缩减开销,以缓解缺口。
缓冲流失
敏捷团队可以采用类似方式来跟踪缓冲使用情况(这些缓冲应该在Sprint计划中进行预留)。
跟踪缓冲使用(或者说“缓冲流失”)很有用,因为其有助于进行缓冲使用的决策。
例如,假设Sprint周期为十天,而团队正处于Sprint第五天。也就是说,团队已走过了50%的Sprint日历时间。进一步,假设团队已使用了80%的缓冲。在这种情况下,在是否允许更多变更进入冲刺时,产品负责人应该严守规则。
换种情况,如果在十天Sprint的第五天,团队只用了20%的缓冲;那么产品负责人就能更加宽容地对待Sprint变更,当然前提是团队有望按时达成Sprint目标。
可视化缓冲流失
您能通过绘制缓冲使用图,来改善缓冲管理。最简单的方式是使用如下图所示的简单图形:
上面的长条显示的是:团队已经进入当前迭代的天数。在本案例中,已进入本迭代五天(在中点),因为10格中已有5格变蓝。
下面的长条表示:已经消费了多少缓冲。在本案例中,已经消费了62%的缓冲。由于团队在迭代中点就已经消费了超过一半的缓冲,产品负责人是时候开始积极抵制对本迭代的变更添加了。
在另一个案例中,显示了相反的情景。如下图所示,团队已进入迭代7天而预留缓冲只使用了37%。在之后几天里,产品负责人会更愿意接受变更(假设团队能按计划达成其冲刺目标)。
考虑到敏捷团队的迭代较短,因此在大多数情况,这种简洁的可视化手段都是适用的。但如果团队使用了长周期的Sprint,或许您会想要可视化整个Sprint过程中随时间推进的缓冲流失情况。
可视化缓冲随时间的流失
要可视化缓冲随时间的流失情况,请创建类似下面的图。与前面的图一样,迭代的天数显示在横轴上。但是在本图中,添加了纵轴,用于显示已使用缓冲的百分比。
接下来,绘制一条线段,用以显示迭代每天的缓冲使用情况。在本案例中,在第1天和第2天结束时,已使用了大约11%的缓冲。到第6天结束时,已使用了50%的缓冲。
只要您愿意,还可以像我一样通过添加红色、黄色和绿色区域对图进行扩展。红色区域表示缓冲使用过量——过早使用了过多的缓冲。
绿色区域则表示相反。黄色区域则表示团队处于正轨。
请注意:我将黄色区域绘制为缓冲的20%甚至更少。这反映了应对不确定性的缓冲是无法精确实施的理念。(当然不可能精确!)
有些成功的迭代使用的缓冲可能会稍微超过预留量,而有些迭代则可能低于预留量。我们的目标应该是追求平均值的正确,而不是关注每个迭代都要达到准确的百分比。
尝试一下,或许也可以不用20%(我这里使用的)而去用其他的数值。但20%会是一个好的起点。
该预留多少缓冲?
您要预留的缓冲大小完全取决于您团队的情况。与不太受打扰的团队相比,经常受打扰的团队应该预留更大的缓冲。
在确定缓冲大小时,您还应该考虑缓冲超出预算的含义。如果极其看重团队是否能达成其承诺的Sprint目标,那么您可能需要多预留一些缓冲。
不过,确定缓冲大小的最好方式是:简单而有根据地估计缓冲大小,并运用该缓冲来运行几个迭代,再根据经验进行调整。
您的经验是什么?
您的团队是否会使用缓冲来帮助达成冲刺计划?如果会使用缓冲,他们是如何管理和跟踪缓冲使用情况的?请在下面的评论中分享您的想法。
作者:Mike Cohn
译者:李洁(Jerry Li)
原文链接:
https://www.mountaingoatsoftware.com/blog/managing-sprint-interruptions-by-tracking-buffer-use