結對編程:肩并肩還是面對面
結對編程是一門敏捷軟件開發的技術,其目的是讓兩個開發人員共同在同一個工作站上工作。關于 結對編程所帶來的好處已廣為流傳,相應的技術和方法也得到了廣泛實踐。然而,在進行結對編程時,最好的安排座位的方法又是怎樣的呢?
通常的位置是肩并肩地坐,但這樣存在著一些弊端,正如 Josh Susser 所說的那樣:
盡管在多數情況下這樣安排座位是一種很好的方法,但其并不符合人體工程學。首先,兩個人都并非正對顯示器,而是偏向顯示器的邊緣,在敲打鍵盤或觀察顯示器時,將會引起相互倚靠、懶散及扭頭等情況的發生。同時,在不轉動脖子的情況下,也很很難看清自己的搭檔。即使桌子較寬,有足夠的空間給鍵盤和鼠標,同樣會存在擁擠、調整桌面和椅子所帶來碰撞等問題。
另外一種方法就是面對面地進行結對編程。這種變通的方法看上去就像下圖中陰影部分所表示的那樣。
按照 Josh 的說法:
這樣安排座位會更加舒服,結對的雙方都能有更好的視角來觀察屏幕,共同工作時還能非常容易的看到對方是一件非常有利的事情。結對雙方坐的足夠近,這樣即使不提高嗓門也能夠很容易地聽到對方在講什么。做了這樣的調整后,一整天工作下來,我感覺比以前好了很多,脖子也不像以前那樣難受了。
Brian 和 Corey對這種方法進行了嘗試并取得了不錯的效果。像 Brian 所說的那樣,他最終還是傾向于用新方法取代傳統的做法。
與在屏幕面前肩并肩地結對編程相比,我傾向于這種新的做法。我甚至認為這種方法比同時面對兩個并排放置的屏幕,使用兩套鼠標的方法還有效。工作變得更加自在,交流也變得更加充分。可以更容易地看清另外一個人的肢體動作。可以更加容易地終止編寫代碼、查找以及相互交談。我發現人員狀態的切換變得更加順暢,光標將兩個人的注意力在同一時間內聚集在一起的做法節省了大量時間。
Dave Smith 認為這種方法的出現并不稀奇,他在1980年時就見過類似的做法,那時,兩位計算機科學家相向而坐,放在他們之間的就是兩臺巨大的顯示器。
Tim Ottinger 也嘗試了這種布局,但是看起來不是很奏效。他提到:
我們只是做了下嘗試。大家沒有抵觸這種做法,但我們感覺到彼此之間的聯系沒有以前那樣緊密了,使我們不得不用鼠標來代替以前的手指來示意。這么做雖然看到了些效果,但更像是一種遠程結對的體驗。
這樣的改進是否也存在著不足呢?
Josh 認為,在捕捉一些細微的動作上的確有些難度,比如在肩并肩結對時,可以很清晰地看到操控鍵盤的操作以及鼠標軌跡的移動。此外,這種做法在費用上也有所上升,因為需要更多的設備和場地空間。
不管這種做法從長遠來看是否有效,但非常值得一試。Davis W.Frank 這樣評論到:
我確信當這種方法被證明成功時,會有更多的人舉雙手贊成并廣為使用。
查看英文原文:Pair Programming: Side-by-Side or Face-to-Face