天天看點

《人月神話》(P4)概念完整性和結構師

外科手術隊伍

常聽到軟體經理聲稱自己喜歡一流人才組成的精幹的隊伍,而不是那些幾百人的大型團隊,其實我也有同樣的想法。不過,還有一個很困難的問題,大型項目的團隊應該是怎樣的呢?

問題

軟體經理很早就認識到優秀程式員和較差程式員之間的生産率差異,研究人員對一組具有經驗的程式員進行測量。在該小組中,不同人員之間生産率的差别最大為10:1,程式設計速度和空間上具有5:1的差距。簡單來說,工資20000程式員的生産率可能是10000元程式員的10倍。而且研究還顯示,經驗和實際的表現沒有互相關系(我懷疑這種現象是否普遍成立)。是以結論很簡單,小型精幹的隊伍是最好的,因為不需要過多的溝通和交流。

可是問題産生了,作者假設一個超過1000人工作了3年的項目,如果交給一個200人的團隊,則至少需要25年的時間。在面對真正意義上的大型項目時,小型的團隊太慢了。譬如有一個10人的團隊,即便是假設他們都非常能幹,是一般人生産率的7倍,那麼他們需要10年來完成5000人*年的工作。技術可等不了10年。

這種進退兩難的境地是非常殘酷的,對于效率和完整性來說,最好是少數幹練人員進行開發,而對于大型系統,則需要大量人手。如何調節這兩方面沖突呢?

建議

Harlan Mills建議團隊應該類似外科手術的方式組建,并非一擁而上。也就是說,由一個人來完成問題的分解,其他人給予他所需要的支援,以提高效率和生産力。

  1. 首席程式員。他親自定義功能和技術說明,設計程式,編制源代碼,測試以及書寫文檔。他使用結構化的程式設計語言,負責版本控制。首席程式員要求極高的天分、豐富的經驗和大量的系統知識。
  2. 副手。是首席程式員的後備,能夠完成任何一部分工作。他主要是設計的思考者、讨論者和評估人員。這是一種保險機制,避免首席程式員的人為錯誤。他可能編寫代碼,但對代碼的任何部分,不承擔具體的開發職責。
  3. 管理者。也就是老闆,必須在人員、薪酬、辦公空間等方面有決定權。在法律、合同、報表和财務方面具有全部責任。
  4. 編輯。首席程式員負責文檔生成,而編輯負責根據首席程式員的草稿或口述,進行分析和重新組織,并監督文檔生成。
  5. 兩個文秘。管理者和編輯每個人需要一個文秘,負責那些非産品檔案,以及使項目寫作一緻。
  6. 程式職員。負責程式的具體輸入輸出,日志歸檔儲存。
  7. 工具維護人員。檢查所有檔案編輯、互動調試的工具,保證機器的可靠性。
  8. 測試人員。為各個功能設計系統測試用例,輔助日常調試。
  9. 語言專家。大多數計算機項目中,總有一兩個樂于掌握複雜程式設計語言的人,大家會向他們咨詢。

如何運作

首先,首席程式員負責和副手都了解所有的設計和全部的代碼。這確定了工作概念上的完整性。第二,觀點不一緻之處由首席程式員單方面統一。不對問題進行分解和上下級關系,使得隊伍達到客觀的一緻性。另外,其餘隻能人員要進行專業化的分工也是高效的關鍵。

團隊的擴建

當我們需要組建幾百人參與的大型任務時,應該如何應用外科手術這個概念呢?為了保證概念完整性,決定設計的人員應該是總人數的1/7甚至更少,我們僅僅需要協調”外科醫生“的思路即可。

對于分解技術,我們會在後面的章節繼續讨論。整個系統必須具備概念上的完整性,要有一個系統結構師從上至下的進行所有設計。要使工作易于管理,必須清晰的劃分體系結構設計之間的界限,系統結構師必須一絲不苟的專注于體系結構。上述的分工是可行的,在實際工作中具有非常高的效率。

以上就是《人月神話》第三章——外科手術隊伍所講述的全部内容

在本章中,作者抛出了整本書的核心概念——概念完整性和結構師。

先是告訴了我們,絕大多數大型程式設計系統的經驗顯示,一擁而上的開發方式成本高、速度緩慢、效率低,開發出的産品無法進行概念上的內建。而後提供了一種類似于外科手術團隊的團隊架構,認為這樣的架構(首席程式員)能夠獲得由少數頭腦産生的産品完整性,又能擁有多人開發的效率,還徹底減少了溝通成本。

但僅僅是将首席程式員和外科醫生作了形象的類比,并沒有更深入的解讀首席程式員。其實,從第四章到第七章,作者都不斷的在論述結構師的重要性,第三章隻是作為一個開頭,後面我們将更加深入的了解什麼是概念完整性,為什麼概念完整性是産品品質的核心,以及結構師的必要性。

從第三章開始,我們不難發現(當時還需要用卡片進行輸入輸出),本書在描述的是40年前的軟體開發經驗,當時還沒有傳統意義的PC,程式設計工作内容和現在也存在着巨大的差別。可為什麼《人月神話》看上去仍然和現在的軟體實踐相關,最常聽到的解釋就是”軟體開發科學并沒有正确的發展“,通過對比電腦硬體生産的效率和軟體生産率能夠支援這個觀點,前者在40年間至少翻了1000倍,而軟體行業現在還存在大量落後的項目管理方式。

無論出于何種原因,我都熱衷于讨論書中的觀點,哪些是符合現在情況的,哪些可能已經過時,現在的情況和過去又有什麼差别,相信這樣的心态也是本書一直暢銷的原因之一吧。

繼續閱讀