已經有好幾周沒有寫書評了,今天突然想起來要寫一寫。由於上次的書評
是
關於C++的,今天打算寫寫軟體工程方面的。對於軟體工程而言,我個人認為到目前為止,尚未有哪本書的影響力和深刻程度能夠超越《人月神話》(全名是:The Mythical Man-Month -- Essay on Software
Engineering)。於是考慮來聊一下鼎鼎大名的《人月神話》。如果你已經熟讀此書,並且自認為深刻掌握其精華,本文章你就不必再看了。
★作者及寫書的背景
根據“如何選擇IT書籍
”裡面提到的經驗,作者是書籍品質的一個主要保證。所以我先來八卦一下《人月神話》的作者:Frederick Phillips Brooks
(以下簡稱Brooks)。這位老兄最牛X的成就是在60年代
(他當時才29
歲)主持並完成了一個同樣很牛X的IBM 360
系統的開發。IBM 360
後來被譽為是人類從原子能時代進入資訊時代的標誌。該項目不光具有曆史意義,而且在軟體工程方面非常有代表性(因為其規模和複雜度)。為了給大伙兒加深印象,列舉該項目的幾個資料如下:
--------------------------------
軟體人員總數 2000 四十年後,微軟的Windows 2003團隊也就5000人
軟體總費用 5億$ 發明第一個原子彈的曼哈頓工程也不過才花20億$
開發週期 4年
--------------------------------
注意,上述僅僅是軟體方面的統計。
最終,IBM 360
項目並沒有完成全部的預定目標,但是對於這個史無前例的項目,居然沒有中途夭折,本身已經算是奇蹟了。後來,Brooks在1975
年(距今已30多年)把他所寫的一些軟體工程方面的隨筆(很多都與360項目有關)整理出版,也就是我們今天點評的《人月神話》。
★本書的結構
前面已經說了,Brooks當年是把他寫過的一些隨筆整理出書的,所以書中的各個章節相對來說比較獨立。因此你不一定按照排版的順序來閱讀。比如俺每次重讀這本書都只是挑選其中一兩個章節來看。
★本書的看點
雖然本書的每個章節都稱得上是經典,但限於篇幅,只把俺印象最深刻的幾章介紹一下。
◇第2章,關於“人月
”的誤導
這是本書最有名氣的章節。在本章,Brooks明確反對使用“人月”這個極具詐騙度量單位。因為人月
這個稱謂暗示著“人”和“月”是可以互換的。
即使到今天為止,還是有大量的編程人員、測試人員、專案經理和軟體公司老闆在錯誤地使用人月
來衡量軟體開發的工作量,實際上,當某人宣稱某工作量是6個人月時,這句話本身是沒有太大意義的。一般來說,1個人幹6個月的工作,6個人在1個月內幾乎很難完成。所以俺在溝通工作量時,都會明確地講清楚,需要幾個人幹幾個月。
另外,Brooks根據人月的不可互換推匯出一個怪論:向進度落後的項目增加人手會導致項目更加落後
。這個怪論是如此出名,以至於後來被稱為“Brooks法則
”。這個法則蠻有用滴,每當有上級領導企圖通過增加人手來趕進度時(往往在項目後期),俺都會搬出這個法則來拒絕這種企圖。
◇第3章,關於團隊的組成
為瞭解決前幾章中提到的大型團隊的種種困難,Brooks提出了一種新的解決方案:把大型團隊拆分為若干個類似於外科手術式的小團隊。
每個小團隊有一名主程式員(類似於主刀醫生),所有的問題分解和功能定義都通過主程式員來完成,以此來降低溝通成本。並且,每個主程式員配備若干個平庸的人幫他/她打下手,也很符合現實情況(還記得“二八原理系列
”中提到的優秀人員和平庸人員的比例嗎?)。具體的角色職責我就不細說了,書上都有。
◇第16、17章,關於“沒有銀彈
”的大實話
實際上第16章“沒有銀彈”的內容來自於作者在1986年作的報告,後來才加入書中。第17章“再論沒有銀彈”是20周年版加入的。
據作者在本書的“20周年紀念版”中宣稱,“沒有銀彈”是引發最多爭議的章節。不過我個人認為:雖然引發最多爭議,但是這兩章卻是全書最重要、最深刻且最有價值的章節。即使你從事的工作和軟體工程無關,你也應該認真閱讀它。
Brooks在第16章分析了軟體開發的根本性困難
(複雜性、非一致性、易變性和不可見度)和次要性困難
。分析完根本性困難和次要性困難之後,作者斷言:未來十年內,不可能
有某種技術突破(銀彈)能夠徹底解決根本性困難
,從而導致軟體開發效率有數量級
的提高。
現在,時間已經過去了遠遠不止十年。在“沒有銀彈”發表之後,軟體界冒出了數不清的新玩意兒(比如物件導向、組件技術、設計模式、CMM、UML、敏捷開發、RAD、等等),很多新玩意兒的創造者都號稱他們發明了銀彈。但實際上沒有哪個新技術能夠經受住時間的考驗並真正獲得銀彈的稱號。
★俺的建議
囉嗦了這麼多,最後來說說俺的幾點建議:
如果你從來沒有看過本書,那趕緊去找一本來,並全部讀一遍(不一定要按順序看)。
如果你以前看的是老版本,那趕緊去找來新版(20周年紀念版),並重點看看增補的4個章節。
如果你已經把新版全部看完,今後可以考慮定期(例如每隔一兩年)再拿出來翻一翻。
另外,此書在網上有20周年紀念版的中文版和英文版可供下載,喜歡看電子書的同學Google一下即可尋獲。
著作權聲明
本部落格所有的原創文章,作者皆保留著作權。轉載必須包含本聲明,保持本文完整,並以超連結形式註明作者編程隨想
和本文原始地址:
http://program-think.blogspot.com/2009/03/book-review-mythical-man-month.html