《人月神話》中的「計畫謬誤」

2021-10-01 08:18:24 字數 1109 閱讀 4638

何為計畫謬誤?

2023年,「計畫謬誤」一詞最先由心理學家丹尼爾·卡內曼和阿莫斯·特沃斯基提出,它指人們低估任務完成時長的傾向。

卡內曼和特沃斯基指出在制定預期計畫時,人們傾向於無視歷史資料。我們的預期沒有建立在歷史證據(粉刷房間總是需乙個月)上,而是僅關注下乙個任務的特點(房間小,不會花太長時間)。

2023年,卡內曼在《thinking fast and slow》書中作了進一步闡釋。他認為估計錯誤常可歸咎於以下兩個關鍵因素:

沒有考慮過去類似任務的完成時間

大膽假設不會出現耽誤工期的複雜情況

但好訊息是如果我們弄懂了低估工期的緣由,那麼我們便可以避免掉進計畫謬誤的陷阱裡,制定更加實際的預期計畫。

計畫謬誤與《人月神話》中的片段相似

對於軟體專案進度的估算往往會根據專案的緊急程度而得出過於樂觀的結果,這一方面是因為所有的程式設計人員都是樂觀主義者,我們往往會認為「這次肯定能執行」或者是「我已經找出了最後乙個bug」,另一方面則**於市場的壓力,這種情況在國內環境更甚。我們對於進度估算的第乙個錯誤假設就是:一切都將運作良好,每一項任務僅花費它所「應該」花費的時間。而這個假設往往是一廂情願的,對於創造性工作來說,創造者常常是在實現過程中,才發現在構思設計時候的不完整性和不一致性,從而反饋到的構思設計上,處理這種問題的時間和複雜程度會隨著專案的結構以及任務的大小而呈現非線性增加的關係。所以對於大型軟體專案來說,「一切都將運作良好」就是一件概率非常小的事情了。

在軟體專案中我們往往用人月這個指標在衡量專案的工作量。但是人月這個指標實際上是乙個危險的帶有欺騙性的神話。它暗示著人員數量和時間是可以互相替換的。只有在將任務分解給參與人員後他們之間不需要互相交流的情況下,人數和時間才是可以互換的。在實際軟體專案中,只要專案具有一定規模,不論是設計、開發、測試、部署各個階段都會有分解任務給不同人員,而且這些階段本身也屬於一種任務的分解,在不同人員間分解任務就不可避免的引發額外的溝通成本——培訓和相互溝通。因為軟體開發本質上是一項系統工作——錯綜複雜的關係下的一種實踐,溝通、交流的工作量非常大,它很快會消耗任務分解所節省下來的個人時間。簡單來說就是,3個人要幹3個月的事情不是說安排9個人就能1個月幹完了。而且,在進度落後的專案中增加人手的做法,往往只會使進度更加落後。這就是去除了神話色彩的人月。

人月神話 人月

缺乏合理的進度安排是造成專案滯後的最主要的原因,它比其他所有因素加起來的影響還大 引起的原因 a.估算技術不嚴謹科學,缺乏有效研究,建立在不真實的假設 一切會執行良好 b.對進度缺少跟蹤和監督 c.認為人月可以互換,進度與工作量不等同 程式設計人員的樂觀主義 人月關係 a.人員和時間的關係 完全可以...

人月神話筆記 焦油坑 人月神話

程式 程式設計系統 程式設計產品 程式設計系統產品 程式設計產品 程式設計系統 程式設計系統產品 美食的烹調需要時間 片刻等待,更多美味,更多享受。good cooking takes time.if you are made to wait,it is to serve you better,an...

人月神話 mobi 人月神話 焦油坑

所有的程式設計人員都是樂觀主義者 在軟體領域,很少能有像 人月神話 一樣具有深遠影響力和暢銷不衰的著作。brooks博士為人們管理複雜專案提供了最具洞察力的見解,既有很多發人深省的觀點,又有大量軟體工程的實踐。以 焦油坑 一章開篇,這一得名於自然界的產物,遠古時代困住了無數的洪荒巨獸。而作為人類歷史...