1. 程式人生 > >敏捷開發一千零一問系列之三十八:計劃撲克就是打不出個結果怎麼辦?

敏捷開發一千零一問系列之三十八:計劃撲克就是打不出個結果怎麼辦?

本文是敏捷開發一千零一問的第三十八篇。(欄目總目錄

問題:

一個簡單的問題,計劃撲克就是打不出個結果,各持己見怎麼辦?也就是少數人無法說服大家,或者說根本無人去聽

回答:

計劃撲克的結束條件”近似一致“是個很有趣的標準,其實要回答”什麼時候停止打撲克“,就要先解決”為什麼要打撲克“的問題。

如果打撲克的目的已經達到,或者無法用打撲克達到,那麼就可以停止打撲克了;至於相差很大的數字應該取多少,後面說。

首先,我自己其實是不打撲克的,因為我們用自己的方法解決了敏捷撲克要解決的問題,而且更快更好,所以就不打了。

先看看敏捷撲克能解決的問題:

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(這個要做點別的事情,上面沒提到)