加入RUN!PC粉絲團
最近新增的精選文章
 
最多人點閱的精選文章
 
 
精選文章 - 開發技術
分享到Plurk
分享到FaceBook
 
群體程式設計 (mob programming)
文/Daniel P. Dern 譯/Iris.Liu 2015/9/15 下午 05:39:00

群體程式設計 (mob programming) 是一種延伸自成對程式設計 (pair programming) 的軟體開發方式,它比pair的方式更具生產力,產出的品質也更高。

在軟體設計與開發週期中,生產力 (productivity) 始終是一項被考量的高優先級指標 ── 因此,在追求高生產力的過程中,一直不斷地有新方法被提出來,從Kaizen 持續改良 (continuous improvement),到更新的敏捷式開發 (Agile) 與精實開發 (Lean) 等。

其中,一個最新的方法是群體程式設計 (Mob programming)。Mob,是由成對程式設計方式 (Pair programming) 演化而來的一種軟體開發方式。Pair,是一種敏捷式軟體開發方法,它是由兩位程式設計師共同在一台電腦前工作。其中一人負責撰寫程式碼,另一個人則負責審查程式碼,而兩位程式設計師會經常互換角色。目的是讓撰寫程式者可以集中注意力在完成當前的任務上,而審查者則負責提出改良的意見,或評估將來可能出現的問題,以做好及早的預防與處理。這樣的方式比傳統的程式設計方式更有紀律,產出的程式碼的品質也更高。

「我們發現我們團隊互動的方式,其實就是Mob 。」Industrial Logic企業的資深顧問師Woody Zuill在電話訪談中表示。我們採用的是一種編碼道場風格 (Coding Dojo style)。編碼道場風格是指,大家共同在一台電腦前實踐解決程式設計的問題。這種高效能的團隊程式設計方式是衍生自Llewellyn Falco所提出的「強化成對程式設計」(strong pairing) 的「駕駛員/導覽員模式」(Driver/Navigator model)。

Mob原則上就是延伸自下列的做法:一群團隊成員在相同的時間與相同的地點,協同做同一件事。其中一個人擔任駕駛員(driver)的角色,負責坐在電腦前輸入/編輯程式碼;其他人則擔任導覽員(navigator) 的角色,負責引導駕駛員的行進方向。而成員間彼此傳遞訊息的模式是有一定方式的。導覽員們不可能一有想法就立即要求駕駛員直接做修正,而不經過任何的檢驗程序,否則,過程與產出將會是一團混亂。 因此,當導覽員們對駕駛員的程式碼有意見時,必須在請駕駛員進行修正與調整前先提出來,並將自己的想法描繪在白板上,同時與團隊成員們一起討論,大家再依據討論的結果做後續的處理。

Zuill表示:四年前,我們嚐試採用Mob方式開發系統的第一天,就發現透過群體協同合作的生產力很高,我們立即意識到,這是一種很棒的開發模式,而且,當天我們就決定持續採用這樣的模式進行軟體開發。

Zuill還把當時的過程記錄下來,並在部落格 (blog) 上發表了一篇標題為「群體程式設計:讓整體開發團隊協同作業的途徑」 (Mob Programming: A Whole Team Approach)。

Zuill繼續補充:其實,一開始聽到Mob 這項技術時,我跟我的同事都覺得「非常地複雜」,我們不太能夠理解為什麼所有的開發人員都必須全部投注在電腦的程式碼輸入這件事情上。然而採用了之後,我們認為Mob 不但適合用來決速地解決複雜的問題,而且也適合應用於較小的,或是更簡單的問題解決上。主要是因為這種方式可以讓你很輕易地就找出讓開發任務自動化,或是讓類似的問題得以用既有的程序來解決,像是清除資料庫 (database) 中多餘的項目等,這些會重複發生的問題。因此,我們認為Mob是一項讓採用者可以視問題需求變化模式 (pattern),再依模式 (pattern) 行動的開發技術。