《人月神話》個人整理 Part 1


《人月神話:軟體專案管理之道》(維基百科)這本書,是 IBM 360 系統之父 Frederick P. Brooks, Jr 所著的一本討論軟體專案管理的經典書籍,其原名為《The Mythical Man-Mooth: Essays on Software Engineering》;這本書最早的版本是在 1975 年所發行的,而之後在 1995 年時,又另外發行了「20 周年紀念版」,算是根據後來的發展、意見,針對前一版再做補充說明。而 Heresy 這次所看的,則是由錢一一所譯的 20 周年紀念版的中文版本。

書名所謂的「人月」(man-month),一般是在做專案管理時,用來計算投入的人力時間的單位(或「人年」),一個人做一個月,就是一個人月。而由於這本書就是在探討專案管理的方法,所以用這樣的詞來作為書名,還算是滿貼切的。

而這本書的本文部分共有十九章,前十五章應該是初版時就有的章節,十六到十九章,應該是在「20 周年紀念版」才加入的內容。其章節名稱如下:

  1. 第 1 章 焦油坑(The Tar Pit)
  2. 第 2 章 人月神話(The Mythical Man-Month)
  3. 第 3 章 外科手術團隊(The Surgical Team)
  4. 第 4 章 專制、民主與系統設計(Aristocracy, Democracy, and System Design)
  5. 第 5 章 第二系統效應(The Second-System Effect)
  6. 第 6 章 意念的傳達(Passing the Word)
  7. 第 7 章 巴別塔為什麼失敗?(Why Did the Tower of Babel Fail?)
  8. 第 8 章 預估(Calling the shot)
  9. 第 9 章 地盡其利,物盡其用(Ten Pounds in a Five-Pound Sack)
  10. 第 10 章 文件假說(The Document Hypothesis)
  11. 第 11 章 失敗為成功之母(Plan to Throw One Away)
  12. 第 12 章 神兵利器(Sharp Tools)
  13. 第 13 章 化整為零(The Whole and the Parts)
  14. 第 14 章 釀成大災難(Hatching a Catastrophe)
  15. 第 15 章 一體兩面(The Other Face)
  16. 第 16 章 沒有銀彈:軟件工程的本質性與附屬性工作(No Silver Bullet – Essence and Accident in Software Engineering)
  17. 第 17 章 再論「沒有銀彈」("No Silver Bullet" Refired)
  18. 第 18 章 《人月神話》的主張:是真是假?(Propositions of The Mythical Man-Month: True or False?)
  19. 第 19 章 《人月神話》二十年(The Mythical Man-Month after 20 Years)

由於這本書出版的時間算是有相當的年代了,所以其實在 Heresy 來看,書中有不少的描述,其實都已經過時、對於現在的資訊相關環境來說,算是部怎麼是用了;但是整體來說,這本書應該還是針對軟體開發的管理,有不小的幫助。而在 20 周年紀念版的第 18 章「《人月神話》的主張:是真是假? 」,有將初版的十五章做條列式的摘要整理,如果想先大概了解書中大概的人,或許可以先跳到第十八章,把這些條目大概掃過一次。


而接下來的部分,則是 Heresy 個人針對各章節中,覺得比較重要的東西:

第一章 焦油坑

這部分是先在描述整個軟體開發的環境,主要是在描述一個正規的軟體開發團隊,和個人的程式開發的差異。

image大型系統的軟體開發基本上就像陷入焦油坑一樣,雖然個別的問題看來都好解決,但是卻又因為糾結在一起,導致不但專案難以前進,連要去理解問題都有問題。而這也是一般的「程式」和「軟體產品」、「軟體系統」,乃至於「軟體系統產品」的差別。

「程式」是要能變成「軟體產品」,要有通用性、完整的測試、齊全的文件以及可維護性,所以它的完成成本至少會是一個程式的三倍。而當程式要能變為「軟體系統」時,他必須要將多個程式做出完整明確的介面定義、使其可以交互運作;而軟體系統中的單一組件的成本,至少會是單獨程式的三倍,當組件的數量越多、成本也就越高。而更大的「軟體系統產品」,由於要兼顧「軟體產品」和「軟體系統」的事項,所以成本也就更高了~其所需的成本,至少會是單獨程式的九倍以上。而這也就是一個正規軟體開發團隊和個人寫程式的差別。

另外,在這章裡也描述了一些寫程式的樂趣和苦難,講的都算滿貼切的,不過由於 Heresy 覺得和軟體開發管理的關係並不大,所以就不提了。

 

第二章 人月神話

本章的章節名稱,就是書名的大標題,而內容,主要則是在探討「軟體專案為什麼不順利」。作者認為,專案會不順利,主要是由五個原因造成的:

  1. 過度樂觀

    時程預估技術不成熟,而這些不成熟的技術都反映出一個假設:一切都會進行得很順利。

  2. 人月

    成本會隨著人力和工時的成績而變,但工作的進度則不是,所以用人月來衡量工作規模的大小是危險的,使用人月的前提是在人力和工時可以互換的情況下;只有在工作可以被切分、而且投入的人彼此不用溝通,才有可能做到這樣的換算,當人數持續的增加,溝通的代價可能會完全抵銷掉因為增加人力帶來的好處。

  3. 無法做到「欲速則不達」的堅持

    缺乏可供估計之用的資料、因此缺乏堅持的勇氣。

  4. 時程缺乏監控

    另述。

  5. 發現時程延誤時,直覺反應就是增加人手,但是這是火上加油

    在一個時程已經落後的軟體專案中增加人手,只會讓他更加落後」。因為不但工作本身要重新切分,新進人員的訓練、新加入的交流,都會造成混亂和額外的工作量。

而作者在本章也有提出他以經驗法則決定的軟體專案時程規劃:

  • 1/3:規劃
  • 1/6:寫程式
  • 1/4:組件測試和早期系統測試
  • 1/4:系統測試、完成所有組件

 

第三章 外科手術團隊

這一章,主要是在討論程式開發團隊的組成架構。而根據作者所引述的資料,程式設計師的好壞差異相當大,其差異可以高達 10:1;再加上人越多,會增加大量的溝通成本,所以最好盡可能用最少的人來完成專案。根據經驗來看,使用一堆人來蠻幹,是最耗成本、最慢、最沒效率的方法;但是相對的,使用小團隊來開發真正大型的系統的話,速度又太慢了…

image為了解決這樣的問題,作者在這邊介紹了 Harlan Mills 所提出的方法。他建議大系統中的每個小部份分別交由一個團隊(十個人)來負責,而這個團隊的運作,則是以類似外科手術團隊的形式來進行,也就是由一位「首席程式設計師」來做主導、實作,而團隊中其他人則是扮演支援他的腳色(如右圖)。

這個「首席程式設計師」基本上就相當於外科手術團隊裡的外科醫生,他必須有相當的經驗、天分和能力,基本上負責所有程式相關的事情,有絕對的權力。

他的副手基本上可以做到首席能做到的事情,但是只是經驗不夠;除了可以提供意見給首席外,也會代替首席去開會、或是寫一些程式,但是他不對程式負責。而其他的人員則是負責處理其他的相關事務,盡量以提供首席一個良好、不會被其他雜務打擾的開發環境。

這樣一來,這個團隊的運作會是「同心一致」的,因為實際上所有的決策,都會是由首席程式設計師所決定,而其他的人都是以專業上的分工,來讓這個決策得以完成。這樣不但可以讓整個團隊的溝通簡單化、運作更有效率,更可以確保工作成果的概念整體性。

 

第四章 專制、民主與系統設計

這章的主題是「概念整體性」(conceptual integrity)。作者認為這是在系統設計時最重要的原則,一個強調整體概念性的系統不但開發得更快,測試也快;而要達到這個目的,就代表設計必須出自一個人的想法,或是極少數人的一致決定,也就是必須要是「專制」的。

而在要維持概念整體性的前提下,又需要多人合作開發時,有兩個技術可以使用,一個是上一章的「外科手術團隊」,另一個則是將工作分為「架構」(architecture)和「實作」(implementation)兩個部分;其中,架構是在說明做什麼,實作則是說明如何做。而將架構設計獨立於實作之外,不管對於大型專案或小型專案,都是取得概念完整性強而有力的方法;同時這樣的垂直分工,也會大幅減輕水平分工所產生的負擔,大幅簡化溝通,增進整體概念性。

另外作者在本章也提到了另外一個重要觀點,那就是在功能越來越多的情況下,只有當功能增強所節省的時間超過學習這項功能的耗費的時間時,這項功能的使用便利性才會提升;所以他的結論就是:「由於目的是使用便利性,所以『功能概念複雜度比』(ratio of function to conceptual complexity)才是系統設計的最終測試標準;好的設計不可單獨偏重功能性,也不可只偏重簡單性」。

 

這一篇大概就先寫到這裡了,其他章節就之後再寫了~而基本上,這邊主要都還是根據 Heresy 自己的想法在做內容的摘要,之後應該會再針對整體寫一些 Heresy 自己的想法吧~


書籍資料:

  • 書名:人月神話:軟體專案管理之道(20週年紀念版)
  • 作者:Frederick P. Brooks, Jr./著
  • 譯者:錢一一
  • 出版社:經濟新潮社
  • 出版日期:2004年04月04日
  • ISBN:9867889185

對「《人月神話》個人整理 Part 1」的想法

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com 標誌

您的留言將使用 WordPress.com 帳號。 登出 /  變更 )

Google photo

您的留言將使用 Google 帳號。 登出 /  變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 /  變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 /  變更 )

連結到 %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.