1. 程式人生 > >《人月神話》閱讀筆記02

《人月神話》閱讀筆記02

習慣 方式 人月神話 開發 挫折 單位 吸引 神話 依賴

第二章 人月神話

這一章主要講述了樂觀主義、人月、系統測試、空泛的估算、重復產生的進度災難。

所有的編程人員都是樂觀主義者。可能是這種現代魔術特別吸引那些相信美滿結局的人;也可能是成百上千瑣碎的挫折趕走了大多數人,只剩下了那些習慣上只關註結果的人;還可能僅僅因為計算機還很年輕,程序員更加年輕,而年輕人總是些樂觀主義者——無論是什麽樣的程序,結果是勿庸置疑的:“這次它肯定會運行。”或者“我剛剛找出了最後一個錯誤。”所以系統編程的進度安排背後的第一個假設是:一切都將運作良好,每一項任務僅花費它所“應該”花費的時間。對這種彌漫在編程人員中的樂觀主義,理應受到慎重的分析。

第二個謬誤的思考方式是在估計和進度安排中使用的工作量單位:人月。成本的確隨開發產品的人數和時間的不同,有著很大的變化,進度卻不是如此。因此我認為用人月作為衡量一項工作的規模是一個危險和帶有欺騙性的神話。它暗示著人員數量和時間是可以相互替換的。

在時間進度中,順序限制所造成的影響,沒有哪個部分比單元調試和系統測試所受到的牽涉更徹底。而且,要求的時間依賴於所遇到的錯誤、缺陷數量以及捕捉它們的程度。理論上,缺陷的數量應該為零。但是,由於我們的樂觀主義,通常實際出現的缺陷數量比預料的要多得多。因此,系統測試進度的安排常常是編程中最不合理的部分。

觀察一下編程人員,你可能會發現,同廚師一樣,某項任務的計劃進度,可能受限於顧客要求的緊迫程度,但緊迫程度無法控制實際的完成情況。就像約好在兩分鐘內完成一個煎蛋,看上去可能進行得非常好。但當它無法在兩分鐘內完成時,顧客只能選擇等待或者生吃煎蛋。軟件顧客的情況類似。

當一個軟件項目落後於進度時,通常的做法是什麽呢?自然是加派人手。這可能有所幫助,也可能無法解決問題。

《人月神話》閱讀筆記02