印第安人在趕了3天路后,會(huì)停下來(lái)小憩一天,因?yàn)樗戎约旱撵`魂跟上來(lái),
印第安人的靈魂——敏捷回顧
。敏捷開(kāi)發(fā)在經(jīng)歷了一次迭代或者沖刺(Sprint)后,也需要休整,以等待團(tuán)隊(duì)的靈魂跟上來(lái),這一過(guò)程被稱(chēng)之為“敏捷回顧(Agile Retrospectives)”。敏捷回顧與項(xiàng)目總結(jié)會(huì)議不同,它并非項(xiàng)目結(jié)束之后的蓋棺論定,而是在項(xiàng)目過(guò)程中,通過(guò)回顧會(huì)議及時(shí)總結(jié)上一次迭代中的得與失,以期達(dá)到改進(jìn)項(xiàng)目開(kāi)發(fā)、團(tuán)隊(duì)合作等敏捷活動(dòng)的目的。如果將項(xiàng)目開(kāi)發(fā)比作是一次征途,那么在項(xiàng)目中期的短期休整是很有必要的。然而這種休整并非是將團(tuán)隊(duì)成員集體拉出去腐敗一次,或者到K廳去鬼哭狼嚎一番,以泄心中的郁悶,如此種種只能說(shuō)是身體心靈的休息與放松。就像是運(yùn)動(dòng)員在比賽期間,隊(duì)醫(yī)的按摩、擦汗的毛巾、解渴的飲料。這些重要嗎?當(dāng)然重要,放松疲憊的身體與心靈,方能更好地走向更遠(yuǎn)的目標(biāo)。但更重要的是靈魂的“反芻”,就像教練員針對(duì)運(yùn)動(dòng)員在上一局比賽的盤(pán)點(diǎn)與指導(dǎo),指出選手以及對(duì)手的優(yōu)與劣,從而制定出后面比賽的對(duì)策,方能把握取勝之鑰。
敏捷回顧不是一場(chǎng)沒(méi)有主題的討論會(huì),大家坐下來(lái),七嘴八舌漫無(wú)目的的一陣“亂彈”,這樣的形式對(duì)于項(xiàng)目進(jìn)展沒(méi)有任何幫助。Scrum對(duì)于回顧有一個(gè)主要指導(dǎo)原則,這也是敏捷回顧的“最高指導(dǎo)原則”:
無(wú)論我們發(fā)現(xiàn)了什么,考慮到當(dāng)時(shí)的已知情況、個(gè)人的技術(shù)水平和能力、可用的資源,以及手上的狀況,我們理解并堅(jiān)信:每個(gè)人對(duì)自己的工作都已全力以赴。
聽(tīng)起來(lái),有些像一團(tuán)和氣的“和稀泥”做法,這樣的原則會(huì)否讓回顧會(huì)議的參與者一個(gè)個(gè)都變成好好先生呢?難道我們一定要善意地評(píng)價(jià)團(tuán)隊(duì)中的害群之馬,對(duì)他們的過(guò)錯(cuò)視而不見(jiàn),使其“逍遙法外”,并天真地以為我們的好心能夠感化他們?難道我們要在項(xiàng)目開(kāi)發(fā)中建立一個(gè)烏托邦式的大同世界,同薪同酬,為了團(tuán)隊(duì)利益而抹煞團(tuán)隊(duì)成員之間的個(gè)體差異。
坦白說(shuō),我反對(duì)在進(jìn)行團(tuán)隊(duì)成員評(píng)價(jià)時(shí),采用這么一條“最高指導(dǎo)原則”,但這樣的看法已經(jīng)偏離了攻擊的靶子了。需要知道,“最高指導(dǎo)原則”是應(yīng)用在敏捷回顧中,而敏捷回顧的最終目的是學(xué)習(xí),而不是績(jī)效評(píng)審活動(dòng)[1]。
如果敏捷回顧沒(méi)有確定這條“最高指導(dǎo)原則”,用來(lái)倡議團(tuán)隊(duì)成員信任自己的伙伴,就會(huì)讓回顧會(huì)議成為互相攻訐、互相推諉的批斗大會(huì),忘記了我們召開(kāi)回顧會(huì)議的初衷。“最高指導(dǎo)原則”就是為回顧會(huì)議豎立一個(gè)標(biāo)桿,那就是在項(xiàng)目開(kāi)發(fā)中沒(méi)有破壞者,沒(méi)有替罪羊,沒(méi)有關(guān)鍵人物,只有整個(gè)團(tuán)隊(duì)的利益。雖然某個(gè)人或許在上一次迭代中出現(xiàn)了錯(cuò)誤,但我們會(huì)善意地相信此人之所以犯下錯(cuò)誤,并非有意為之,或者消極怠工,而是囿于當(dāng)時(shí)之識(shí)見(jiàn)、經(jīng)驗(yàn)、技能。我們的回顧會(huì)議必須指明這些錯(cuò)誤,并試圖總結(jié)出最佳實(shí)踐以避免在下一次迭代中犯下同樣的錯(cuò)誤,而“最高指導(dǎo)原則”則能夠消除因?yàn)殄e(cuò)誤的指出而給成員帶來(lái)的負(fù)疚感,消除同事之間可能因此出現(xiàn)的隔閡與誤解。換句話說(shuō),回顧會(huì)議提出的所有批評(píng)都應(yīng)該是“對(duì)事不對(duì)人”。
我曾經(jīng)在一個(gè)項(xiàng)目的回顧會(huì)議上,聽(tīng)到了測(cè)試經(jīng)理對(duì)于某開(kāi)發(fā)小組產(chǎn)品質(zhì)量的評(píng)價(jià),認(rèn)為該小組開(kāi)發(fā)的模塊出現(xiàn)了太多的bug。經(jīng)過(guò)回顧會(huì)議的認(rèn)真分析,最后得出的結(jié)論是該小組Leader迫于進(jìn)度壓力,因而盲目地追求開(kāi)發(fā)進(jìn)度,卻忽略了保障代碼質(zhì)量的單元測(cè)試覆蓋率。于是,我們仔細(xì)討論了下一次Sprint的Sprint Backlog,根據(jù)團(tuán)隊(duì)成員的能力進(jìn)行了合理的分配。果然,在下一次Sprint中,該小組開(kāi)發(fā)的模塊出現(xiàn)的bug率降低了差不多50%,即使bug總量并不大,這樣的比例仍然是非?捎^的。而且,由于項(xiàng)目組成員都明白回顧會(huì)議的原則,因此并沒(méi)有產(chǎn)生團(tuán)隊(duì)成員之間的不快,開(kāi)發(fā)人員和測(cè)試人員仍然能夠合作得非常愉快。
在《Scrum Checklists》中,指明了Scrum回顧會(huì)議的議程:
1、在白板上寫(xiě)上主要指導(dǎo)原則;
2、在白板上畫(huà)上一個(gè)至少三頁(yè)紙連在一起長(zhǎng)的時(shí)間軸;
3、在白板上寫(xiě)上“我們的成功經(jīng)驗(yàn)是什么”;
4、在白板上寫(xiě)上“有什么能夠改進(jìn)”;
5、在白板上寫(xiě)上“誰(shuí)負(fù)責(zé)”,然后分成兩個(gè)區(qū)域——“團(tuán)隊(duì)”和“公司”,
管理資料
《印第安人的靈魂——敏捷回顧》(http://www.msguai.com)。從以上的步驟可以看出,敏捷回顧的主要工作就是明確目標(biāo)、持續(xù)改進(jìn)、處理問(wèn)題。敏捷開(kāi)發(fā)之所以采用迭代的方式,實(shí)際上是利用蠶食方式逐步完成開(kāi)發(fā)任務(wù)。將一個(gè)宏偉的目標(biāo)切割為一個(gè)個(gè)小目標(biāo),會(huì)給與團(tuán)隊(duì)成員更大的信心,并能夠更加清晰地明確目標(biāo)。而每次迭代后的回顧,則使得團(tuán)隊(duì)成員可以更加清晰地明確我們?cè)谶@個(gè)征途中,已經(jīng)走到了哪里,未來(lái)還有多遠(yuǎn)的路程,就像印第安人那樣,等待自己的靈魂,否則就會(huì)不知身在何處了。
在項(xiàng)目中持續(xù)改進(jìn)至關(guān)重要。所謂“取其精華,去其糟粕”,唯有如此方能夠去蕪存菁,提高敏捷團(tuán)隊(duì)的戰(zhàn)斗力。每一個(gè)敏捷團(tuán)隊(duì)都不可能是十全十美的,要么是在技術(shù)上存在個(gè)體差異,要么就是缺乏足夠的領(lǐng)域知識(shí),或者,還未曾找到符合團(tuán)隊(duì)現(xiàn)狀的開(kāi)發(fā)方法(即使采用敏捷方法,也需要因地制宜,切忌生搬硬套。即使現(xiàn)在符合,也不等于永遠(yuǎn)符合,即使符合這個(gè)項(xiàng)目,卻未必符合下一個(gè)項(xiàng)目。敏捷方法不可能放之四海而皆準(zhǔn))。即使這些均已具備,那么團(tuán)隊(duì)成員之間的磨合也并非一朝一夕之功。若沒(méi)有持續(xù)改進(jìn),團(tuán)隊(duì)就會(huì)像生銹的刀刃,不僅會(huì)褪去攝人的光芒,還會(huì)逐漸鈍化腐朽。
在項(xiàng)目過(guò)程中,有一個(gè)原則是處理問(wèn)題越早,那么付出的代價(jià)與成本就越小。問(wèn)題是,當(dāng)我們?cè)诰o張的開(kāi)發(fā)任務(wù)中,有時(shí)候很難發(fā)現(xiàn)這些錯(cuò)誤,更加意識(shí)不到這些錯(cuò)誤會(huì)帶來(lái)嚴(yán)重的影響。通過(guò)回顧會(huì)議,利用團(tuán)隊(duì)成員互相善意地“敲擊”對(duì)方,或者反復(fù)“鍛煉”開(kāi)發(fā)過(guò)程與方法,就能夠讓每一位成員都煉就“火眼金睛”。在會(huì)議中,我們經(jīng)常會(huì)發(fā)現(xiàn),一旦某個(gè)成員發(fā)現(xiàn)了一個(gè)問(wèn)題,接踵而來(lái)的就是每個(gè)成員都會(huì)發(fā)現(xiàn)一大堆問(wèn)題。
發(fā)現(xiàn)問(wèn)題僅僅是第一步,我們還要在回顧會(huì)議中合理分析這些問(wèn)題出現(xiàn)的原因、所屬類(lèi)別,并因此劃定問(wèn)題的“責(zé)任田”。我們要明確這些問(wèn)題是團(tuán)隊(duì)內(nèi)部的,還是由于外在因素導(dǎo)致的,也就是說(shuō)要明確“責(zé)任田”的歸屬,指定處理人和處理時(shí)間。
此外,《敏捷回顧——讓團(tuán)隊(duì)從優(yōu)秀到卓越》一書(shū)的作者Esther Derby在接受InfoQ的采訪時(shí),還提到:“使用回顧來(lái)解決沖突問(wèn)題。他們?cè)诿總(gè)迭代中都進(jìn)行檢視、實(shí)驗(yàn),并構(gòu)建解決沖突的技能和信心。隨著時(shí)間推移,他們學(xué)會(huì)了如何處理每個(gè)團(tuán)隊(duì)都會(huì)發(fā)生的“平常的”沖突。當(dāng)大家意見(jiàn)出現(xiàn)嚴(yán)重分歧時(shí),他們有能力、也有信心在團(tuán)隊(duì)內(nèi)部解決問(wèn)題。而且更有利的是,由于他們可以在團(tuán)隊(duì)內(nèi)部解決全部問(wèn)題,他們的經(jīng)理就可以花費(fèi)更多的時(shí)間來(lái)消除組織中對(duì)團(tuán)隊(duì)造成的障礙。當(dāng)然,這使得團(tuán)隊(duì)能夠輕裝上陣,以更加輕松的心態(tài)來(lái)開(kāi)發(fā)軟件。”[2]
現(xiàn)在,在你的項(xiàng)目團(tuán)隊(duì)經(jīng)歷了一次艱難的迭代之后,你需要休息一下以等待靈魂的到來(lái)么?那么,就請(qǐng)嘗試一下敏捷回顧會(huì)議吧,或許你會(huì)從中得到意想不到的收獲。
[1] Linda Rising,敏捷回顧活動(dòng)“最高指導(dǎo)原則”答疑解惑
[2] Deborah Hartmann,圖書(shū)節(jié)選:敏捷回顧——讓團(tuán)隊(duì)從優(yōu)秀到卓越
來(lái)自:http://www.agiledon.com/post/2008/03/Indians-Soal-Retrospectives.aspx