我把5张餐桌摆成一条线,然后拿着那20枚硬币坐到最外面的桌子旁,对开发团队众人说:“咱们现在玩翻硬币游戏啦。我需要4个角色:业务分析、开发、测试和运维。你们谁愿意当业务分析师?”
“我来!我早干腻了测试了!”雪立刻答应道。
“好!你做那头第一张桌子。”我指着最靠近里面的那张桌子示意雪坐下,“谁愿意当开发?”
“我当!过把写代码的瘾!”蓝抢着回答,然后挨着雪边上坐下。
“谁愿意当测试,挨着蓝坐?”我接着问。
“我当测试!测试一定比运维有意思多了。”山挨着蓝坐下了。
“好了发你没得挑了,挨着我坐当运维吧。”我笑嘻嘻地拉着发在自己身边,接着说,“我当用户。“
看到众人都坐好了,我请发把20枚硬币传给另一头的雪,然后从包里拿出一个夹子、纸和笔,画了下面的表,立在桌上。
业务分析师(雪) | 开发工程师(蓝) | 测试工程师(山) | 运维工程师(发) | 用户(我) |
---|---|---|---|---|
20枚硬币 |
“下面我要介绍一下这个游戏的规则,请各位把手机掏出来,调出秒表的功能。”我也掏出了手机,“这个游戏模拟咱们的工作流程,工作从业务分析开始,每个角色完成后就把工作往下游传递,依次传给开发、测试、运维,最后交付给我这个用户。”
“工作是什么呢?”蓝问。
“工作就是翻20枚硬币,只能用左手一枚一枚地翻,不能两手同时翻。把20枚每枚都翻完一次后,就算完成工作,可以传给下游了。”我说。
“怎么计时呢?”雪问。
“每位只计自己翻硬币的时间,不用记别人的。从自己翻第1枚开始,到自己翻完第20枚为止。我作为用户也计时,从业务分析师翻第1枚开始,到我收到第1枚和最后1枚为止。”我说。
“第1枚和最后1枚?如果是20枚一起传给你,那岂不是两个时间是一样的?”山转着眼珠说。
“对,这一轮咱们是20枚一个批次往下传,所以这两个时间是一样的。”我说,“还有问题吗?翻硬币时不要着急,按照你最舒服的速度翻就行了,别搞得像赶火车似的。没有问题的话就准备好手机秒表,别忘了计时,我数3、2、1就开始了。”
雪把20枚硬币摊在面前,众人都准备好了手机秒表。
“3……,2……,1,开始!”我和众人都按下了秒表。雪开始一枚枚翻硬币,由于过度紧张,有一个硬币差点滚到地上。20枚翻完后就传给蓝,蓝直接伸出两只大手一起翻,让我给及时制止了:“只能左手一只手翻!”20枚硬币很快翻完,传给了山,又传给了发,最后到了我面前。“上线!”我按完秒表的停止键后欢呼道,“各位报一下时间吧。业务分析,24秒;开发,22秒;测试,18秒;运维,22秒;我这边第1枚和最后1枚都是103秒。”
我更新了一下夹子上的时间。
轮数 | 业务分析师(雪) | 开发工程师(蓝) | 测试工程师(山) | 运维工程师(发) | 用户(我)第1枚/第20枚 |
---|---|---|---|---|---|
第1轮(20枚/批) | 24秒 | 22秒 | 18秒 | 22秒 | 103秒/103秒 |
“好,把硬币给雪,咱们玩第2轮。这一轮咱们10枚一个批次玩。雪还是像以前那样翻硬币,但翻完第10枚后,就可以把这10枚传给下游,然后再继续翻剩下10枚。下游每位也是同样10枚一个批次往下传。注意每位计时还是一样,从自己翻第1枚开始,到自己翻完第20枚为止。我作为用户的计时也是一样,从业务分析师翻第1枚开始,到我收到第1枚和最后1枚为止……”我还没说完,山恍然大悟:“啊,这次你的第1枚和第20枚时间就不同了!”
“对!”我向山竖起了大拇指,“没有问题的话就准备好手机秒表,3……,2……,1,开始!”
不一会儿,我把第2轮的时间在夹子上更新了。
轮数 | 业务分析师(雪) | 开发工程师(蓝) | 测试工程师(山) | 运维工程师(发) | 用户(我)第1枚/第20枚 |
---|---|---|---|---|---|
第1轮(20枚/批) | 24秒 | 22秒 | 18秒 | 22秒 | 103秒/103秒 |
第2轮(10枚/批) | 24秒 | 24秒 | 26秒 | 26秒 | 50秒/65秒 |
“好,再把硬币给雪,咱们玩最后一轮。这一轮咱们1枚一个批次。雪还是像以前那样翻硬币,但每翻完1枚就可以立即传给下游,然后再继续翻剩下的硬币。下游每位也是同样1枚一个批次往下传。每位计时还是一样,从自己翻第1枚开始,到自己翻完第20枚为止。我作为用户的计时也是一样,从业务分析师翻第1枚开始,到我收到第1枚和最后1枚为止。有问题吗?没有问题的话就准备好手机秒表,3……,2……,1,开始!”
硬币飞快地在众人之间传递。很快,我把第3轮的时间更新在夹子上了。
轮数 | 业务分析师(雪) | 开发工程师(蓝) | 测试工程师(山) | 运维工程师(发) | 用户(我)第1枚/第20枚 |
---|---|---|---|---|---|
第1轮(20枚/批) | 24秒 | 22秒 | 18秒 | 22秒 | 103秒/103秒 |
第2轮(10枚/批) | 24秒 | 24秒 | 26秒 | 26秒 | 50秒/65秒 |
第3轮(1枚/批) | 41秒 | 47秒 | 46秒 | 45秒 | 8秒/53秒 |
启示
“好啦,游戏环节结束。现在该分析这张有意思的表格啦。”我让众人围拢过来坐在一起看夹子上的表格,“先看最后一列,当20枚一批传递时,用户收到第1枚和第20枚都是103秒;当10枚一个批次传递时,用户收到第1枚需要等50秒,收到20枚需要等65秒;当1枚一个批次时,用户只用等8秒就能收到第1枚,只用等53秒就能收到20枚。我问大家,用户同样是收到这20枚硬币,为什么1枚一个批次会比20枚一个批次要快近1倍?”
“因为20枚一个批次,当雪在翻时,后面的人都在等嘛!”蓝说。
“嗯,看人是不是在等待是一个不错的思路。但能不能换个角度来看变快的原因呢?”我环顾大家,看到大家都在滴溜溜转动眼珠思考不说话,就不紧不慢地继续说,“能不能从硬币的角度看?”。
“啊,对呀!当20枚一批时,当雪翻完第1枚后,第1枚就在等;当他翻完第20枚后,前20枚也都在等!”山兴奋地转着眼珠说。
“是呀!当1枚一批时,每个人翻完1枚就能往下传,每枚硬币都没在等,所以速度快了1倍!”发补充道。
众人恍然大悟。
“这能给我们什么启示?至少有两点。第一,把关注的视角从人转移到价值上,与其关注‘让人忙起来’,不如关注‘让价值流动起来’。第二,把大批量拆成可以独立上线的小批量,串行地持续交付,能减少价值在中间环节的等待时间,从而加快整体交付速度。这里我为什么要强调‘串行’和‘交付’呢?”我问。
“因为如果是并行地做多件事,就好比硬币的批量在增加,就慢了嘛,所以要强调‘串行’。如果小批量不能尽快交付给用户,那硬币也会在某个中间环节发生等待,也会变慢,所以要强调‘交付’。”发说。
“赞!”我向发伸出两个大拇指。
“别忘了三次玩儿之间每个角色各自的时间变化。”发提醒我。
“对,我差点忘说了。”我说着把山那列的时间又给描粗了一下。
轮数 | 业务分析师 | 开发工程师 | 测试工程师 | 运维工程师 | 用户第1枚/第20枚 |
---|---|---|---|---|---|
第1轮(20枚/批) | 24秒 | 22秒 | 18秒 | 22秒 | 103秒/103秒 |
第2轮(10枚/批) | 24秒 | 24秒 | 26秒 | 26秒 | 50秒/65秒 |
第3轮(1枚/批) | 41秒 | 47秒 | 46秒 | 45秒 | 8秒/53秒 |
“同样是山,同样是翻20枚硬币,为什么第3轮的工作效率最低?”我问。
“因为翻一枚传一枚需要切换时间。”山说。
”对。不仅是你,大家的工作效率在第3轮都是最低的。但每个人都用如此低的工作效率,却令用户享受到快了近一倍的交付速度,这又给我们什么启示?“我问。
众人又陷入沉思。
”这是这个游戏给我们的第三点启示——与其关注局部指标,不如关注全局指标。如果反过来只是追求局部优化,比如20枚一批连续翻会提升局部指标,但用户却要慢近一倍的时间来收到产品,得不偿失。”我说。
“啊!下次我和项目经理沟通项目进度,就不提你们每天的工作小时数和出勤率了,我只告诉她全局指标。”蓝一拍胸脯信誓旦旦地说。
“噢耶!”众人欢呼起来。
“要想让全局指标好看,必须要把批量减小。比如咱们这次‘商品’和‘订单’两个特性在一起上线就批量太大了,最好串行地一个个上线。比如先上线‘商品’。”我说。
“好主意,我明天就去改计划。”蓝迫不及待地拍着桌子说。
“除了这三点启示,还有其他启示吗?”我接着问。
众人又开始转动眼珠。
“如果咱们玩游戏的时候没有用秒表计时,还能得出上面的启示吗?”我问。
“持续度量!除此之外小批量交付还有两点启示——批量小就便于定位和修复软硬件缺陷,有助于提升产品质量;批量小还能尽早让用户使用已经交付的那部分功能,以便尽早验证新功能是否有价值,这样就能知道‘商品’功能是不是有价值。”发一边说,一边把写有那六条启示的便签放到大家面前。
翻硬币游戏启示
启示一:价值流动高于人在忙碌。把关注的视角从人转移到价值上,与其关注“让人忙起来”,不如关注“让价值流动起来”,从而真正提升整体效能;
启示二:小批上线速度快。把大批量拆成可以独立上线的小批量,串行地持续交付,能减少价值在中间环节的等待时间,从而加快整体交付速度;
启示三:全局指标高于局部指标。优化局部指标往往会导致损害全局指标,得不偿失;
启示四:没有度量,就没有改进。
启示五:小批便于缺陷定位。小批量交付使得软件变动少,便于定位和修复软件缺陷,有助于提升产品质量;
启示六:小批便于尽早反馈。小批量交付还能尽早让用户使用已经交付的那部分功能,以便尽早验证新功能是否有价值,尽早获得反馈,尽早进行改进。
“今晚太有收获了!看来小批量交付能解决咱们所面临的‘开发慢、质量差、价值不确定’的问题。可惜项目经理没来。我打算根据这些启示修改一下咱们的上线计划,比如把批量减小串行地上线,设定新的全局指标来度量价值的流动。明天咱们可以一起开会讨论一下,然后再找项目经理谈。”蓝兴奋地对众人说。