為什么程序員預估的時間都不靠譜
一個我曾經(jīng)共事過的很有經(jīng)驗的項目經(jīng)理曾宣稱說,他會拿程序員估計出的時間乘以π值,然后再提高一個數(shù)量級,這樣得出的才是正確的開發(fā)所需要的時間。1天時間經(jīng)過變換后是3.14周。他經(jīng)過慘痛的教訓才認識到程序員預估的時間都是不靠譜的。為了能更精確的對程序員估計的時間進行換算,我創(chuàng)建了一個時間換算表,重點說明究竟是什么地方出了問題。
| 估計時間 | 程序員的思考 | 程序員忽略的事情 | 真正所 需時間  | 
        
|---|---|---|---|
| 30秒 | 只需要對代碼進行很小的改動就搞定了。我清楚的知道程序應該在哪里做修改、怎么修改。只需要30秒時間。 | 啟動電腦的時間,啟動開發(fā)環(huán)境的時間,獲取源代碼的時間。編譯、測試、提交代碼和文檔修改的時間。 | 1小時 | 
| 5分鐘 | 一個小問題,我只需要上谷歌上查查它正確的語法就能搞定。 | 你不可能***次就能精確的查找到正確的信息,就算是找到了,在使用它之前你也需要對它做一些調(diào)整。還有編譯、測試的時間等。 | 2小時 | 
| 1小時 | 我知道該怎么做,但是這需要寫一些代碼,所以要花一些時間。 | 1小時時間太緊張,沒有給任何未預料到的事情留下余地??傆幸恍┠泐A料不到的事情。 | 2小時 | 
| 4小時 | 這需要寫一些代碼,但我基本知道該怎么做。我知道我們的標準框架里的Wizzabanga模塊能做這個事情,但我需要去查查文檔看如何正確的調(diào)用它。 | 這可能是唯一一個符合現(xiàn)實的估計。在任務(wù)不是很大、能夠處理的情況下,它給未預料到的問題留下了足夠的時間。 | 4小時 | 
| 8小時 | 我首先要重構(gòu)Balunga類,把它拆分成兩個,然后在Wizzabanga模塊里加入調(diào)用代碼,***在界面上添加一個新的表單域。 | 系統(tǒng)的很多地方都對Balunga類有依賴關(guān)系。大概有40多個文件需要調(diào)整。界面上新添加的屬性的同時數(shù)據(jù)庫里也要新增字段。8小時是十分理想的狀況的時間。程序員在估計時間時總忽略了還有很多其它事情要做。 | 12-16小時 | 
| 2天 | 這需要寫很多的代碼。我需要在數(shù)據(jù)庫中添加一些新表,用一個界面來顯示它們,然后還要寫存取它們的邏輯代碼。 | 對大多數(shù)程序員來說,2天時間能完成多少東西都是很難說的??隙〞幸恍〇|西被遺忘。并不是指一些小的東西,一些主要功能上的重要東西也有可能在你估計時被遺漏。 | 5天 | 
| 1周 | 哇塞…這可是個大任務(wù)。我還不知道如何實現(xiàn)它,我不是告訴你我不知道如何做。一周時間應該足夠了,但愿,希望能夠,但我不會要求更多的時間,不然的話他們會說我能力不行。 | 這樣一個任務(wù)對于大多數(shù)程序員來說都很難理解消化。這個任務(wù)應該發(fā)回給架構(gòu)師,讓他把任務(wù)拆分成更小的模塊,對各模塊應該如何執(zhí)行給出一些指導。架構(gòu)師應該能找到實現(xiàn)它的一些簡單的方法——或者認識到這個任務(wù)的工作量比他預期的要多。 | 2-20天 | 
預估時間本身就很難。每個程序員的估計都會跟真正需要的時間有些差距。估計時間短了說明有些事情被忽略了(編譯,測試,提交代碼)。估計時間超了說明任務(wù)太大,難以理解。
對于資歷較淺的程序員,這種估計誤差是混亂的,他們經(jīng)常會輕視一些任務(wù),同時又對一些稍微有難度的任務(wù)過分高估。我認為,對一個有經(jīng)驗的程序員,一個任務(wù)的時間應該在半小時到24小時之間,超出24小時的任務(wù)都需要拆分。程序員在腦中想一想可能會認為要60小時,但實際上即使是很有經(jīng)驗的程序員也需要將任務(wù)分成可控的模塊再來分析做決定。
還有一個很重要的需要認識到的一點是,編程上的經(jīng)驗并不等同于時間估計上的經(jīng)驗。一個從沒有做過工期估計的程序員不會擅長估計時間。如果不去拿真正需要的時間和估計出的時間進行比較,你不可能從其它反饋信息之得到正確估計時間的經(jīng)驗。
每個程序員都會用到評估技巧。為了提高你的這項技能,你可以在你從事的每個任務(wù)上進行鍛煉。在任務(wù)開始時先預估開發(fā)所需時間,拿它跟你最終真正用掉的時間進行對比。這樣,你不僅在對任務(wù)細節(jié)的理解上有提高,同時也提高了你對時間預估的技能。
英文原文:Programmer Time Translation Cheatsheet -or- Why Programmers Are Bad at Estimating Times
本文鏈接:http://www.aqee.net/why-programmers-are-bad-at-estimating-times/















 
 
 





 
 
 
 