結對程式設計成功的背後
本文由碼農網 – 小峰原創翻譯,轉載請看清文末的轉載要求,歡迎參與我們的付費投稿計劃!
讓我們一起探索分析結對程式設計成功的特徵原因。
結對程式設計正在逐漸成為主流的程式設計方式。有著兩年結對程式設計經驗的我注意到,結對程式設計真的很棒,甚至可謂是神奇。但有時候,卻又阻礙了我們的開發程式。我想探究這背後的原因,並搞清楚如何才能讓結對程式設計一直髮揮正能量的模式和方法。
我的結對經驗
我認為先說明我自己的結對程式設計經驗,有助於各位更好地評估以下的相關內容。我已經結對程式設計將近兩年時間,就職過2家不同的公司。一家是諮詢公司,我們開發了客戶端應用程式。另一家是創業企業,開發了一個大型的SaaS產品。在這段時間,超過20個有著不同背景、性格、技能、經驗和文化的開發人員和我結對程式設計。
邊注:結對程式設計還有一個好處就是能讓我與很多厲害的人共事,成為朋友。
有效結對的特徵
回想我以往的結對經驗,很多好的壞的體驗似乎一下子歷歷在目,恍如昨天。我將此總結成為2*2的矩陣。
結對程式設計矩陣
定義
效率代溝
從我的觀察角度來看,兩個個體結對時相關性最強最具區別化的因素就是兩者之間的效率。這些因素包括——他們以往各自的經驗、領域知識、語言知識,等等。效率的另一種表達方式就是他們各自的輸出潛力,包括速度和質量。為了討論的方便,在這篇文章中會把高效和低效的程式設計師分別形容為“高階開發人員”和“低階開發人員”。
利好
兩個人結對程式設計比各自獨立工作的期望優勢。
效率差距小的結對程式設計
根據我的經驗,效率差距小的結對程式設計普遍比差距大的要更好。原因或許是因為開發人員擁有的共性更多,互動時也更自在。在矩陣中列出的要點已經非常清楚。從本質上講,差距小就意味著他們更能理解和相互尊重,願意經常溝通,共同學習進步。這將是一場愉快又雙贏的互動。
弱弱結對
我的觀察結果告訴我,弱弱結對比強強結對的利好更多。為什麼呢?大概是因為低階開發人員意見性不強,沒有那麼自負,更注重學習,而不是堅持自己是“正確”的。
你知道“新同學交友”效應嗎。假設你還是一個孩子,在某個學年中途隨你的家人搬遷到一個陌生的小鎮上。這時候如果班上另外一個孩子大約也是在相同時間轉學過來的,那麼你們更容易成為朋友,因為你們的處境相同。結對程式設計也是如此。如果你們對某個新的應用/技術/語言/等等都不熟悉,那麼之後的研究探索,由於處在平等的位置,你們不但更談得來,而且合作解決問題的時候更契合。
兩個低階開發人員結對的首要目標應該是學習。
強強結對
如果是兩個高階開發人員結對程式設計,搭檔起來會很難。因為每個程式設計師都是不同的,想法和意見也不盡相同。經驗越豐富,越傾向於堅持自己的觀點,並且還會越自大。而當其中一個人過於自大時,另一個人就只能當“應聲蟲”了。
更糟糕的是,如果兩個人都很自大。此時他們會不斷地爭執爭辯以在駁倒對方,於是兩人之間的關係會緊張,充滿敵意。我見過更糟糕的是,兩個人甚至從頭到尾一句話都不說,這顯然是負面效應了。
良好的強強結對應該是相互尊重的。相互交流,辯論,討論,還有規劃,一起創造專業化的水平。強強聯合導致的是雄厚的生產能力。
所以,兩個高階開發人員結對的首要目標應該是產量。
強弱結對
這種結對安排往往發生在有新的開發人員加入公司,或切換到新的開發環境的時候。為新來的人員搭檔一個高階開發人員,能讓前者快速融入到團隊中。但是如果選擇的這個高階開發人員不合適,那麼就有可能損害低階開發人員的信心和士氣。
期望
首先領導人員必須明白人員安排的目的是儘可能快地推動開發程式。任何有著利害關係的人員也應該明白這個道理,這些人員包括其他開發人員、設計人員、QA等,尤其是高階開發人員。並且我們不應該給這個老帶新的組合很多壓力。
輸出速度會變慢,因為生產的同時發生了指導。
指導
高階開發人員應該明白他們的角色是指導低階開發人員,而不是迅猛生產。
好的導師,願意聆聽和回答問題,觀察並提出引導性的問題。
但是人的本性讓我們很難做到如此。下面是一些要點:
不要告訴他們要打什麼,要做什麼,也不要直接就演示給他們看。不可否認這樣會省事很多。但是你應該讓他們看到自己所犯錯誤的後果,讓他們自己去思考為什麼這樣不對,讓他們自己糾正錯誤。允許他們問問題,然後用引導性的問題回答他們,讓他們自己去探索。如果他們陷入了死衚衕,就伸手拉一把。
我記得有一次我和一個完完全全的新手同事結對完成任務。因為那時壓力真的很大,我選擇了毫不留情地拖著他往前衝。雖然也經常道歉,但明顯他的心情一直很糟糕。
好的導師應該具備充足的耐心和自信,積極促進低階開發人員的成長,而不是讓他們成為人云亦云的應聲蟲。但是在這個領域,這樣的導師實在是太少了。每個人都忙著完成自己的事情,又或者根本就沒有教導他人的技能。下面這些問題或許有助於我們確定某人是否是一個好導師:
是否願意與低階開發人員分享知識,幫助他們?是否嫉妒低階開發人員的技能,或是反感他們提出意見和見解?是否願意犧牲自己的舒適力爭團隊的利好?
高階和低階開發人員結對的首要目標應該是指導和學習。
結論
正如我上面分析的那樣,每種結對情況都是不一樣的,關鍵是要承認他們的不同,瞭解如何使其能夠更大地利好於團隊。
祝程式設計快樂!
譯文連結:http://www.codeceo.com/article/pair-programming-successful.html
英文原文:Breaking down successful pair programming
翻譯作者:碼農網 – 小峰
[ 轉載必須在正文中標註並保留原文連結、譯文連結和譯者等資訊。]
相關文章
- 程式碼背後的智慧:20條程式設計感悟程式設計
- 結對程式設計後傳之做漢堡程式設計
- 結對程式設計程式設計
- 沒搞懂背後原因,不要盲目程式設計程式設計
- 程式設計師背後的心酸日常,你懂多少?程式設計師
- 結束程式設計師對程式設計的恨程式設計師
- 成功、瑜伽、黃曉明 | 中年程式設計師對成功的認真思考程式設計師
- 結對程式設計總結程式設計
- 程式設計師高薪盛宴背後:程式設計師其實正在消失?程式設計師高薪
- 如何結對程式設計?程式設計
- 理解結對程式設計程式設計
- 程式設計師生存定律--表達背後的力量(1)程式設計師
- 程式設計師生存定律--表達背後的力量(2)程式設計師
- WhatsApp成功背後的Erlang語言APP
- 從結對程式設計到結對工作程式設計
- 再談程式設計正規化—程式語言背後的思想程式設計
- Windows 8鍵盤設計的背後Windows
- 結對程式設計的利與弊程式設計
- 高效的面試方法:結對程式設計面試程式設計
- 結對程式設計,我的噩夢程式設計
- 程式設計師下班後不關電腦的背後原因竟然是...程式設計師
- 結對程式設計體會程式設計
- 不要逼我結對程式設計程式設計
- 請停止結對程式設計程式設計
- 結對程式設計簡介程式設計
- 結對程式設計大法好程式設計
- 幽默:程式設計師成功完成程式設計的眼睛程式設計師
- 獨家對話RadonDB設計者 暢談開源背後的初心
- 成功的程式設計師 (轉)程式設計師
- 程式設計師高薪盛宴背後:未來有哪些程式設計師會被淘汰?程式設計師高薪
- 產品設計背後的心理學思考
- 原型鏈的繼承機制及其背後的程式設計哲學原型繼承程式設計
- 程式設計師的驕傲,以及驕傲背後真實的原因程式設計師
- 這就是所謂的結對程式設計?程式設計
- 【敏捷開發】結對程式設計敏捷程式設計
- 結對程式設計做漢堡程式設計
- 實驗二 結對程式設計程式設計
- 結對程式設計(c語言)程式設計C語言