6/2~3日,非常榮幸地參加了優(yōu)普豐敏捷學(xué)院為期兩天的CSM(Certified Scrum Master)認(rèn)證培訓(xùn)課程,感謝@Bill 李國(guó)彪和@Martin 楊明兩位老師,傳授給我們很多敏捷的思維,同時(shí)也印證了很多自己的想法。
那么現(xiàn)在回顧一下,什么是敏捷呢?
兒子默默這兩天在學(xué)“滾鐵環(huán)”,同時(shí)也堅(jiān)持著立定跳遠(yuǎn)的長(zhǎng)期訓(xùn)練。(他說要參加學(xué)校明年的運(yùn)動(dòng)會(huì),今年可惜與學(xué)校運(yùn)動(dòng)會(huì)立定跳遠(yuǎn)的比賽失之交臂。)也不知什么原因,默默的平衡掌控能力還是稍微差一些,導(dǎo)致“滾鐵環(huán)”雖然學(xué)了不短的時(shí)間,但是效果依然不佳。
于是,在和默默幾乎每天晚上散步講故事的時(shí)間里,我和默默開始了以下的對(duì)話。
“爸爸,你還是給我講故事吧?”,“(尷尬,這兩天只顧著培訓(xùn)了,還沒有準(zhǔn)備好今天的故事……)我給你講講我這兩天培訓(xùn)的內(nèi)容吧?”,“好?!?/p>
“你看,我向前走路,走一步、走一步、再走一步…,動(dòng)作是不是一樣的?”,“嗯?!?,“每一步的動(dòng)作一樣,而且每步的距離也沒有變,但也走了一段距離了,對(duì)嗎?”,“是的?!?,“這種一步一步重復(fù)做的動(dòng)作、而且沒有變化、每步的大小都差不多,如果把每一步看成在畫個(gè)圈,走一步就相當(dāng)于畫一圈,再走一步就再畫一圈,那么每個(gè)圈就叫一個(gè)迭代?!保啊?/p>
“接著再想想樓梯,它是一臺(tái)一臺(tái)向上的或向下的,每一臺(tái)都比前一個(gè)臺(tái)階高或著低,‘增加’了或‘降低’了一個(gè)臺(tái)階的高度。我們把這種效果叫做增量,
“如果,把前面說的‘迭代’和‘增量’加在一起,就是走一步一個(gè)樓梯、走一步一個(gè)樓梯,想象一下就是,走一步畫了一個(gè)圓,下一步又畫了一個(gè)圈,下一個(gè)圓要比上一個(gè)圓稍高一點(diǎn)點(diǎn)或著低一點(diǎn)點(diǎn),再下一個(gè)圓高一點(diǎn)或低一點(diǎn),這種樣子在我工作的環(huán)境中就叫‘敏捷’?!?/p>
“動(dòng)作‘敏捷’?”,“對(duì),就是這個(gè)兩個(gè)字,英文是a-g-i-l-e,agile,敏捷。那你能說一下,敏捷是什么嗎?”,“敏捷就是迭代和增量。”,“對(duì),這兩天我培訓(xùn)的就是這個(gè)。迭代的每個(gè)圓的高度變化不大,很小,因?yàn)闆]有多少增量,但敏捷的每個(gè)圓的高度差異就很明顯。我們?cè)倥e個(gè)例子吧?”,“好?!?/p>
“比如你練習(xí)立定跳遠(yuǎn)。最開始,你第一次能跳到70(厘米),你第二次還能跳到72,然后,73、72、71、69、68……,為什么越跳越近了呢?”,“因?yàn)闆]有增量?”,“哈哈哈,不是。”,“我知道了,因?yàn)槲依哿耍 ?,“?duì)!為什么會(huì)累呢?”,“因?yàn)?.....沒有休息!”,“是的,你需要在每次跳完之后休息一下,恢復(fù)一下體力?!?,嗯,就是,不然我就累死了,最后還跳不遠(yuǎn)!”,“你現(xiàn)在可以想象得出,你的每一次跳就好像是一次‘迭代’嗎?”,“嗯…...,是的!”,那…...是敏捷嗎?”,“嗯……不是?!保霸隽靠梢允窍蛏弦部梢允窍蛳?,比如說成是正增量或負(fù)增量?!保班?,是敏捷,增量是負(fù)的?!?,“沒錯(cuò),是敏捷??墒?,你練習(xí)的目的是什么?”,“是為了跳得更遠(yuǎn)!”,“那可以說就是要跳出正增量嘍?”,“嗯。”
“那我們繼續(xù),如果你第一次跳了70,停下來,什么也不做,但休息好了,你下一次還會(huì)跳70還是69?”,“70!”,“會(huì)不會(huì)是71,假如你跳的動(dòng)作不變的話?”,“不會(huì)。”,“那如果繼續(xù)這樣下去,你一直是70,是敏捷嗎?”,“不是,沒有增量。”,“哈哈,對(duì)了。如果你在跳第二次時(shí)把胳膊甩一下,跳到了71。是不是有增量了?”,“是!”,“那你想跳到72,你會(huì)怎么做?”,“嗯…...先休息一下,然后蹲下來,對(duì),說不定我第一次沒有蹲下來?!保澳悄氵€甩胳膊嗎?”,“甩啊?!保盀槭裁??”,“因?yàn)樗Ω觳簿湍芴眠h(yuǎn)啊……”,“對(duì),甩胳膊會(huì)帶來正增量。如果你發(fā)現(xiàn)蹲下來跳到了73,你下次還會(huì)甩胳膊和蹲下來跳嗎?”,“會(huì)啊,不然就又跳不遠(yuǎn)了。但是為什么不是72?”,“因?yàn)槟愣紫聛硖男Ч煤芏?,所以增量不一定非得是加一加一加一的,可以?0、71、73、75……這樣子?!保班蕖?,“那如果你接著把腳并起來跳,上一次是73,這次跳了72,你覺得是敏捷嗎?”,“不是?!?,“不對(duì),剛才不是說了嘛,跳近了,增量是負(fù)的,也是敏捷,說明你改變的動(dòng)作起了負(fù)作用,當(dāng)然,我們盡量別負(fù)增量。
“來,我們繼續(xù),然后呢?你使勁跳,又從72變成了80,然后你停下來,會(huì)怎么樣?”,“我要想怎么做會(huì)跳得更遠(yuǎn)一點(diǎn),比如85。”,“那如果你又改變了,跳到了79,然后你停下來,會(huì)怎么樣?”,“我要反思一下……”,“等一下,你說你要反思?我們換一個(gè)詞,叫回顧,回頭看一下的意思,其實(shí)和你說的反思一樣,好嗎?”,“好?!?,“那回顧什么?”,“回顧我哪里沒做好。”,“除了沒做好的還有別的嗎?”,“……”,“你還會(huì)堅(jiān)持甩胳膊使勁跳嗎?”,“會(huì)啊……”,“對(duì)了,回顧呢還要回顧做的好的,繼續(xù)堅(jiān)持下去?!保皩?duì)對(duì)對(duì)!”,“下來你嘗試了一個(gè)新方法,跳到了85……”,“哇……我都跳到85了,比最開始遠(yuǎn)了15啦?!”,“(這小子想啥呢?)……好了。我們看啊,你跳一下,迭代一下,然后呢?”,“回顧一下,再迭代,再回顧……誒,我學(xué)‘滾鐵環(huán)’好像就是這樣:如果上次(鉤子鉤得)高了,下次就低一點(diǎn)……還有圍棋,你下一步壞棋,對(duì)方下一步好棋,你就得考慮接著怎么下一步好棋…...”,“(你還發(fā)散的不行)對(duì),你要去改變,......(帶來增量——還沒說出口)”,“嗯,我要不斷嘗試,要堅(jiān)持下去……”,“(哈哈哈,還嘗試,還堅(jiān)持,對(duì)了,抓住機(jī)會(huì)?。?duì)了,我們這叫持續(xù)改進(jìn),就是不斷得有增量。
“我們繼續(xù)哈,你有沒有發(fā)現(xiàn),如果你不改變,你的增量是幾?”,“是0。”,“你之前每次改變的都是幾項(xiàng)?是不是只有一個(gè)?”,“嗯?!?,“那你改變一個(gè)會(huì)帶來什么后果?”,“增量!”,“能不能具體點(diǎn)?”,“改變一個(gè)會(huì)帶來增量的后果!”,“(什么啊,這哪是具體啊……)重新說!”,“…...能帶來正的增量?!保斑€有?”,“負(fù)的。”,“嗯,如果發(fā)生一個(gè)改變,一般情況下不會(huì)是0增量的,不是正就是負(fù)。那么,如果同時(shí)改變兩個(gè)呢?會(huì)是什么后果?”,“搏二兔一兔不得!”,“我說后果!有幾種?”,“正的,負(fù)的…...還有0”,“(驚?。。。槭裁词??”,“你不是說兩個(gè)改變嘛,一個(gè)改變?yōu)檎?,一個(gè)改變?yōu)樨?fù),然后抵消了?!?,“那這種是敏捷嗎?”,“不是,因?yàn)闆]有增量?!?,“不對(duì),這也是敏捷,因?yàn)槟阌懈淖?,只是改變沒有效果。那你要想有效果,一次最好幾個(gè)改變?”,“一個(gè)呀?!?,“對(duì)。每次改變一個(gè)的效果會(huì)比較明顯,(每次改變)多個(gè)就可能不知道哪個(gè)改變是好的,哪個(gè)是壞的。如果不改變呢?”,“增量就是0?!保皩?duì),沒有采取改變,這就成了迭代了,而不是敏捷了。
“那我們總結(jié)一下,敏捷是什么?”,“敏捷是迭代和增量。”,“(咋就只記了這一句啊?)嗯?丟了啥了?”,“回顧?!?,“那再說?!?,“敏捷就是迭代、然后回顧,和增量?!?,“他們的順序是什么?增量在什么時(shí)候有的?”,“……在迭代之后,回顧之前?!保澳悄懿荒芤贿叺贿吇仡櫮??”,“不行,搏二兔一兔不得!”,“對(duì),那樣一邊跳著又一邊想著怎么改變,很可能就跳也跳不遠(yuǎn),改變也沒效果。好了,這就是我培訓(xùn)兩天的內(nèi)容。
“走,回家?!?/p>
祝默默明年的學(xué)校運(yùn)動(dòng)會(huì)上取得好的成績(jī)!加油!
附錄:
@申導(dǎo)Jacky-CST & Agile Coach為上文做出以下指正:
遵循敏捷(迭代式+增量式)宣言的基礎(chǔ)上劃分了很多流派,對(duì)于“迭代“有多(6、7)種形式,比如FDD是強(qiáng)調(diào)功能塊的迭代,Scrum是更強(qiáng)調(diào)時(shí)間盒的迭代。再次感謝申導(dǎo)!