程式碼質量:結對程式設計最不重要的理由
本文由碼農網 – 小峰原創翻譯,轉載請看清文末的轉載要求,歡迎參與我們的付費投稿計劃!
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
翻譯作者:碼農網 – 小峰
[ 轉載必須在正文中標註並保留原文連結、譯文連結和譯者等資訊。]
相關文章
- 程式設計師如何保證我們的程式碼質量程式設計師
- 提高PHP程式碼質量的36計PHP
- 提高 PHP 程式碼質量的 36 計PHP
- 【程式設計素質】程式設計思想總結程式設計
- 程式碼整潔之所以重要的七個理由
- 提高php程式碼質量 36計PHP
- 程式碼質量檢測平臺架構設計架構
- 程式碼複審——給結對程式設計的小夥伴程式設計
- 追求程式碼質量: 用 AOP 進行防禦性程式設計程式設計
- 結對程式設計程式設計
- 程式設計師必看:如何充分利用程式碼審查提升你的程式碼質量?程式設計師
- 結束程式設計師對程式設計的恨程式設計師
- 結對程式設計總結程式設計
- 如何招聘到高質量的程式設計師?程式設計師
- 如何結對程式設計?程式設計
- 理解結對程式設計程式設計
- 對程式設計師而言,學歷重要還是技術重要?程式設計師
- 《程式設計師修煉之道:從小工到專家》之程式碼質量程式設計師
- Sonar程式碼質量管理
- 程式碼質量管理-Sonar
- 英語,對程式設計師有多重要?程式設計師
- 相對現代化的把控前端程式碼質量前端
- 高階程式設計師的程式碼質量應當達到什麼水準程式設計師
- 程式碼質量第 4 層 - 健壯的程式碼
- 程式碼質量第 2 層 - 可重用的程式碼
- 程式碼質量第 3 層 - 可讀的程式碼
- Litmus程式碼質量平臺實踐總結
- 在程式設計師眼中,工作/生活平衡和高質量程式碼幾乎同等重要程式設計師
- 設計模式之高質量程式碼設計模式
- 從結對程式設計到結對工作程式設計
- 開源閉源專案程式碼質量對比
- 結對程式設計體會程式設計
- 不要逼我結對程式設計程式設計
- 請停止結對程式設計程式設計
- 結對程式設計簡介程式設計
- 結對程式設計大法好程式設計
- 如何提高Java程式碼質量-優雅的寫程式碼Java
- 程式碼質量管理——如何寫出優雅的程式碼