歡迎來到新系列
大家好,我是袁子能。歡迎來到新系列「讓閱讀再次偉大」。在這一集,我要和大家分享電腦歷史上的經典民間神話——《人月神話》。
常見的推薦方式
網上有很多推薦《人月神話》的視頻,但大多數都在講為什麼要看它。內容不外乎它創造了多少想法,影響了多少人,有多少人沒看過等等。然而,我認為用這種方式說服人們閱讀意義不大。
就像我從小就知道四大名著很偉大,應該讀,不讀就不是中國人。但直到我在 32 歲時積累了一定的生活經驗,才慢慢對它產生興趣。
本視頻的重點
所以在這個視頻中,我不會建議你去讀《人月神話》。我想談的是如何以正確的方式閱讀和吸收這本書,避免出現難以下咽的情況。
了解書籍的歷史背景
如果你想更好地理解一本書,就需要了解它的歷史背景。《人月神話》出版於 20 世紀 70 年代,它源於 20 世紀 60 年代的一個項目,但故事始於 20 世紀 50 年代。
20 世紀 50 年代,電腦開始被使用,但存在一個大問題,即運行性能和存儲容量非常差。稍微複雜一點的工作就會使整台電腦滿負荷運轉。
當時針對這個問題只有兩個選擇:
-
升級到更強大的電腦。但當時不同型號的電腦硬件和軟件完全不兼容,換電腦就意味著要重寫所有軟件,一切都要推倒重來。
-
同時購買另一台電腦。但當時電腦還是個新鮮事物,每台都需要配備一整組操作員和維護員。在人才方面,不像硬件可以隨時生產。
所以看似有兩個選擇,實際上卻無路可走。這個問題也是 20 世紀 50 年代電腦發展的最大瓶頸,導致大多數潛在客戶望而卻步。
IBM 的突破
20 世紀 60 年代,IBM 率先決定打破這一障礙。他們的管理層做出了一個非常大膽的決定:切斷原有的電腦產品線,集中人力和物力開發新系列。
新系列的硬件可以相互集成,因為它們將使用相同的操作系統——OS 360。這是歷史上第一個現代操作系統,它定義了許多我們現在看來司空見慣的概念,如兼容性、標準化、並行性能、內存管理、文件系統和 IO 管理。
由弗雷德里克·布魯克斯(Frederick Brooks)領導的 1000 人開發團隊,是歷史上第一個現代軟件工程項目。他們創新性地將標準化、模塊化和系統化的概念引入軟件開發,首次使軟件編程成為一個真正的項目。
《人月神話》的誕生與影響
因此,在 20 世紀 70 年代,當弗雷德里克·布魯克斯出版《人月神話》時,這些軟件項目的經驗首次與公眾分享,使整個軟件行業受益匪淺。這也是布魯克斯在 1999 年獲得圖靈獎的原因。
書籍內容的時代性
《人月神話》出版至今已有 50 年,當前電腦行業的許多細節已經發生了變化,書中提到的一些問題也已被半個世紀的技術發展所解決。
如果你把它當作一本工具書,想象成 2024 年的軟件工程管理入門,你會覺得其中很多內容已經過時。
但換個角度看,就像你看三國時期的古人用弓箭打仗,你不會認為這是一盤棋,即使現在你只需要一把 AK 和一枚閃光彈就能消滅他們。
因為當你看三國時,你會進入那個時代,欣賞古人在當時有限的條件下如何運用智慧。而這些智慧是超越時代的,即使幾百年後,在完全不同的社會中,這些智慧仍然值得反覆回味。
《人月神話》也是如此。在 20 世紀 60 年代,電腦行業的一切都還很原始,一切都在探索中。作者能夠提出解決這些問題的方法,甚至退一步認識到這些問題的存在和重要性,這本身就是智慧的體現。
例如,在「外科團隊」一章中,你可以看到他們已經在思考如何以模塊化的方式管理和解決複雜項目,這基本上可以說是微服務的開端,只不過是在軟件管理領域,而不是在架構領域。
書籍版本與翻譯
我手裡的這本書是《人月神話》20 周年紀念版,出版於 1995 年,增加了三章,是作者對一些概念的重新探索。從這些討論中,你也可以感受到時代的變化。
這些討論本身也已經過去了 30 年,但這並不會使這本書過時,因為它記錄了自己的歷史,而歷史還在不斷被創造,並將繼續下去。
作者弗雷德里克·布魯克斯是該項目的總經理,所以書中的很多章節都是從產品規劃和項目管理的角度進行討論的,比如第二和第三章。同時,由於該項目在當時引入了許多突破性的結構設計概念,一些章節也從架構師的角度進行了描述,比如第四和第五章。
既然是軟件開發項目,當然也有一些章節討論了程序員,比如第八和第九章。有些章節甚至談到了他們的工作,甚至是負責計算和整理文件的人員。
我相信大多數觀眾都是程序員,所以很可能會習慣性地跳過那些與自己無關的章節。但我個人不建議這樣做,因為軟件工程是一個基於網絡的結構,每個工作、每個角色都會相互影響。
在一個開發團隊中,沒有一個角落是你可以只寫代碼而看不到窗外的。通過其他章節,你可以更多地了解其他人的角色和職責,另一方面,也可以更好地讓你在項目中找到自己的定位。就像一個拼圖遊戲,所有其他的碎片都拼在一起,剩下的輪廓就很明顯了。
由於大多數觀眾的英語水平有限,我不建議大家看原版英文書。我手裡的這本是唯一的官方中文版,總體來說翻譯水平沒有太大問題。畢竟作為一本電腦行業的書,它不是文學作品,讀者很難有機會發揮想象力。
有一些專業術語的翻譯相當有趣,比如「programmer」被譯為「程序員」,在書中經常被譯為「編程語言」。這應該不算錯,也不影響閱讀。
更有趣的是,這本書的譯者不是一個人,而是一個叫 UML China 的組織。他們在 B 站上有賬號,製作了 20 多個視頻,講述他們在最初翻譯中犯的錯誤。我建議正在學習英語的人可以去看看。但這次他們的新版本仍然存在一些錯誤。
例如,在第二章的開頭就有一個大錯誤。如果你想檢驗自己的英語水平,可以暫停視頻研究一下,看看能不能找到他的錯誤在哪裡。答案將在一周後揭曉。
尊重個人的理解
本來這個視頻的大部分草稿都是在討論《人月神話》的內容和我的理解。但寫完後,我還是把它們都刪除了,只留下了一些相對客觀的建議。
因為我認為不應該把自己的理解強加給別人。就像那句話說的,「一千個讀者就有一千個哈姆雷特」,即使是作者本人也沒有權利解釋。我只是一個導遊,所以不應該指手畫腳。
只有在你自己讀過這本書之後,你才會對《人月神話》有自己的理解。