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

熊能發表於2019-06-17

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

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

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

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

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

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

首先,首席程式設計師負責和副手都瞭解所有的設計和全部的程式碼。這確保了工作概念上的完整性。

第二,觀點不一致之處由首席程式設計師單方面統一。不對問題進行分解和上下級關係,使得隊伍達到客觀的一致性。另外,其餘只能人員要進行專業化的分工也是高效的關鍵。

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

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

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

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

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

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

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

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

相關文章