1. 程式人生 > >敏捷(Agile)是什麼?--參加優普豐CSM認證培訓有感

敏捷(Agile)是什麼?--參加優普豐CSM認證培訓有感

6/2~3日,非常榮幸地參加了優普豐敏捷學院為期兩天的CSM(Certified Scrum Master)認證培訓課程,感謝@Bill 李國彪和@Martin 楊明兩位老師,傳授給我們很多敏捷的思維,同時也印證了很多自己的想法。

那麼現在回顧一下,什麼是敏捷呢?

兒子默默這兩天在學“滾鐵環”,同時也堅持著立定跳遠的長期訓練。(他說要參加學校明年的運動會,今年可惜與學校運動會立定跳遠的比賽失之交臂。)也不知什麼原因,默默的平衡掌控能力還是稍微差一些,導致“滾鐵環”雖然學了不短的時間,但是效果依然不佳。

於是,在和默默幾乎每天晚上散步講故事的時間裡,我和默默開始了以下的對話。

“爸爸,你還是給我講故事吧?”,“(尷尬,這兩天只顧著培訓了,還沒有準備好今天的故事……)我給你講講我這兩天培訓的內容吧?”,“好。”

“你看,我向前走路,走一步、走一步、再走一步…,動作是不是一樣的?”,“嗯。”,“每一步的動作一樣,而且每步的距離也沒有變,但也走了一段距離了,對嗎?”,“是的。”,“這種一步一步重複做的動作、而且沒有變化、每步的大小都差不多,如果把每一步看成在畫個圈,走一步就相當於畫一圈,再走一步就再畫一圈,那麼每個圈就叫一個迭代。”,“……”

“接著再想想樓梯,它是一臺一臺向上的或向下的,每一臺都比前一個臺階高或著低,‘增加’了或‘降低’了一個臺階的高度。我們把這種效果叫做增量,

“如果,把前面說的‘迭代’和‘增量’加在一起,就是走一步一個樓梯、走一步一個樓梯,想象一下就是,走一步畫了一個圓,下一步又畫了一個圈,下一個圓要比上一個圓稍高一點點或著低一點點,再下一個圓高一點或低一點,這種樣子在我工作的環境中就叫‘敏捷’。”

“動作‘敏捷’?”,“對,就是這個兩個字,英文是a-g-i-l-e,agile,敏捷。那你能說一下,敏捷是什麼嗎?”,“敏捷就是迭代和增量。”,“對,這兩天我培訓的就是這個。迭代的每個圓的高度變化不大,很小,因為沒有多少增量,但敏捷的每個圓的高度差異就很明顯。我們再舉個例子吧?”,“好。”

“比如你練習立定跳遠。最開始,你第一次能跳到70(釐米),你第二次還能跳到72,然後,73、72、71、69、68……,為什麼越跳越近了呢?”,“因為沒有增量?”,“哈哈哈,不是。”,“我知道了,因為我累了!”,“對!為什麼會累呢?”,“因為......沒有休息!”,“是的,你需要在每次跳完之後休息一下,恢復一下體力。”,嗯,就是,不然我就累死了,最後還跳不遠!”,“你現在可以想象得出,你的每一次跳就好像是一次‘迭代’嗎?”,“嗯…...,是的!”,那…...是敏捷嗎?”,“嗯……不是。”,“增量可以是向上也可以是向下,比如說成是正增量或負增量。”,“嗯,是敏捷,增量是負的。”,“沒錯,是敏捷。可是,你練習的目的是什麼?”,“是為了跳得更遠!”,“那可以說就是要跳出正增量嘍?”,“嗯。”

“那我們繼續,如果你第一次跳了70,停下來,什麼也不做,但休息好了,你下一次還會跳70還是69?”,“70!”,“會不會是71,假如你跳的動作不變的話?”,“不會。”,“那如果繼續這樣下去,你一直是70,是敏捷嗎?”,“不是,沒有增量。”,“哈哈,對了。如果你在跳第二次時把胳膊甩一下,跳到了71。是不是有增量了?”,“是!”,“那你想跳到72,你會怎麼做?”,“嗯…...先休息一下,然後蹲下來,對,說不定我第一次沒有蹲下來。”,“那你還甩胳膊嗎?”,“甩啊。”,“為什麼?”,“因為甩胳膊就能跳得遠啊……”,“對,甩胳膊會帶來正增量。如果你發現蹲下來跳到了73,你下次還會甩胳膊和蹲下來跳嗎?”,“會啊,不然就又跳不遠了。但是為什麼不是72?”,“因為你蹲下來跳的效果好很多,所以增量不一定非得是加一加一加一的,可以是70、71、73、75……這樣子。”,“噢~”,“那如果你接著把腳並起來跳,上一次是73,這次跳了72,你覺得是敏捷嗎?”,“不是。”,“不對,剛才不是說了嘛,跳近了,增量是負的,也是敏捷,說明你改變的動作起了負作用,當然,我們儘量別負增量。

“來,我們繼續,然後呢?你使勁跳,又從72變成了80,然後你停下來,會怎麼樣?”,“我要想怎麼做會跳得更遠一點,比如85。”,“那如果你又改變了,跳到了79,然後你停下來,會怎麼樣?”,“我要反思一下……”,“等一下,你說你要反思?我們換一個詞,叫回顧,回頭看一下的意思,其實和你說的反思一樣,好嗎?”,“好。”,“那回顧什麼?”,“回顧我哪裡沒做好。”,“除了沒做好的還有別的嗎?”,“……”,“你還會堅持甩胳膊使勁跳嗎?”,“會啊……”,“對了,回顧呢還要回顧做的好的,繼續堅持下去。”,“對對對!”,“下來你嘗試了一個新方法,跳到了85……”,“哇……我都跳到85了,比最開始遠了15啦?!”,“(這小子想啥呢?)……好了。我們看啊,你跳一下,迭代一下,然後呢?”,“回顧一下,再迭代,再回顧……誒,我學‘滾鐵環’好像就是這樣:如果上次(鉤子鉤得)高了,下次就低一點……還有圍棋,你下一步壞棋,對方下一步好棋,你就得考慮接著怎麼下一步好棋…...”,“(你還發散的不行)對,你要去改變,......(帶來增量——還沒說出口)”,“嗯,我要不斷嘗試,要堅持下去……”,“(哈哈哈,還嘗試,還堅持,對了,抓住機會!)對了,我們這叫持續改進,就是不斷得有增量。

“我們繼續哈,你有沒有發現,如果你不改變,你的增量是幾?”,“是0。”,“你之前每次改變的都是幾項?是不是隻有一個?”,“嗯。”,“那你改變一個會帶來什麼後果?”,“增量!”,“能不能具體點?”,“改變一個會帶來增量的後果!”,“(什麼啊,這哪是具體啊……)重新說!”,“…...能帶來正的增量。”,“還有?”,“負的。”,“嗯,如果發生一個改變,一般情況下不會是0增量的,不是正就是負。那麼,如果同時改變兩個呢?會是什麼後果?”,“搏二兔一兔不得!”,“我說後果!有幾種?”,“正的,負的…...還有0”,“(驚!!!)為什麼是0?”,“你不是說兩個改變嘛,一個改變為正,一個改變為負,然後抵消了。”,“那這種是敏捷嗎?”,“不是,因為沒有增量。”,“不對,這也是敏捷,因為你有改變,只是改變沒有效果。那你要想有效果,一次最好幾個改變?”,“一個呀。”,“對。每次改變一個的效果會比較明顯,(每次改變)多個就可能不知道哪個改變是好的,哪個是壞的。如果不改變呢?”,“增量就是0。”,“對,沒有采取改變,這就成了迭代了,而不是敏捷了。

“那我們總結一下,敏捷是什麼?”,“敏捷是迭代和增量。”,“(咋就只記了這一句啊?)嗯?丟了啥了?”,“回顧。”,“那再說。”,“敏捷就是迭代、然後回顧,和增量。”,“他們的順序是什麼?增量在什麼時候有的?”,“……在迭代之後,回顧之前。”,“那能不能一邊迭代一邊回顧呢?”,“不行,搏二兔一兔不得!”,“對,那樣一邊跳著又一邊想著怎麼改變,很可能就跳也跳不遠,改變也沒效果。好了,這就是我培訓兩天的內容。

“走,回家。”

祝默默明年的學校運動會上取得好的成績!加油!

附錄:

@申導Jacky-CST & Agile Coach為上文做出以下指正:

遵循敏捷(迭代式+增量式)宣言的基礎上劃分了很多流派,對於“迭代“有多(6、7)種形式,比如FDD是強調功能塊的迭代,Scrum是更強調時間盒的迭代。再次感謝申導!