前言
在上一篇文章中提到了一些估算的基本原则,包含了:1. 应该在决定谁做之前估
2. 应该由做事的人一起估,请 PO 参与估算过程,但不干涉实际估算
3. 相对比较,比绝对估算来得简单
4. 公开、透明、容易达成共识
在 Scrum 的估算过程中,绝大部分都是建议使用 Planning Poker 来让团队每个成员进行估算。虽然 Planning Poker 的使用方式相当简单,但对于第一次接触 Scrum 或 Planning Poker 的团队,往往会产生一些摸不着边际或尴尬的场面。大家不晓得到底该怎么比较,比较的基底为何?我这样估会不会跟大家不一样,不一样时是不是应该从善如流,下一次就跟大家估一样?当估得比其他人高时,是不是我就显得能力比较弱?
这些疑惑,会使得团队成员不容易享受于轻松轻快的估算流程,而影响了团队的节奏。因此,本篇文章将介绍一个简单的游戏:Dog Point。透过把软件开发中的 story 转换成小狗的情况,来帮助大家了解估算的运作方式、意义。从游戏中学习效果最好,这也很适合当在团队刚成立时 team build 的活动。这样的方式适用于:
• 团队成员尚未使用过 Planning Poker,预计开始导入这样的估算方式• 使用 Planning Poker 时觉得有点卡卡顿顿的
• 想尝试看看新的估算方式
Dog Point 原则一:「相对比较」要比「绝对估算」来得简单且容易有共识
主持人:「这只吉娃娃有多大呢?」
这个问题,就像 PO 问开发人员:「这个需求需要花多少时间完成呢?」
开发团队每个人的答案可能都不一样,也因此这样的估算不容易达成共识。
当我们换个方式,透过相对比较的方式来比较大小时,往往容易达成共识。

[注]当然在某些比较的情况下,还是可能出现有一半的人觉得左边的狗比较大,另一半的人觉得右边的狗比较大。这时其实只是代表,这两只狗的大小差不多一样大,他们之间的差距几乎可以被忽略。
Dog Point 原则二:「粒度小」的估算比「粒度大」的估算精准且容易有共识
主持人:「要做出这架纸飞机,你觉得需要花多少时间呢?」
主持人:「如果是要做出这架战斗机,你觉得需要花多少时间呢?」

「纸飞机」跟「战斗机」的估算,哪一个比较精准?比较有信心?大家估算的误差比较小呢?

可以发现绝大部分的人认为,任务粒度较小的估算,团队成员之间估算出的误差较小,且也比较容易达成共识。
Dog Point 原则三:估算单位以「费氏数列」为参考
因为估算过程是整个团队做事的人一起参与估算,且期望以全部人员达成共识才算估算完毕。所以,如果估算出来的数字不容易达成一致的共识,就会导致估算的过程冗长而没有效率。费氏数列在估算中有两个特性:
1. 第n个数字/第n-1个数字,趋近于 1.618,也就是每个级距基本上都差了 1.5 倍以上。
2. 越后面的数字,彼此之间差距越大。
举个例子来说,如果有两栋房子,分别是 1 层楼与 2 层楼,要比较它们谁比较高,通常不难,因为它们差了一倍的高度。 2 层楼与 3 层楼,也不难比较。但如果是 20 层楼跟 21 层楼,对一般人来说可能就开始不容易比较出大小,又或者是说相差这 1 层楼,对 20 层楼来说,影响或差距不大。
因此,当团队使用费氏数列当作估算单位的参考,有几个好处:
1. 当数字小时,即使取最大数,也不会对项目资源造成太大的影响,容易达成共识。2. 当数字大时,可以减少因为一点点数字的差异,而需重新估算所造成的会议成本。例如:要嘛 13 ,要嘛 20 ,要嘛 40 。不会在「18 与 20」或「40 与 44」之间僵持不下。
3. 如果团队估出的数字有两个级距以上,其差距往往可以大到「团队成员之间一定有信息落差」,这时请估最高与最低的成员讨论其看法时,往往可以让整个团队包含 PO 在内,获得最大效益,因为会获得团队之间的最佳解,或在这个时间点厘清 PO 真实的需求。
Dog Point Workshop 练习-Step 0 准备道具
邀请你的 Scrum team 成员参加,最好 PO 也可以一起参加,直接担任 PO 的角色。主持人则是 Scrum Master 的角色。
请准备好两样道具:
1. 准备 8-10 张(团队成员总数的 1.5 ~ 2 倍)不同种类的小狗图片,忽略顺序地迭成一迭。其中里面应包含「吉娃娃」,另外也可以准备一只看不出来是什么狗的图片,可以在 workshop 中练习连 PO 都说不清楚的需求。例如:
2. 准备好 planning poker ,可以自己依据费氏数列,自制几张小卡或使用便利贴填上数字即可。

这边用几个图示来简介整个活动的运行过程,首先是团队成员组成如下:

狗的图卡先以 4 张当简介:
Dog Point Workshop 练习-Step 1 比大小
结果:
Step 1 最后呈现的结果,是由团队决定出这些狗狗,由左至右、由小到大的顺序。例如:
规则:
• 将迭起来的狗狗图片(迭起来的顺序,可以由 PO 决定),从最上面第一张,一张一张的进行比较• 每个人轮流(PM除外),一次移动一张狗狗的图片
• 吉娃娃放在最左边
• 右边的狗要比左边的狗大
• 可以挪动既存在的狗狗图片,但一样一次只能挪动一张,且右边仍要比左边大
• 该狗无法进行比较时,请放到最右边
• 每张狗的图片都已经排列上去,且自己认为这样的大小顺序是符合自己期待时,喊出「Pass」
• 每个人都喊出「Pass」后,结束 Step 1
注意事项:
• 挪动既存在的狗狗图片时,请大声说出理由。因为这代表你与其他成员的认知产生差异。• 对狗有任何疑问时,都可以对你的 PO 提问。但请不要问「这只狗有多大」或是「这两只狗谁大」,而是问类似「这只狗平常的食量有多少?」、「这只狗年纪有多大?」、「这只狗是公的还是母的?」诸如此类可能可以用来评断狗大小的信息
• PO 只能说明跟回答狗相关的信息,不能干涉团队成员如何排列顺序
示范过程:
1. 先将吉娃娃放上来
2. Alice 询问下一张「腊肠狗」的相关信息,并判断腊肠狗比吉娃娃大,所以放到吉娃娃右边。
3. Bob 认为下一张的「西施犬」比「腊肠狗」大,所以放到「腊肠狗」的右边。

4. Cindy 看到下一张「大丹」的图片,问到这是算一只还是两只?PO 回答:这是两只。因此,Cindy 认为大丹应该是里面最大的,所以排到最右边。

5. David 认为,原本排第三的「西施犬」其实只是毛比较长,真要比较「腊肠狗」应该比「西施犬」大。

6. 当 Alice, Bob, Cindy, David 都认同这样由小到大的顺序,喊出「Pass」后,结束 Step 1。

Dog Point Workshop 练习-Step 2 排数字
结果:以 Step 1 的结果为基础,以吉娃娃为单位,在狗狗图片底下,依照 planning poker 的卡片,排出相对于「吉娃娃大小」的倍数。例如:
规则:
• 以「吉娃娃」为比较单位,所以吉娃娃对应的 card 为 1
• 每个人依照狗狗相对于吉娃娃的几倍大,一次摆放一张 planning poker 到对应的狗狗图片底下
• 一样可以挪动已经存在的 planning poker card ,但右边仍要比左边大
• 觉得这样的大小比例,已经符合自己预期时,可以喊出「Pass」
• 每个人都喊出「Pass」后,结束 Step 2
注意事项:
• 挪动既有 planning poker card 时,仍须大声说出理由。因为你的评估与其他成员不一样。• 不一定每一只狗狗底下都会有一张 planning poker card,以上面的例子来说,「黄金猎犬」就是介于 5~8 之间。至于要被归类为 5 ,还是归类为 8 ,只要团队有共识即可。
• 不一定每一张 planning poker card 都会使用到。
• Step 2 若对狗狗仍有疑问,仍可对 PO 提问,也可以挪动既有狗狗的顺序,但请符合 Step 1 与 Step 2 的规则。
示范过程:
1. 吉娃娃的单位为 1 。先将 planning poker 中 1 的 card 放到吉娃娃底下。
2. Alice 认为,「腊肠狗」是「吉娃娃」的 2 倍大。

3. Bob 认为,「西施犬」才是「吉娃娃」的 2 倍大。

4. 接着 Cindy 认为,那「腊肠狗」应该是「吉娃娃」的 3 倍大。

5. David 认为「大丹」比「吉娃娃」大 20 倍。

6. 在 Alice Pass 后, Bob 认为一只「大丹」应该就有「吉娃娃」的 20 倍大,这一张是「两只大丹」,所以应该把 20 改成 40 。

7. 在所有人都喊出 Pass 后,结束 Step 2 。代表这样的大小顺序以及比例,是团队一同的共识。

Dog Point Workshop 练习-Step 3 定义「吉娃娃」
最后的 Step 3 相当简单,还记得我们前面提到的准则吗?粒度越小的评估,误差越小,且越容易达成共识。团队只需要针对「吉娃娃」定义出绝对的复杂度或是对应绝对的工时,例如「吉娃娃」如果代表了一个「单表自定义查询」的 UI ,团队一致认为只需要「0.5 hr」即可完成,如下所示:
那么所有狗狗(或是 user story ,或是 task)的绝对大小,就可以依此推估出来。如下所示:
结论
Dog Point 的估算游戏,与前面提到的估算准则相呼应:• SPA:简单(Simple)、公开(Public)、容易有共识(Agreeable)
• 相对比较,比绝对估算容易。全部都是相对比较大小,绝对估算只有针对吉娃娃进行。
• 粒度越小的估算,越容易有共识,误差越小。吉娃娃是最小的单位,只针对它进行绝对的估算,可以节省时间、容易达成共识,后续推估出来的数字,也容易被团队接受。
最后,还是有几点要请读者们留意的部分:
• 在实务的 Scrum 估算中,建议要把 Dog Point 的 Step 3 放到最前面,也就是先由团队决定出何谓「吉娃娃」,这样后续在使用 planning poker 做比较与估算时,方能得知比较的基底为何。• 这样子推估出来的数字,当然仍有可能有误差,因为越大的数字,误差会等比例放大。但是,这样子估出来的数字,绝对是团队成员可以接受,且 PO 也从整个过程中得知,这些数字究竟是如何被讨论与决定出来的。
• 每个人都有表达自己想法的权利,每个人也都可以决定出自己想要的顺序或数字。不会有人放马后炮,不会有人被强迫接受别人估算的结果。
• 不管最后在实务上是对是错,这都是团队一起估算出来的结果,这是团队估算最重要的精神。如果这次 sprint planning 的估算,在 review 时发现有所误差,那么就在 retrospective 中提出来这个问题,并由团队共同决定出「该如何改善」这个问题,于下一个「sprint」中落实改善。
我再重复一次最重要的精神:「团队在当下,一起做出每个成员都可以接受的决定,那个决定就是当下的最佳解。」所有做事的人,都估出同样的数字时,即使这个数字跟实务上的执行有所落差,那也是团队一起认同、共同承担与接受的。
最后附上我在 2015 年微软实战课程日,针对 Dog Point 估算的演讲影片,里面的示范过程以动画呈现,相信能让读者更加有感。也期望这样的估算游戏,能帮助到许多团队在游戏中学习与体验 Scrum 估算的精神、准则与方式。