讀《人月神話》有感
由於有一些重要的事情,我最近好久沒在CSDN上面寫博文了。最近,終於忙完了那個重要的事情,中間抓住了幾天的空閒時間,得以靜下心來認認真真的讀了Frederick P.Brooks. Jr.的《人月神話》,封面如下:
這是一本很經典的書,在我9年前讀碩士研究生的時候即已知道。3,4年前的時候我讀過該書的英文原版,有一種囫圇吞棗的感覺。現在發現師弟的座位上面有一本中文版,特地讀一讀,再感受下這本書的經典之處。
這本書的作者具有豐富的軟體開發經驗和軟體專案管理經驗,是對他自己一線軟體開發經驗的總結。雖然作者聲稱自己沒從事過大型的軟體管理,但他在涉及到這一點時也徵求了相關人員的意見。這是一本關於軟體專案管理和一些開發注意事項的書。書中有作者對軟體開發進度、溝通交流、組織架構、軟體管理、軟體工具、開發文件、領導方法等等方面的獨到而深刻的見解,這本30多年首次初步的書籍,其中的許多觀點在現在仍然有用。例如,書中提出的沒有銀彈(No Silver Bullet)。讀了之後不得不為作者深刻而獨到的分析折服,顯然作者是一個非常專業的軟體從業人員。
讀了該書後,當然會對軟體從業人員,例如,軟體專案經理、軟體專案技術主管、程式設計師等有很大的幫助,避免走入人員神話的陷阱—增加人員並不能簡單地加快專案的開發速度。因為它會增加專案的中斷時間、新人的培訓時間、及溝通交流的時間。我最佩服的是作者對新出現的OO程式設計方面及OO程式語言的分析:
面向物件在整個開發週期中都得到了應用,但真正的收益只有在後續的開發、擴充套件和維護活動中才能體現出來。
我學OO程式語言的時候,僅僅認為它比較時髦,比較新就開始學它,而沒有深入地思考它背後的優缺點和應用領域。所以,有時候我們學東西的時候要深入思考,才能讓我們對領域中事情有個清晰的認識。軟體工程屬於工程學的範疇,卻比任何其他工程都複雜。比如,汽車工程,一輛設計好的汽車賣出去後,後期的維護的工作量是很少的,功能的增加是違反交通法的;而軟體工程不同,後期的維護佔了很大一部分工作量。更進一步,軟體的通用不強,不同的領域有不同的需求,甚至同一領域產生的需求也不同,這就造成了軟體開發方面的複雜性。這在本書的《沒有銀彈》章節中闡述的很清楚。雖然本書對軟體工程領域的細節沒怎麼講解,但卻對軟體開發的管理、陷阱等方面做詳盡獨到的闡述,是一本經典的書籍。
軟體工程方面的書籍很多,但我認為,本書所起的作用是最大的。