這是人月神話:軟體專案管理之道(20週年紀念版)的第三章:外科手術團隊,一開始就有一句話SACKMAN, ERIKSON, AND GRANT:『研究顯示,高手與庸手的表現有著極大的差異,而且往往是一個數量級的差異。』一個數量級的差異可以看維基的解釋,也就是10倍的意思。一個典型的外科手術團隊,包括外科醫師、助手、刷手護士、麻醉醫師、麻醉護士、流動護士及專業技術人員約10個人左右,這篇文章的大意在於軟體的專案管理如果組織也可以像這樣的短小精悍,那麼其實是不需要百來個二流角色的。
接下來討論的問題,『就是要兼顧工作效率與概念整體性(conceptual integrity),這是兩難的問題,對於超大系統來說,你想只採用幾個優秀腦袋瓜來進行設計和創作,但是這樣的人手似乎還是不夠,你該怎麼辦?』
『Mills有一個解決方案,就是首席程式設計師(chief programmer)比作外科醫師(surgeon),他來負責定義功能上和校能上的規格、設計程式、編寫程式、測試程式,並撰寫文件。副手(copilot)相當於外科醫師的分身,在設計時擔任出主意、參與討論、評估的角色。行政助理(administrator),幫忙處理財務、人事、場地、裝備,以及對外的一切行政事務。文書編輯(editor),負責擬稿,筆錄外科醫師的口述指示,然後加以潤飾、編纂、加上參考文獻與目錄,處理文件的改版,並監督整個製作文件的過程。兩位秘書(secretary),負責處理專案的協調事宜,以及與產品無關的文件。程式助理(program clerk),負責維護團隊在軟體產品程式庫(programming-product library)中所有技術上的紀錄。工具專家(toolsmith),檔案編輯、文書編輯,以及交談式除錯(interactive debugging)等由他負責準備妥當。測試員(tester),擔任對立者的角色,根據規格來設計測試案例,同時也是協助者的角色,為除錯工作來設計測試資料。語言專家(language lawyer),找出語言方面最簡潔有效的方法,以解決棘手、模糊、技巧性的問題。』所以一個程式設計團隊,可以這樣由10個人完成,這可厲害了。
運作方式提到要同心,跟教會所提要合一,這絕對沒問題,是個理想,但是只要有志,事一定成。但是我們會繼續碰到問題,一擴大規模的問題(scaling up)、二是工作切分的問題,切分代表著公平的問題,切不好可是會吵架的。但是這方法還是可行的,而且被證實過,所以大家一起來學習吧!