敏捷开发一千零一问系列之三十八:计划扑克就是打不出个结果怎么办?

本文是敏捷开发一千零一问的第三十八篇。(栏目总目录

来源:提问帖 http://blog.csdn.net/cheny_com/article/details/7564388#reply 22楼

问题:

一个简单的问题,计划扑克就是打不出个结果,各持己见怎么办?也就是少数人无法说服大家,或者说根本无人去听

回答:

计划扑克的结束条件”近似一致“是个很有趣的标准,其实要回答”什么时候停止打扑克“,就要先解决”为什么要打扑克“的问题。

如果打扑克的目的已经达到,或者无法用打扑克达到,那么就可以停止打扑克了;至于相差很大的数字应该取多少,后面说。


首先,我自己其实是不打扑克的,因为我们用自己的方法解决了敏捷扑克要解决的问题,而且更快更好,所以就不打了。

先看看敏捷扑克能解决的问题:

1. 计划

这个……实际上谈不上,因为哪有真的一个月一个月做计划的项目和产品,早期肯定就安排好了,或者大致有个安排,现在才做已经无力回天。

2. 估工作量

这个稍微靠谱点,虽然早期有了计划,但是这个月想知道具体能做哪些,谁做多少合适,还是不太清楚的。

为什么不让项目经理或者高手估算了直接分配给新手呢?因为新手水平差别很大,高手的估算新手完不成。

这个时候,如果说“那就谁做谁估”,反而坏了。为什么呢?因为我本人见过很多新手与高手的工作能力差异,具体案例有11天变1天的,有2个月变2周的,有1个月变2小时的……还有一个项目,13人写了9年的19万行代码,被其中一个人1.5年1.3万行重写了。无论新手多便宜,这个代价还是太大了。

因此敏捷估算最好不是“估工作量有多少”的,而是“估最小工作量有多少”的,然后尝试让新手以最接近最小工作量的方式工作。看看前面那些巨大的浪费,相比之下这个目的收益极大,值得花一天时间。具体内容可参考 http://blog.csdn.net/cheny_com/article/details/6587277

有这么几种方法来找到最低工作量,每种方法都成功用完了,或者无法继续下去了,就可以结束扑克了。

1. 弄清楚需求

如果需求不明确,那么很值得再讨论一会。

我见过一个团队他们直接打牌,然后加在一起除以人数,不讨论的。他们说打牌时只是为了发扬*,所以,实际上水平不一的程序员们,为一个不一致的需求除了一张牌,最后却被精确计算出一个结果来。

2. 弄清最佳方案

最短时间因人而异,因为水平不同。

最佳方案如果也因人而异,就惨了,因为一定有新手会弄进来个错误的方案。

很多时候,我们会想:“最佳方案只有那个高手懂,他走了怎么办……要不要做个中等的方案,大家都懂的?”

这个问题很像:“最短路径只有某人会走,我们要不要绕个弯路,大家都这么绕的?”答案是“不!BU,NO”两点之间直线最短,所以两点之间才有且只有一条直线;半长不长的曲线就多了,拐弯抹角的方法也很多,很难达成共识。

所以,设计上只能选择最佳方案。如果我是那个唯一懂最佳方案的人,我最可能离开的原因,就是不让我用最佳方案!

3. 确保最佳方案可以被实施

高手肯定不在话下,但是别人可能够呛,这个过程就是保证别人能实施的。

不过这个别人,够呛在计划会上就说:“哦,明白了”,因为时间不够。但只要高手有信心说:“这一部分你已经会做了,到时候我帮你做那一部分,最多1小时,就全跑动了”,这个过程就结束了。

比如我教我的徒弟用泛型,过程就是:“你先只处理一种情况”/“这个我会”/”好,然后我帮你写成泛型,5分钟就够了“/”好“,结束。事实如此,我工作第六年才学会的泛型,他第四个月就学会了,就5分钟的事情。

这个知识传递过程必不可少的,对新手不说了,对高手而言也是给自己找了个接班人,让自己能腾出手来干更重要的事情(比如升职到部门经理)。这个在职业生涯规划系列里边好像有篇文章,忘了。

3. 确保可以被讨论清楚的事情都已经讨论完了

有些事情是”不可以被讨论清楚“的,比如一个人猜一个开源DLL很好用,另外一个人猜很不好用,这时候就直接停,让那个说好用的人去试试。

这个倒不是说说好用的人一定是对的,而是说,人们都尝试证明自己是对的,即使他们是错的。因此那个猜不好用的人,不大可能努力证明这个DLL好用——这就像伦敦奥运会的羽毛球比赛一样,制度不合理,导致大家消极比赛。

所以,如果事情都讨论清楚了,而不清楚的东西也不可能讨论清楚,那就可以停止了,剩下的就是做做试试了。

4. 颗粒度不要太低,保持讨论效率

既然是要节省工作量,那么讨论所花费的工作量也要计算在内。4个人的小组,加上个PO,SM,六个人吵吵10分钟,就是一小时了。

所以……不管后来故事板上贴着什么,能摆在扑克估算会上的事情,不宜太小。个人感觉如果讨论1小时,那么故事低于1天都有点亏了。真遇到很小但又不得不做的事情,Scrum Master要注意控制,关键时刻快刀斩乱麻。



但结束是结束了,最终结果算多少呢?

下面现场来几个例子,看大家和我的想法如何。以下是4个人打牌的最终结果(僵持不下,多少次大家都坚持如此了,时间又不多了),大家选谁?ABCD是4个人,数字单位人天,欢迎在下面回复大家互动。

第一个故事:A4, B5,C6,D7

第二个故事:A1,B1,C1,D9

第三个故事:A1, B9,C9,D9

第四个故事:A10,B20,C30,D80(这个要做点别的事情,上面没提到)


敏捷开发一千零一问系列之三十八:计划扑克就是打不出个结果怎么办?

上一篇:Linux 下安装hadoop,伪分布模式配置


下一篇:HDU 1212 Big Number 大数模小数