人月神話閱讀心得(張家凱,李旼學) --- 張家凱 --- 關於人月神話的解釋,這是讓我非常印想深刻的一段,且就在開頭的第二章,所謂的人月就是人與時間的關係,在當工作可以被切分且工作的人「彼此不用溝通的條件下」,假設一個小任務一個人可以三天做完,那麼三人一天便可以做完,然而在軟體工程如果這樣來衡量工作規模是相當危險的,因為溝通成本也會隨著人數增長而提高(包括人員對產品概念性的不同),所以有的時候添加人手是拖延了進度而不是縮短。 而這也帶出了溝通的重要性,一直延伸到了為何巴別塔會失敗(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時很重要的部分,期許自己能先精進實力,爾後在職場的時光,能細品本書的字字句句。
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up