《敏 捷 教 練:如何打造優(yōu)秀的敏捷團隊》—11.3 結(jié)對編程
11.3? 結(jié)對編程

結(jié)對編程就是兩個人一起干活,用同一臺計算機解決同一個問題。每個人都能積極地參與開發(fā)軟件;被稱作駕駛員(driver)的人負責(zé)打字,她的搭檔也即導(dǎo)航員(navigator)負責(zé)考慮后續(xù)步驟和觀測潛在的缺陷。結(jié)對者輪流擔(dān)任這兩個角色。
如果想說服團隊嘗試結(jié)對編程,可參考下面這些長時間實踐結(jié)對編程所帶來的收益。
l? 代碼質(zhì)量更高,因為不斷在進行檢查。
l? 優(yōu)良實踐在團隊中廣泛分享。
l? 開發(fā)人員更少被打斷,因為大家往往不會去打斷那些正在一起工作的人。
l? 每一部分代碼都有超過一個開發(fā)人員了解它。
l? 實現(xiàn)了統(tǒng)一的編碼風(fēng)格,大家更容易一起工作。
l? 團隊融合提高,因為團隊互相學(xué)習(xí),很享受在一起工作。
如果你自己也懂編程,就會經(jīng)常忍不住想直接提議開發(fā)人員該如何寫代碼。小心,你可能會浪費你的時間,開發(fā)人員很可能會忽視你的編程經(jīng)驗,因為你并不為這個項目編寫代碼。他們還可能認為你這是越權(quán),在干預(yù)他們選擇自己的工作方式,所以,在給出這種建議時,一定要謹慎。然而,結(jié)對編程是一種輔導(dǎo)單個開發(fā)人員的絕佳方式。如果還沒有嘗試過,可以參考以下這些技巧幫助自己完善教導(dǎo)方式。
當(dāng)你正在敲鍵盤的時候,不要只是默默地輸入代碼。要展現(xiàn)出結(jié)對編程重要的一面,闡述你正在做什么以及為什么這樣做。當(dāng)結(jié)對伙伴掌控鍵盤的時候,要確保你自己別變成一個指手畫腳的人。挑剔每一個打字錯誤,總是大喊大叫鍵盤快捷鍵組合,與這樣的人結(jié)對是天下最悲催的事情。
保持開放心態(tài),接受結(jié)對伙伴的建議,即便他們只是一個新手程序員。有一種現(xiàn)象叫“初心”(beginner’s mind)[1]:用全新的眼光看待事物會得出更多選擇。因此,即使你已看到一個非常明顯的解決方案,也要樂于嘗試你的結(jié)對伙伴的建議。如果失敗了,那么他們會學(xué)到一些東西;如果成功了,那么你會學(xué)到一些東西!如果你想了解更多,可以閱讀Arlo Belshee發(fā)表于Agile 2005大會論文集的論文“Promiscuous Pairing and Beginner’s Mind”,其中介紹了團隊如何嘗試充分利用結(jié)對輪換時間[Bel05]。
我們也時常看到做得很糟糕的結(jié)對編程,所有工作都是一個人在做,另一個人只是在一旁看他們敲鍵盤而已。你應(yīng)該看到這一對團員成員之間有交互。有效結(jié)對是一個充滿活力的舞蹈,兩人頻繁而自然地交替敲鍵盤。YouTube上有一段名為“Real Programmers Use Sign Language”的視頻剪輯,它展示了兩個開發(fā)人員結(jié)對時的大量手勢交流。[2]
觀看網(wǎng)上直播的結(jié)對練習(xí),你也能對結(jié)對編程交互有所了解。[1][2]
通常情況下,一個人一次控制鍵盤不能超過10分鐘。引入乒乓編程(參見11.4節(jié)的補充內(nèi)容),幫助團隊習(xí)慣在結(jié)對時交替控制鍵盤。
首先,結(jié)對編程可能會讓開發(fā)人員感到沮喪;這往往意味著要放慢速度幫助隊友,而不是繼續(xù)編寫代碼。隨著時間的推移,你會發(fā)現(xiàn)團隊開始了解對方的弱點,在結(jié)對時也就能將精力更多地集中于手頭的任務(wù),免受風(fēng)格之爭的干擾,生產(chǎn)的代碼也更具可讀性。
請記住,結(jié)對編程是高強度的;需要注意力高度集中。提醒團隊,比較好的方式是每隔一個小時左右休息一小會兒。為此,有些團隊使用廚房定時器,或者使用番茄工作法(pomodoro technique)鼓勵結(jié)對休息,參見11.4頁補充內(nèi)容中的描述。
還要鼓勵開發(fā)人員們交換結(jié)對。每日站會就很適合團隊討論他們是否在任何任務(wù)上與誰一起結(jié)對——如果可以,又和誰建議團隊畫一個結(jié)對表(參見8.2節(jié)),讓他們看到團隊成員是否與其他人都會一一結(jié)對。
敏捷開發(fā)
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。