正确地确定事情的优先级总是一件非常困难的事。有好几件事要做,该先做哪件?为什么呢?我们以前一直用 Kanban 来排优先级,因为我们发现把事情可视化是非常关键的一步,可以让它们的优先级对比一目了然。慢慢地在 Kanban 用熟了之后,我们越来越发现我们需要有办法来为多个不同的产品及多个不同的团队排优先级。后来,我们在优先级金字塔中增加了“泳道”,于是Volcano就诞生了。
Volcano 的优点
Volcano 的优点列举如下:
- 为多个团队的工作排优先级;
- 为多个产品的工作排优先级。如上图所示,产品 A、B、C 的工作被放到了三条“泳道”中;
- 将不同产品之间的人力分配关系可视化;
- 将不同产品的工作之间的优先级可视化。比如,从那些贴纸之间的相对位置就可以看出,有两个产品 A 的贴纸比产品 B 的最高的贴纸还重要;
- 这是一个公司级的 Kanban 陈列板,可以把整个公司的价值链都展示出来;
Volcano 的缺点是它需要占非常大的地方。在“控制室”里我们把三个正常大小的白板(1.4 米 *1.6 米)拼在了一面墙上。而且,要把 Volcano 做为一个在线的 Kanban 工具实现出来也非常困难,但我知道至少可以实现出一部分 (比如在 Favro 中) 功能。
咱们看看中间部分的 Volcano 的样子
工作优先级等级
在水平方向 Volcano 被分成三个不同的优先级等级:
- “Next”:放在这个等级中的工作就是团队接下来要做的事了。所有的工作都必须已经准备就绪,处于一种团队可以立刻开始做的状态,比如你可以引入一些清晰易懂的 DoD(完成的定义,Definition Of Done)。对于工作任务来说,必须达到一系列的标准(比如定义好的 DoD),才能移到“Next”中。
- “Soon”:放在这个等级中的工作是很快就要开始做的。可以在贴纸上用文字简单写下一些想法。但是,如果要把这些贴纸挪到“Next”中,就必须达到上面所说的标准才行。
- “Later/Maybe”:我们把那些以后可能会做也可能不会做的工作放在这个等级中。和“Soon”级别中的工作一样,描述这个等级的工作时也不用太详细,把它们写在这里只是做个备忘。
产品之间的优先级和人力分配
在垂直方向 Volcano 被分成多个“泳道”,每个要做的产品都会独占一条泳道。泳道的宽度就可以表现出不同产品之间的人力分配对比。比较窄的泳道就表明分配给它的人力相对较少,而比较宽的泳道就表明分配给它的人力相对较多。在上面图中所有的泳道宽度都是相同的,表明三个产品占用的人力是差不多的。
如图中的四个箭头所示,当工作流出 Volcano 之后,就会进入各个团队各自的 Kanban 板中。当一个团队完成了一个工作项,相应的泳道空出来之后,就代表相应的团队有人手做别的事情了,于是可以从 Volcano 中再拿出一个新的工作项出来,放到空闲的泳道中,作为当前正在开展的工作。当每个工作项的工作量都差不多时这种方式可以工作得最好。在这里我们把它们叫做“故事”,用大一点的贴纸来表示。当团队开始做一个故事时,通常都要先召开一个计划会来把故事拆分成小任务(由相对小一点的贴纸来表示),把这些小任务放到 Kanban 板中不断移动。
团队的 Kanban 板
上图是四个团队之一的 Kanban 板,在这里是第三支团队,但实际上都差不多。接下来咱们看看其中都有什么内容。
迅速完成(快速泳道)
大家工作中总会碰到一些麻烦事,团队就不得不去做这些事先没有计划的事。为了尽量减少大家提到“我们在做一些板子上面没有列出来的事情”的机会,这种紧急任务也必须可视化出来,比如要紧急为一次销售演示做准备。因此我们专门设置了一条快速泳道,把它放在所有的正常泳道之上以表示出它的重要性。要注意放在这里的工作任务会导致所有其他正在进行中的工作任务的延迟,所以使用这条快速泳道一定要非常谨慎。要定下规矩限制对快速泳道的使用,比如快速泳道中不允许多任务并存、一个时间段只允许出现一个任务、或者一周最多出现一个任务……等等。
列(处理步骤)
在上图中显示出来的步骤有分析、设计、开发、测试和完成,任务是按水平方向推进的。这些列表明了研发流程中事情的推进步骤,所以你实际使用的步骤不一定要和上图中的例子一样。那你要选用哪些列呢?你可以挑选一些故事出来,然后按照你的流程讨论一下它们的发展路线,再根据发展路线做出选择。
泳道
这个例子中显示每个团队有三条泳道(水平方向)。这些泳道用于限制 WIP(同时进行的工作数,Work In Progress)。你的团队应该有多少条泳道呢?这要看你的团队规模和你想要有多大的产出率。
只用一条泳道意味着整个团队在同一时间只做一个故事,这样会让你的团队有最大的产出率。这叫“ Mob Programming ”。但在现实中这个不一定行得通,风险在于有些团队成员可能会没事干。
另一方面,如果你的团队里面有多少人你就设立多少个泳道的话,最终的结果就是团队中的每个人都在做自己的事情,就几乎无法表现得象一个团队了。
要给个建议的话,就是应该让泳道的数量少于你的团队成员的数量,通过这种办法来鼓励合作。我们是让两个人负责一个故事的,团队里总共有六个人,所以我们只有三条泳道(和上面的例子中一样)。
DoD (完成标准)
流程中的每个列(每个步骤)都要相应的准备一些 DoD,做为一个任务在移入下一个列之前必须达到的标准。你可以把它作为挪动任务所必须做的这样那样的事的一个检查表。用这个办法可以避免在任务还没有真实就绪时就被挪到流程中的下一阶段了。举个例子:
- 某甲:这个你测过吗?
- 某乙:测过,当然测过。
- 某甲:你写过自动测试用例了吗?
- 某乙:啊……没有哦。
- 某甲:那就请你写完测试用例,然后咱们再把它挪入下一阶段吧。
怎么使用 Volcano
要用好 Volcano 就应该按下面步骤去做:
- 召开例会(我们是每周一次),让所有相关人都坐在一起,讨论 Volcano 中的内容,并决定该把哪些任务挪到“Next”一节中。
- 当某个团队完成了一个故事(人手富余)时,就让他们从“Next”一节中再拿出一个任务来,把它放到空的泳道中作为一个进行中的活动。这时候“Next”中就会出现一个空位置,没关系,只要在 1)中所说的例会能定期召开就没关系,但注意千万不要让整个“Next”一节完全空掉。
- Volcano 中产品的泳道完全由产品负责人掌控。在任何时候产品负责人都可以增加任务,或者改变现有任务的优先级。但这仅限于在他自己的泳道中。在 1)中的例会上,大家要坐在一起协调不同产品之间的优先级。
Volcano 清楚的展示出了“什么”和“怎么”之间的区别。管理层决定该做什么,而开发团队则决定怎么去做。
收获
在使用 Volcano 之后我们收获了这样的经验:
- 我们把 Volcano 和一个可视化的计划放在一起使用。可视化的计划包括了我们的主要产品。我们定期(每周)地讨论可视化计划,然后把工作内容输入到 Volcano 中。对别的产品我们就用比较正式的流程,让产品负责人把泳道中填满工作内容。
- 如果所有的工作项耗时都差不多,那 Volcano 就可以发挥最佳作用,我们定下了个规矩,把大概 10 天的工作量作为一个故事。这样就可以让我们更容易确认优先级。理论上你可以把实现新功能和修复 BUG 都放进 Volcano 中,可实际上大家都会更喜欢去先完成短期的工作。
- 在每周一次的确定计划和优先级的例会上,我们都会更新 Volcano。一定要找到一个合适的主持人可以掌控好这样的会议,并且要让大家关于优先级的讨论可以有结果。这样的人要对各个产品都有深入见解。
总结
希望到现在你已经对 Volcano 是什么和怎么用好它有了不错的理解。Volcano 是一个非常好的为多个团队和产品排优先级的工具。如果你对我的其它可视化工作内容有兴趣,你可以看看下面这些:
- Priority Pyramid :优先级金字塔,这是个为你自己,或者一个规模比较小的团队的工作排优先级的非常棒的办法。
- The Arrow :如果你有产品需求列表和一个团队,那这个方法很不错。
- Product Radar :如果不想显示产品按时间表排列的路线图,那为什么不用用雷达?越靠近中心位置的东西,就越有把握在不久的将来你可以完成它。
关于作者
Tomas Rybing住在瑞典斯德哥尔摩,他从 1996 年就开始从事 IT 工作,最早是做为顾问和程序员。从 2007 年开始,他的注意力转移到了团队管理、项目管理、产品管理和开发方法上。他已经结了婚,并且有两个孩子。他的主要爱好是运动、音乐和旅游。你可以通过邮件、博客或 Twitter 联系他。
阅读英文原文: The Volcano - Prioritize Work for Multiple Teams & Products
评论