29 January 2011

自從進入資訊業後,寫程式也寫了 7、8 年了。在這段期間,在不同的單位內,斷斷續續的進行著 Pair Programming 式的開發流程,也許超過 1/3 的程式生涯都是在 pair 中渡過的。而這一篇也是我第三篇關於 pair 的感想。我不擅長瞻前顧後、統整長期的經驗寫出個好 review 文,這篇依然如是。只能算是寫下當下的想法。

我們公司人手並不多,最早之前,全公司開發者加起來可以湊個 4~5 位,但能全程參與 pair 的只有三位,這樣就變成只剩 2 人在 pair,所以實施起來就是斷斷續續的。而且 我個人認為,如果要能長久實施 Pair programming,團隊裡最好全員都能加入,這樣才能形成一股風氣,風氣一成就不會再停止了。

直到最近一年,我們換到了新的辦公室和增添一名開發者。到此,我們有 4 個純開發者可以全程進行 pair 開發。最近半年實施下來,總算是有模有樣了。我沒有數字可以跟之 前的開發速度和品質比較,但進度變得緊湊 (said by 同事K氏),而大多數程式碼都讓兩人看過/寫過。我也沒像以前那麼擔心程式碼的品質了 (我有程式碼潔癖...)

ok, 回到今天的主題 - Sit Together。公司搬到新辦公室後,老闆雄心萬丈地(?) 特別安排了 pair workbench,也就是說除了個人的辦公桌外,還另外配置專用的 pair 區 - 兩台電腦兩張桌子四張椅子,而且緊緊靠在一起 (目前是面對面靠著)。一開始我覺得沒什麼,只是多了個電腦而已,一開始使用時也是如此。但是直到四個人到齊全力 pair ,各 pair 各自熱絡討論時,奇妙的事發生了 -- 我開始被另一對的 pair 干擾了,當我在做 navigator, 或是思考時,我會開始聽另一對在說什麼,然後 "亂入" 他們的討論,到後來竟然變成常態。這件事發生後讓我很困擾,我和另一位正在寫的功能常常被中斷,只到亂入結束後才回過頭來寫。我已經開始覺得這工作區的配置是個惡夢。

遇到這種 Agile 執行上的問題怎麼辦?沒請 consultant (騙錢?) 的話,就只好自己看書求解,在 The Art of Agile Development 一書中,有一節是講 Sit Together,作 者提倡開發者應該在一個開放的 team room 一起工作,而且還鼓勵全團隊互相問問題,互相的打斷對方,而被打斷的一方有義務回應提問的人,作者的team room 是一個鬧哄哄的場所,而不是死氣沈沈、充滿壓力感的房間。

這樣做的好處是:
  • 團隊內部的溝通頻率更快更多,可以少走很多重覆的、不該走的錯路。
  • 團隊當然是更活潑許多。
  • 而我一直煩惱的中斷,他則是說該善用 pair,你的 pair 要能繼續並且協助你很快的cover back

這樣的 pair 環境是我在前個單位不曾體驗的,儘管該單位的座位也靠的很近,但 pair 間就像是個孤島被隔開。而我們現在的 workbench 是緊臨並且面對面,Sit Together 的確開始發酵。

簡而言之,我們團隊目前的狀況就跟作者說的一樣,從兩兩各自作戰,漸漸變成整個團隊互相支援火力。我們現在正處於變化的中間期 -- 被中斷所困擾,而整體生產力剛開 始質變。未來就看我們能否抓到訣竅,提高更多的團隊效率了。