我知道準確估算是有可能的。我自己就做到過(我的一個項目曾被估算需要1300工時,結果用了1302工時完成),我也教過數(shù)千人怎樣做?;叵胍幌驴死硕桑喝魏翁^先進的技術都會被誤認為魔術。準確估算也是一項技能,可以在實踐中學習提高,直至外行看起來像魔術的程度。
說起來好像多余,進行估算的第一件事就是知道你要估算什么?,F(xiàn)在,讓我們假設有人要求你估算粉刷你的臥室需要多少工作量(占用你多少時間)。雖然這是一件很小的工作,但它仍有相當多的不確定性:
·你是否需要粉刷天花板和木器還是只有墻壁?
·有沒有需要粉刷的窗戶?這些窗戶有窗框嗎?
·房間里有家具嗎?能移動嗎?如果能移動,把它移回來是否算在“粉刷房間”之內?
·選擇顏色是否包括在工作之內?還有去商店購買涂料呢?
·需要刷多少遍?需要做什么特殊效果(例如大理石紋)嗎?
·有沒有人幫你做?還是你要一個人做完?
如果你不知道這些問題的答案,你有多個選擇。你可以完全拒絕去做估算;你可以做一個預留大量不確定性的估算;你可以對上述問題假設一些答案并根據(jù)這些假設做估算;你還可以在做估算之前取得上述問題的答案以減少不確定性。這些方法中每一個都是可以接受的,只要相關人員知道你使用哪個方法就行!
大多數(shù)時間,你會將幾種方法結合使用。你會做一些合理假設(并且你一定會把你的假設記錄下來?。D銜栆恍﹩栴}。然后你就運用自己的最佳判斷。
你可以用區(qū)間估算改進你的最佳判斷。區(qū)間估算是怎樣的?在它的最簡單形式中,你對于你認為可能需要的工作量估算一個低值和一個高值。例如,在粉刷你臥室這一案例中,而且假設只粉刷墻壁,你可能估算2到3小時。
區(qū)間估算背后的基本概念是你不需要知道所需工作量的精確值。你需要知道的是它不會比你的進度表多出一整天。你需要知道的是它不是一件能在幾分鐘做完小事。只要實際結果落在估算值的2到3小時左右,你的估算就相當不錯了。
即使實際結果超出了這個范圍,你的估算也是很好的,因為就當時你能掌握的情況來說這已是你能做出的最佳估算了。另外,你可以從這次偏差(實際結果超出預測范圍)學到東西并改進你以后的估算。
使用區(qū)間估算大大減少了估算過程的痛苦。如果你習慣于單點估算(見下文),要在2小時和3小時之間選擇會非常困難。甚至做出一個2.5小時的估算都會困難,因為你知道實際會多于或少于那個數(shù)量。使用區(qū)間估算讓你能在不確定性之下進行操作。
單點估算是魔鬼的作坊;它們就是魔鬼!在任何情況下都不要向任何人提供一個單點估算。如果你的老板堅持要單點估算,那他或她很可能是想要一個預算,而非估算。給他們一個預算也沒問題,但你真的應當讓他們也知道你的估算,這樣他們就能了解你對預算數(shù)字的可靠性有多大信心了。
你可以通過三點區(qū)間估算進一步改進你的判斷。在簡單區(qū)間估算的低值和高值基礎上,你加上一個區(qū)間內最有可能結果的評估。
比方說,假設你生活在電影《土撥鼠節(jié)》描繪的世界里,這樣你就能粉刷你的房間100遍,并且記錄下每次實際用了多少工作量。我們發(fā)現(xiàn),你耗時從未少于2小時,也從未多于5小時。我們還發(fā)現(xiàn)你的實際用時結果構成一個三角形分布,峰值在3小時。
由于得到了這一實際的歷史數(shù)據(jù),對于粉刷一間相同大小的臥室,你就能夠估算出所需的工作量如下:
·最可能:3小時
·樂觀:2小時
·悲觀:5小時
我知道有這樣精彩完美的歷史數(shù)據(jù)來支持你的估算的機會將是絕無僅有的,但區(qū)間估算的好處是你不需要完美的數(shù)據(jù)。只要三點區(qū)間估算是合理的,誤差就可能在項目進行的過程中相互抵消了。
即使在這個案例中,擁有完美的數(shù)據(jù),你仍然不能準確知道粉刷下一間臥室需要多少工時??赡苁?.5小時,也可能是3.75小時,這不要緊。重要的是你有合理的估算;你的估算能讓你有效地管理項目。
準備三點區(qū)間估算
準備三點區(qū)間估算的技巧很重要,尤其是如果你的團隊成員過去從未使用過這一技術。
一對一工作。讓我們再次用一個簡單案例開始,你需要一名團隊成員去估算要完成一項特定工作可能需要他們多少工作量。第一步是要確認你們兩個對于“估算”和“結果”的詞義有相同的理解。盡量保持你們的語言一致,即使你覺得有點別扭。
比如,人們總是喜歡問“你認為這需要多久?”之類的話。這個問題可能產(chǎn)生一個期間估算而非一個工作量估算。一定要記住這樣問:“你認為這項工作要用你多少時間?”
開始討論時要先審視下需要做的工作以確定你和你的團隊成員對于工作任務有相同的理解。如果有不明確的地方,要確定怎樣處理,是作假設,還是去找答案,或者其他做法。
在你們對于工作達到適當程度的一致之后,詢問他們對最可能工作量的估算。我通常用這樣的措辭,“如果這些假設是正確的,你認為這件工作可能占用你多少時間?”在他們回答了這個問題之后,我問,“如果一切順利,如果你在這件事上很幸運,還使用同樣的假設,你認為這件工作會占用你多少時間?”然后用相似的措辭去得到一個悲觀的工作量估算。
要知道與任何一個人開始進行的幾次談話都不會很順利。他們會產(chǎn)生另外的問題,或者在談話的任何一點上要求你進行另外的假設。很好,隨他們去。幫助他們攀登學習曲線。我的經(jīng)驗是大多數(shù)人需要3到5個來回才能接受這一過程。在這之后他們將會主動把三點估算交給你。
要不客氣地質疑他們的估算,但是要建設性地詢問一些澄清性質的問題。不要貶低他們的估算。如果你們的意見有分歧,最有可能的原因是你們對工作的理解不一致。努力找出并消除這些分歧。
以詢問最可能結果作為開始似乎也很重要 ,然后再問樂觀的結果,以及悲觀的結果。我不知道為什么,但是這個順序似乎效果最好。
小組工作。你的大部分估算不會是一對一做出來的,而是由一些小組作為一個團隊計劃過程的一部分做出來的。這一基本過程對于這些小組來說是一樣的:
·對要做的工作進行討論并取得一致。
·記錄下各個假設。
·從最可能結果開始作三點區(qū)間估算。
即使有些小組成員對于項目工作沒有足夠的專業(yè)知識,他們的參與也有助于將隱含的假設顯露出來,以及建立整個團隊對于工作量估算的合作和理解。
有些項目經(jīng)理企圖通過只要兩個數(shù)字—最可能結果和一定變動范圍(例如,“10小時,增減2”)來加快三點區(qū)間估算的進度。即使這種表述相當于三點區(qū)間估算的8、10、12,以我的經(jīng)驗,它缺乏我的估算過程中的豐富內容,它似乎也沒有同樣程度的深思熟慮。
認識估算工作的關鍵成果
當我教人進行估算時,我強調估算工作的最重要成果是一個準確的項目預算—實際結果落在預算基準線的可接受區(qū)間內??山邮艿念A算準確度因項目的不同而不同:
·在新產(chǎn)品開發(fā)(NPD)中,項目最終成本達到最初估算的3至4倍是可以接受的。
·在信息技術中,如果各項要求經(jīng)協(xié)商一致且保持不變,±10%是一個合理目標,然而如果該項目的任務是必須完成的,那么NPD的+300%至400%也可以是完全可以接受的。
·對于一個固定價格的顧問合同,管理層可能不愿意接受任何的超支。
我主張,如果滿足兩個條件:(a)工程項目的實際結果大部分時候能落在估算區(qū)間內,以及(b)實際結果的總和接近于區(qū)間估算的期望值總和,一項估算就是準確的。簡而言之,我們關心總數(shù)。我們關心單個結果只是達到最終目的的手段而已。
我來做個說明。比如我們有一個項目包含100項工作。簡單起見,讓我們暫時忽略排期問題,而且讓我們進一步假設每一項工作都有20、25、30小時工作量的三點區(qū)間估算。每一單項工作的預算將是25小時(這一點后面有論述),于是這一項目的預算將是2,500小時。
如果這一項目按計劃進行,大部分的工作項,也許70%左右,其實際成本將會在預算工作量的1到2小時誤差之內。1至2項可能耗費多達30小時;1至2項可能只用20小時。但是項目的總體工作量可能非常接近2,500小時。從統(tǒng)計上,我們有大約95%的概率該項目的完工時間將會落在±50小時的區(qū)間內。不錯!
作為對比,我們拿一個相似的包含100項工作的項目,只是每一項工作的區(qū)間估算為10、25、和40小時工作量。我們仍將為這一項目做2500小時的預算,但實現(xiàn)±50小時之內誤差的概率只有大約60%。如果我們想要95%的準確度,需要將誤差范圍增大到±120小時。
三點區(qū)間估算鼓勵團隊中每個人既要用足又不浪費時間和工作量以正確完成其工作項,這有助于達到我們的準確度目標。我們避免了許多不當行為,包括:
·團隊成員可能會用足預算,即使他們不需要這樣。
·團隊成員可能偷工減料以避免超出預算。
·該項目的各級經(jīng)理可能在解釋細小偏差上浪費時間。
·經(jīng)理們可能會操縱報告數(shù)字以使估算看起來“更好”。
最后一點:在有些情況下單點估算就足夠了。例如,我們能夠安全地預測一次一小時的七人團隊會議需要7小時的工作量。有沒有可能只有六個人參加?會不會用一個半小時?當然有可能,但是這種誤差機會是如此之小,我們可以安全地將其忽略。
估算不足會讓你瘋掉。你將要無休止地解釋為何你會超預算以及延誤工期。你將要無休止地面對惱怒的客戶和崩潰團隊成員。過度估算也好不了多少。你的項目將無法得到批準,因為它們看起來太昂貴了。如果你的辯解被認為別有用心的,你甚至會丟掉工作。
三點估算不會把你送到天堂。但是對于被你的項目影響到的每個人,它們會讓他的生活得到更多報償。