讀書筆記二

2022-09-22 19:52:17 字數 1856 閱讀 6654

本此分享《人月神話》第二章“人月神話”

本章給我印象最深的就是對“人月”這個工作量單位的分析,“成本的確隨開發產品的人數和時間的不同,有著很大的變化,進度卻不是如此。因此我認為 用人月作為衡量一項工作的規模是一個危險和帶有欺騙性的神話。 它暗示著人員數量和時間是可以相互替換的。”

第一種情況:

人數和時間的互換僅僅適用於以下情況:某個任務可以分解給參與人員,並且 他們之間不需要相互的交流(圖 2. 1)。 這在割小麥或收穫棉花的工作中是可行的;而在系統程式設計中近乎不可能。

第二種情況:當任務由於次序上的限制不能分解時,人手的新增對進度沒有幫助(圖 2. 2)。無論多

少個母親,孕育一個生命都需要十個月。由於除錯、測試的次序特性,許多軟體都具有這種

特徵,

第三種情況:

對於可以分解,但子任務之間需要相互溝通和交流的任務,必須在計劃工作中考慮溝

通的工作量。因此,相同人月的前提下,採用增加人手來減少時間得到的最好情況,也比未

調整前要差一些(圖 2. 3)。

第四種情況:

溝通所增加的負擔由兩個部分組成,培訓和相互的交流。每個成員需要進行技術、專案目標以及總體策略上的培訓。這種培訓不能分解,因此這部分增加的工作量隨人員的數量

呈線性變化。

相互之間交流的情況更糟一些。如果任務的每個部分必須分別和其他部分單獨協作,

則工作量按照 n(n-1)/ 2 遞增。一對一交流的情況下,三個人的工作量是兩個人的三倍,四

個人則是兩個人的六倍。而對於需要在三四個人之間召開會議、進行協商、一同解決的問題,

情況會更加惡劣。所增加的用於溝通的工作量可能會完全抵消對原有任務分解所產生的作

用,此時我們會被帶到圖 2. 4的境地。

通過對專案的分析,證明了人月這個謬論,受益匪淺,還有其他的收穫:

1. 缺乏合理的時間進度是造成專案滯後的最主要原因,它比其他所有因素加起來影響還大。

2. 良好的烹飪需要時間,某些任務無法在不損害結果的情況下加快速度。

3. 我們的構思是有缺陷的,因此總會有bug。

4. 我們圍繞成本核算的估計技術,混淆了工作量和專案進展。人月是危險和帶有欺騙性的神話,因為它暗示人員數量和時間是可以相互替換的。

5. 在若干人員中分解任務會引發額外的溝通工作量——培訓和相互溝通。

6. 關於進度安排,作者的經驗是為1/3計劃、1/6編碼、1/4構件測試以及1/4系統測試。

7. 因為我們對自己的估計技術不確定,所以在管理和客戶的壓力下,我們常常缺乏堅持的勇氣。

8. brook法則:向進度落後的專案中增加人手,只會使進度更加落後。

9. 向軟體專案中增派人手從三個方面增加了專案必要的總體工作量:任務重新分配本身和所造成的工作中斷;培訓新人員;額外的相互溝通。

其中:註明的brooks法則,人月神話一文的核心觀點。用人月這一觀念來衡量專案進度帶有欺騙性。因為他使得專案看上去好像人力和時間是可交換的。如果時間不夠,那麼增加人手就可以加快進度。但是這個衡量方式忽略了新增加人手的培訓時間、隊員之間的溝通時間等等因素,結果就是,盲目的增加人手只會導致專案落後。所以問題是,如何使得專案進度不落後;要想使得專案進度不落後,就要制定出合理的專案進度。所以,問題是,如何制定出合理的專案進度。