《人月神話》讀後感

更新 發佈閱讀 3 分鐘
raw-image

在看完《鳳凰專案》(書摘《鳳凰專案》) 後馬上就接著看《人月神話》,這一本以前還在學校時,曾從圖書館借來看一次,但那時候還是學生,對於書中很多東西沒什麼感覺,只覺得書中某句話好像很有道理:

軟體專案進行不順利的原因或許很多,但絕大部分都是缺乏良好的時程規劃所致。

後來上班後,對這句話的感覺完全不一樣,對書中很多東西也有感觸了,只能說很多書換個時間再看一次,常常會有不同的想法。

這本書出版很久了,裡面很多技術或工具都很舊了,但核心的精神到現在依然很有用,例如書中討論到文件的架構、寫法與目的,雖然這幾年很多人打著 agile 不用寫文件,我依然習慣把架構或是偏整體設計面的文件寫下來,因為我自己記憶力再怎樣好,隔一陣子回頭看幾千行或幾萬行的程式碼,也會瞬間忘記這堆程式在做什麼?這時候自己寫的文件就幫上忙了。

比較意外的是這本書中提到蠻多首席設計師或是架構師的重要性,他確保系統的概念整體性,定義規格但對實作持開放讓開發者能夠發揮創意,自己的工作經驗中,第一份工作有和一位頗厲害的架構師合作過,第二份工作後來自己也當上架構師,甚至在另一家公司還曾經有過首席架構師的頭銜,但說實話,自己仍在摸索怎麼當一個好的架構師?

特別是與其他人的合作模式,在第七章看到三種常見模式特別有感覺:

  • 管理者兼任技術總監,這比較沒有溝通問題,但同時擁有管理與技術天份的人其實不多,容易出現分身乏術,無暇確保概念整性。
  • 管理者是老闆,技術總監是副手,這種搭配方式的困難在於如何賦予技術總監充分下達技術決策的權力。較適合大型的組織。
  • 技術總監是老闆,管理者是副手,較適合小團隊。

不過,也許是我的錯覺,現在台灣的軟體公司似乎很少有在架構上考慮整體性,只在乎功能是否能兜出來,常常與特定框架或技術綁住,當使用的技術與框架不敷使用時,要轉換時才發現牽連甚廣,動彈不得。

書中的另一個焦點是專案的時程,時程這件事在開始工作後特別有感,因為光是工作量就是一個極難預估的事情,當把一個錯誤的預估除以人月就會得到一個根本不可能達成的時程,只是有趣的是,這本書出版已久,也號稱是最具影響力的專案管理經典,卻還是常看到很多公司依舊拿人月來算時程:

成本確實隨著人力與工時的乘積而變,但工作的進度可不是如此,所以用人月來衡量工作規模的大小是危險的,也是一個容易遭到誤解的迷思 (muth),用人月的前提必須是人力與工時可以互換的情況下。

工作量難以預估的本質在第 16 章「沒有銀彈,軟體工程的本質性與附屬性工作」有很多的描述,其中一句便是:

我相信軟體開發真正的困難,是在於這種概念構造的規格制定、設計和測試,而並非孜孜矻矻在於它的呈現方式,以及測試該呈現方式的精確程度。

很多時候開發到一半,發現規格根本就不對,或是需求根本就沒有打到顧客的痛點,但花下去的工時已經要不回來了,更別說軟體的複雜性及後續的維護及修改。有趣的是,該章後半段提到的可能方法有幾個跟現在的敏捷方法所提的是相似的概念:

  • 需求的提煉與快速原型製作。當今有非常多的軟體獲取程序都是基於一個假設,假設能夠預先界定出一份完善的系統規格,並以此為這項軟體專案進行喊價,然後獲准開發,直到把軟體安裝起來。我認為這個假設根本就是大錯特錯。
  • 漸進式開發 — 發育軟體,而非建構軟體
  • 偉大的設計師

在「再論沒有銀彈」一章,也提到一些我覺得很有用的:

非也,把重點放在品質上,生產力將隨之而來。

回歸到軟體的基本問題,並主張對於未能滿足軟體需求的問題,有一個方式是藉由客戶的參與,增加投入這種智能工作的成員,這樣的主張符合由上而下的設計方式。

管理者的工作並不是叫人去工作,而是去創造讓人想去工作的情境。

假如能夠小心地維持基層的自主與責任,領導中心將在微信與效能上獲益,其結果是個組織「越快樂、越欣欣向榮」

這本書看完後,挺受用的,特別是讓我想繼續往軟體架構去深研,決定下一本書要看什麼了,來看看《架構之美》。

留言
avatar-img
留言分享你的想法!
avatar-img
Spirit的沙龍
55會員
107內容數
這是從 Medium 開始的一個專題,主要是想用輕鬆閒談的方式,分享這幾年軟體開發的心得,原本比較侷限於軟體架構,但這幾年的文章不僅限於架構,也聊不少流程相關的心得,所以趁換平台,順勢換成閒談軟體設計。
Spirit的沙龍的其他內容
2024/05/23
本書大多數的內容都以 OO 的概念出發,詳列了許多設計的臭味道,也有大量的例子。個人雖然不會這樣寫程式,但仍是覺得受益良多,至少在 code review 時能更清楚知道該怎麼描述問題。不過,即便不是用 OO 的概念,有些章節還是可以帶來一些想法,用 OO 概念寫程式的人更不該錯過這本好書。
Thumbnail
2024/05/23
本書大多數的內容都以 OO 的概念出發,詳列了許多設計的臭味道,也有大量的例子。個人雖然不會這樣寫程式,但仍是覺得受益良多,至少在 code review 時能更清楚知道該怎麼描述問題。不過,即便不是用 OO 的概念,有些章節還是可以帶來一些想法,用 OO 概念寫程式的人更不該錯過這本好書。
Thumbnail
2024/05/11
實際就業後,會發現收集與分析需求,通常都不是工程師在做,會有另一群人,以非工程的角度收集及分析需求,然後在開發過程中蹦出不同的火花,於是很好奇另一群人的想法是什麼?我不敢說這本書能完全代表另一群人的想法,但確實能夠得到很多有用的思維。推薦給所有的軟體工程師。
Thumbnail
2024/05/11
實際就業後,會發現收集與分析需求,通常都不是工程師在做,會有另一群人,以非工程的角度收集及分析需求,然後在開發過程中蹦出不同的火花,於是很好奇另一群人的想法是什麼?我不敢說這本書能完全代表另一群人的想法,但確實能夠得到很多有用的思維。推薦給所有的軟體工程師。
Thumbnail
2024/05/09
本書介紹了戰略設計、管理領域複雜度、實際應用領域驅動設計等主題。透過對核心子領域、支持子領域、限界上下文等概念的探討,提供了領域驅動設計的相關知識。這篇文章中還涉及了微服務、事件驅動架構和資料網格等相關主題,提供了設計系統和應用領域驅動設計的指導。
Thumbnail
2024/05/09
本書介紹了戰略設計、管理領域複雜度、實際應用領域驅動設計等主題。透過對核心子領域、支持子領域、限界上下文等概念的探討,提供了領域驅動設計的相關知識。這篇文章中還涉及了微服務、事件驅動架構和資料網格等相關主題,提供了設計系統和應用領域驅動設計的指導。
Thumbnail
看更多
你可能也想看
Thumbnail
這是幾年來我對於軟體架構師的心路歷程,上述不保證讓你成為軟體架構師,但希望會對軟體工程師職涯有幫助。也希望台灣的軟體公司能稍微多注重一下軟體架構,甚至能像 91App 不只工程師團隊,還有軟體架構團隊。
Thumbnail
這是幾年來我對於軟體架構師的心路歷程,上述不保證讓你成為軟體架構師,但希望會對軟體工程師職涯有幫助。也希望台灣的軟體公司能稍微多注重一下軟體架構,甚至能像 91App 不只工程師團隊,還有軟體架構團隊。
Thumbnail
意外的是這本書中提到蠻多首席設計師或是架構師的重要性,他確保系統的概念整體性,定義規格但對實作持開放讓開發者能夠發揮創意,自己的工作經驗中,第一份工作有和一位頗厲害的架構師合作過,第二份工作後來自己也當上架構師,甚至在另一家公司還曾經有過首席架構師的頭銜,但說實話,自己仍在摸索怎麼當一個好的架構師?
Thumbnail
意外的是這本書中提到蠻多首席設計師或是架構師的重要性,他確保系統的概念整體性,定義規格但對實作持開放讓開發者能夠發揮創意,自己的工作經驗中,第一份工作有和一位頗厲害的架構師合作過,第二份工作後來自己也當上架構師,甚至在另一家公司還曾經有過首席架構師的頭銜,但說實話,自己仍在摸索怎麼當一個好的架構師?
Thumbnail
不重新造輪子,我們使用第三方函式庫,聽起來很合理,但每個被引入的函式庫意味著一種 coupling,看到套件管理工具下載眾多第三方函式庫,意味著不用重寫這些東西,開發效率能提升數倍甚至數百倍,但我們真的都能掌握這些 coupling 嗎?當這其中任何一個環節出錯,我們的系統架構真的很優雅地應付嗎?
Thumbnail
不重新造輪子,我們使用第三方函式庫,聽起來很合理,但每個被引入的函式庫意味著一種 coupling,看到套件管理工具下載眾多第三方函式庫,意味著不用重寫這些東西,開發效率能提升數倍甚至數百倍,但我們真的都能掌握這些 coupling 嗎?當這其中任何一個環節出錯,我們的系統架構真的很優雅地應付嗎?
Thumbnail
這篇文章的重點,會放在介紹團隊管理、自我管理能力提升的書。這兩個能力的培養,比較需要長期的實戰、盤整,才能學習到位,所以吸收內容的難度非常高。最好趁早閱讀這類的書,了解基本概念並進入職場實戰。
Thumbnail
這篇文章的重點,會放在介紹團隊管理、自我管理能力提升的書。這兩個能力的培養,比較需要長期的實戰、盤整,才能學習到位,所以吸收內容的難度非常高。最好趁早閱讀這類的書,了解基本概念並進入職場實戰。
Thumbnail
這篇文章將會從我學校專題聽到的一些事情和我自己的經驗,介紹好的遊戲企劃師與壞的遊戲企劃師,並給出一些建議。
Thumbnail
這篇文章將會從我學校專題聽到的一些事情和我自己的經驗,介紹好的遊戲企劃師與壞的遊戲企劃師,並給出一些建議。
Thumbnail
過去對於製造業以及科技業的管理較為熟悉,因為轉職的關係,想了解軟體業人員的管理與其他產業的差異,於是到職前便買了號稱1987年出版的軟體業專案管理聖《Peopleware》,沒想到啃到最後,發現管理的本質都是相同的。
Thumbnail
過去對於製造業以及科技業的管理較為熟悉,因為轉職的關係,想了解軟體業人員的管理與其他產業的差異,於是到職前便買了號稱1987年出版的軟體業專案管理聖《Peopleware》,沒想到啃到最後,發現管理的本質都是相同的。
Thumbnail
初學程式時認為寫程式是在跟機器溝通,它懂了、可以動了,我的目的達成了,結案!然而大多時候,光是連編譯器吐出來的錯誤訊息都看不懂,更別說是考慮自己寫出來的程式碼的可讀性,而且專案太小也感覺不出維護上的困難。
Thumbnail
初學程式時認為寫程式是在跟機器溝通,它懂了、可以動了,我的目的達成了,結案!然而大多時候,光是連編譯器吐出來的錯誤訊息都看不懂,更別說是考慮自己寫出來的程式碼的可讀性,而且專案太小也感覺不出維護上的困難。
Thumbnail
簡單來說,寫程式最困難的地方往往不是技術上的問題,而是如何對當下的狀況正確判斷並且建立良好協作的狀態,才會是最為困難的地方。
Thumbnail
簡單來說,寫程式最困難的地方往往不是技術上的問題,而是如何對當下的狀況正確判斷並且建立良好協作的狀態,才會是最為困難的地方。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News