---
# System prepended metadata

title: 人月神話閱讀心得—

---

人月神話閱讀心得(張家凱,李旼學)
---
張家凱
---
 關於人月神話的解釋，這是讓我非常印想深刻的一段，且就在開頭的第二章，所謂的人月就是人與時間的關係，在當工作可以被切分且工作的人「彼此不用溝通的條件下」，假設一個小任務一個人可以三天做完，那麼三人一天便可以做完，然而在軟體工程如果這樣來衡量工作規模是相當危險的，因為溝通成本也會隨著人數增長而提高(包括人員對產品概念性的不同)，所以有的時候添加人手是拖延了進度而不是縮短。


而這也帶出了溝通的重要性，一直延伸到了為何巴別塔會失敗(Why Did The Tower of Babel Fail?)，巴別塔故事中作者提到這項建設具備了許多成功的條件
1. 明確的目標
2. 人力
3. 材料
4. 足夠的時間
5. 充分的技術

然而最終為何失敗呢?他們缺少了「溝通」與「組織」，當人與人之間不能溝通，就無法合作，合作失敗意味著工作停頓，於是最終團隊土崩瓦解。作者同時也提到了各種方法等，包含建立交流
1. 非正式方法(良好的電話聯繫制度)
2. 會議(例行性的專案會議)
3. 工作手冊


建立良好組織架構減少溝通成本
1. 人力的配置
2. 專業分工

在第一版的二十年後，作者依然說著:「專案如果要成功，人的品質，以及人的組織與管理，遠遠比他們所運用的工具或技術來的重要。」，這也是讓我最終感動的地方，即使過了二十年依舊不變的定理，我也歸納、濃縮了幾個重點
1. 人的品質： 作者認為，優秀的工程師遠比普通的工程師更能夠提高專案的效率。他指出，優秀的人才可以在短時間內完成高質量的工作，而招聘優秀的人才比增加人數更為關鍵。
2. 人的組織： 良好的組織結構是確保專案成功的關鍵因素。有效的溝通和協作可以防止資訊不對等和做重複工作，提高整個團隊的效能，以免拖累軟體工程的進度。
3. 管理： 專案管理也是本書的核心價值，作者指出，良好的專案管理包括計畫、組織、追蹤和控制。管理者需要有適當的計畫和組織，以確保專案能夠按時交付。

總而言之，雖然「人月神話」還強調了許多概念，但是礙於篇幅我不能一一細說，且許多較為古老的技術，實在難以想像，但我相信在一個專案成功的例子中，人的品質、組織結構以及有效的管理比使用的工具或技術更為重要，這也是作者花好幾個章節所提到的。即使擁有最先進的技術，如果沒有優秀的人才和有效的管理，專案仍然可能陷入困境。此外這個概念也激勵著我成為更好的「新鮮人」，因為反過來說，公司應該不太願意培養一個「二流人才」，來拖累他們的產品進度，並成為一個「負資產」，而這也是我目前的心得，期許書中的概念能陪伴我之後的工作歲月。

---
## 李旼學
---
人月神話這本書，講述了軟體工程中專案管理的重要性。第一章的焦油坑，便比較了個人單獨寫出的程式與一系統產品的差別，若將程式產品化，所需成本為三倍，而將其進行整合測試等過程凝聚成一個系統，也就是系統化的過程，所需的成本也是三倍，而兩者是分開獨立計算的，所以要推出一個系統產品，複雜度是直線上升的。

因此，如何在一個龐大的軟體開發中，進行有效的管理，是一個至關重要的課題。而作者便在第二章提出人月的觀點，也就是人與時間之間的關係。在傳統的觀念中，我們或許會直覺地認為人多好辦事，但在軟體開發的世界並非如此，作者在文中說過一句有趣的話:生小孩就是要九個月，你叫多少媽生都是一樣，也就是人力與時間並非是線性關係，那只發生在工作可被切分而且無須溝通成本的情況下，如果在實際工程中採用此模型衡量成本與規模，無疑是一件危險的事情。舉一個在作業系統學到的Amdahl's Law，其在討論是否一直增加核心數，就能提升電腦的效能，結論是提升的效能變非是一個線性關係，而是與其serial(串列)的部分息息相關，若是serial port的部分越多，則增加的效能越少，所以我們應該要考慮的是增加parallel port的部分，也就是進行平行化處理，若將人比喻成core，似乎不論是人或是機器的法則，都意外地相近呢。

而作者也以本身經驗，對軟體開發時程進行以下的分配:
1.1/3 整體規劃
2.1/6 撰寫程式
3.1/4 組件測試與初步系統測試
4.1/4 系統測試以及完成組件
可以看出撰寫程式的時間其實是最少的，花最多的反而是對專案的時程內容等等規劃的時間，也就是所謂的工欲善其事，必先利其器，有良好的規劃與安排，對整體開發的構思，才能友善提高整體品質，減少無謂的溝通成本。而在組件與系統的測試也是十分重要的一個環節，開發的軟體產品必須經過維護以及測試，確保及功能的正確性，才能作為產品去銷售，在課堂中從撰寫verilog code，到現在正在教學的vcs,verdi, dc compiler作驗證，我想我們也是在run過一個小小小專案所必備的流程。

基於以上的概念，在處理一個專案時，如何最大化提升效率呢? 作者便提出了外科手術團隊的概念，以一人為主體，其他人則各司其職，作一個輔助的部分，處理一些小的專案，這樣明確的分工制度，除了能減少溝通成本，也能因為少數人進行決策，維持對產品的概念的整體性，減少不同人對產品概念的看法不同，在認知上造成差異的錯誤。

老實說，我並沒有看完整本書，但從前面大部分篇章，都能看到作者對團隊組織結構以及管理層面的探討。技術可能與時俱進，需要不斷去更新，但對專案組織等等的管理，卻是一個整體概念變化不大的部分，這也是為什麼人月神話經過了40年的光陰，仍然能被教授推薦閱讀的原因，這也是在職場與人co-working時很重要的部分，期許自己能先精進實力，爾後在職場的時光，能細品本書的字字句句。





