程式碼質量:結對程式設計最不重要的理由

2015-09-15    分類:程式設計師人生、首頁精華1人評論發表於2015-09-15

本文由碼農網 – 小峰原創翻譯,轉載請看清文末的轉載要求,歡迎參與我們的付費投稿計劃

Braintree對於軟體開發有一套自己的方法。其中一個感覺特別有衝擊力的就是有關結對程式設計方面的內容。

很多人在討論結對程式設計的時候,通常注重的是結對對程式碼質量和開發效率產生的效果。這種觀點認為:結對的成本是單一開發人員的兩倍,但如果他們能在X%的時間內交付程式碼,並且bug數量和技術負債更少,分別只有單一開發人員的Y%和Z%,那麼結合衡量X,Y和Z的值,結對才可能是有意義的。

雖然這種說法沒錯,但它忽略了我們之所以結對最重要的原因:結對有助於共建一種偉大的企業文化,是讓新手開發人員加快速度的最佳方式,並提供了一種在開發團隊中分享知識的很好方式。無論是哪種情況,實行結對程式設計雖然短期內會讓成本小幅走高,但是從長遠來看,巨大的收益也會隨之而來。

結對意味著合作,這成就了企業文化的核心

結對是一種社會經驗:每天8小時的工作時間會與另一個開發人員密切接觸。這意味著,如果你與你結對的人不能進行有效的溝通,不能一起好好地研究工作中出現的問題,不能愉快地相處,那麼你就悲劇了。這也是為什麼Braintree在它的面試流程中將溝通能力和文化契合度列為與技術能力平起平坐的原因:我們不想要僱用那些不能結對的人!

招聘流程是企業文化的基石:沒有正確的優秀人才就不可能創造一種充滿活力的合作環境。在招聘開發人員時通過著重強調文化契合度和溝通能力,可以早早地表達一種協作的姿態。此外,這還有一定程度的自我選擇範圍:如果開發人員不想結對工作,那麼他們可能並不適合Braintree這樣的文化氛圍。

短期成本也與此有關。如果我們決定不僱那種雖然技術好但不能好好共事的人,那麼基本上等於是為了保護長效的企業文化而放棄了短期生產力的提高。

結對讓新手開發人員加速

在與別人結對時,你不僅能觀察他們如何編寫程式碼,還能看到你的結對夥伴是如何面對整個開發流程的:發現哪裡需要改變,編寫測試,閱讀原始碼,查詢檔案,配置開發環境,等等。並且你還可以知道他們選用哪種工具,以及如何有效使用工具。

初級開發人員絕對能從中獲益匪淺。更重要的是,當輪到他們操作的時候,他們還可以從他們的前輩那裡得到連續的反饋。這是我的親身經歷——那個時候我剛加入Braintree,只有大概一年的專業開發經驗,在大學裡也沒有學過多少電腦科學知識。但是在這工作三個月後,我的工作流程得到了徹底的改變。

從長遠來看,高階開發人員同樣受益:這已經是一個老生常談的話題,但在教學的同時的確可以加深自己的理解。也就是說,初級開發人員和高階開發人員結對也有相關的短期成本與長期效益。一對高階開發人員固然比初級和高階開發人員結對的進展更快,特別是工作於高階開發人員熟悉的程式碼庫的時候。然而,與新員工結對能使得新員工快速上手。

結對將知識轉移置於開發流程的中心

除了基本的程式設計能力,開發人員需要大量的資訊以便於有效地運作。這些資訊包括領域知識,基本程式碼知識,公司約定認識,檢查的最佳慣例,等等。任何值得認真對待的開發方法都需要有一種能夠在團隊中傳播知識的好方法。

結對使得分享成為理所當然。問問題不再成為中斷的攔路石——不斷地與結對夥伴溝通是正常工作流程的一部分。

除此之外,還有數以百計的開發小技巧能從學自結對夥伴:命令列快捷鍵,vim技巧,結合vim和tmux的方法,等等等等,不計其數。

結對的持久戰

Braintree的開發風格非常強調長遠考慮。測試驅動開發;比起機智,程式碼的編寫更強調可維護性和可讀性;儘可能緩慢的徹底深入發展。結對是發展工作的一部分:它提供了一種能每天為開發團隊提供小投資的方法。我們以這種方式工作,某種程度上是因為我們寫的支付處理軟體為我們的客戶提供了任務關鍵型服務。而且也是因為我們認為,從長遠來看,這些做法會有大大的回報。

如果你對上述觀點產生了共鳴,歡迎發表你的見解。

譯文連結:http://www.codeceo.com/article/code-qulity-pair-programming.html
英文原文:Code Quality is the Least Important Reason to Pair Program
翻譯作者:碼農網 – 小峰
轉載必須在正文中標註並保留原文連結、譯文連結和譯者等資訊。]

相關文章