【AICon】 如何构建高效的 RAG 系统?RAG 技术在实际应用中遇到的挑战及应对策略?>>> 了解详情
写点什么

Volcano:为多个团队和产品的工作排优先级

  • 2016-10-08
  • 本文字数:3315 字

    阅读完需:约 11 分钟

正确地确定事情的优先级总是一件非常困难的事。有好几件事要做,该先做哪件?为什么呢?我们以前一直用 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 就应该按下面步骤去做:

  1. 召开例会(我们是每周一次),让所有相关人都坐在一起,讨论 Volcano 中的内容,并决定该把哪些任务挪到“Next”一节中。
  2. 当某个团队完成了一个故事(人手富余)时,就让他们从“Next”一节中再拿出一个任务来,把它放到空的泳道中作为一个进行中的活动。这时候“Next”中就会出现一个空位置,没关系,只要在 1)中所说的例会能定期召开就没关系,但注意千万不要让整个“Next”一节完全空掉。
  3. 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

2016-10-08 18:322083
用户头像

发布了 152 篇内容, 共 67.5 次阅读, 收获喜欢 62 次。

关注

评论

发布
暂无评论
发现更多内容

作业帮 x TiDB丨多元化海量数据业务的支撑

PingCAP

数据库 TiDB

掌上新闻随心播控,HarmonyOS SDK助力新浪新闻打造精致易用的资讯服务新体验

HMS Core

HarmonyOS

教你用Rust实现Smpp协议

华为云开发者联盟

rust 开发 华为云 华为云开发者联盟 华为云短信服务

“分布式透明化”在杭州银行核心系统上线之思考

PingCAP

数据库 TiDB 银行业

关于ERPNext的树形结构研究

麦兜

vue项目中package.json的个人见解

百度搜索:蓝易云

Linux 运维 Vue 云服务器 package.json

STL算法大全

百度搜索:蓝易云

c++ 云计算 Linux 运维 云服务器

fastposter v2.18.0 一分钟完成开发海报-云服务来袭

物有本末

海报编辑器 海报生成 海报小程序

0-overlay和underlay,这两种容器网络你分得清吗

华为云开发者联盟

容器 开发 华为云 华为云开发者联盟 云容器网络

一篇文章彻底搞懂 TiDB 集群各种容量计算方式

PingCAP

数据库 TiDB

网安训练营 毕业总结

李某人

Django数据库类库MySQLdb使用详解

百度搜索:蓝易云

数据库 django 运维 云服务器 mysqldb

php所有函数总结

百度搜索:蓝易云

Linux 运维 前端 HTTP 云服务器

uniapp的u-album组件自定义删除功能

百度搜索:蓝易云

uni-app Linux 运维 云服务器 album

听 GPT 讲 client-go 源代码 (3)

fliter

第七周作业

大肚皮狒狒

深入理解HTTP请求的五个要点

百度搜索:蓝易云

云计算 Linux 运维 HTTP 云服务器

通过 Prometheus 编写 TiDB 巡检脚本(脚本已开源,内附链接)

PingCAP

数据库 TiDB

OpenAI 推出的文生视频 Sora,目前 AIGC 视频的天花板,会让多少公司望而生畏?

派大星

Open AI

第八周作业

大肚皮狒狒

4 月 9 日至 4 月 10 日,Hack.Summit() 2024 首聚香江

TechubNews

第八周作业

大肚皮狒狒

使用 Coze 搭建 TiDB 助手

PingCAP

数据库 TiDB

一文搞懂设计模式—观察者模式

码农BookSea

Java 设计模式

听 GPT 讲 client-go 源代码 (4)

fliter

华为云GES助力九洲平台:探索确定性运维的新实践

华为云开发者联盟

开发 华为云 华为云GES 华为云开发者联盟 确定性运维

4K Star,强大的实时监控告警系统

GitHub指北

想设计一个高并发的消息中间件前,先熟悉一下这些知识点

华为云开发者联盟

开发 中间件 分布式架构 华为云 华为云开发者联盟

听 GPT 讲 client-go 源代码 (1)

fliter

架构误区系列19:Big API

agnostic

架构设计实战

第二十二周作业

大肚皮狒狒

Volcano:为多个团队和产品的工作排优先级_语言 & 开发_Tomas Rybing_InfoQ精选文章