代碼質量:結對編程最不重要的理由

    很多人在討論結對編程的時候,通常注重的是結對對代碼質量和開發效率產生的效果。這種觀點認爲:結對的成本是單一開發人員的兩倍,但如果他們能在 X%的時間內交付代碼,並且bug數量和技術負債更少,分別只有單一開發人員的Y%和Z%,那麼結合衡量X,Y和Z的值,結對纔可能是有意義的。
    Braintree對於軟件開發有一套自己的方法。其中一個感覺特別有衝擊力的就是有關結對編程方面的內容。
    很多人在討論結對編程的時候,通常注重的是結對對代碼質量和開發效率產生的效果。這種觀點認爲:結對的成本是單一開發人員的兩倍,但如果他們能在 X%的時間內交付代碼,並且bug數量和技術負債更少,分別只有單一開發人員的Y%和Z%,那麼結合衡量X,Y和Z的值,結對纔可能是有意義的。
    雖然這種說法沒錯,但它忽略了我們之所以結對最重要的原因:結對有助於共建一種偉大的企業文化,是讓新手開發人員加快速度的最佳方式,並提供了一種 在開發團隊中分享知識的很好方式。無論是哪種情況,實行結對編程雖然短期內會讓成本小幅走高,但是從長遠來看,巨大的收益也會隨之而來。

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

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

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

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

結對讓新手開發人員加速

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

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

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

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

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

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

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

結對的持久戰

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

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章