我想大家都遇到過這種情況:
??? 需求不是很明確而且肯定會變化;
??? 還沒有開始做分析設計,對工作量心里沒譜;
??? 上面給了最后期限,卻不給資源……
?
??? 這種情況下,你心里知道風險極大,卻必須接受這個工作。
????
????記住,你是開發人員,你的本分是系統實現——你只應該承擔開發的風險。
????怎么樣更好地“堅守本分”,不干預你職責外的風險呢?
??? 其實有很好的辦法,
本文給出一些建議。
?
?
1. 關于工作量
??? 工作量是一個概率!
??? 對于每個工作項,其完成所需的工作量(人天)都是一個概率分布
??? 有最小值(但概率幾乎為零)
??? 有可靠值(最可能的情況,概率在80%左右)
??? 沒有最大值(最大值為無窮,其概率同樣為零)
?
??? 如果估算工作量時只估算了最小值,并且把這個值最為依據,那么對不起,你死定了——大家根據這個值盯著你的工作,而你按照這個時間表完成的概率幾乎為零。那么項目延期的風險完全由你承擔。
?
2. 關于累計工作量
??? 關鍵路徑上概率的累計是每個工作項概率相乘!
??? 比如關鍵路徑上有3個認為,其最可能完成的工作量和概率分別為(10人天,70%),(15人天,80%),(9人天,75%)
??? 則使用10+15+9=34人天整個完成的概率是:70%×80%×75%=42%!
??? 通常關鍵路徑上會有10個以上的工作項,即使每個工作項按照概率90%來估算工作量,整個完成的概率也只有0.9^10=53%!
3. 概率來自哪里?
??? 概率來自風險!
??? 風險主要來自需求變化!
4.如何應對
??? 工作量的估算不是簡單的數字!
??? 工作量的估算還要考慮風險。最簡單的辦法是定一個風險系數。風險系數取決于需求不明確,需求可能變化,開發人員會生病等等。
??? 比如,
??????? 情況??????????????????????????????????? 風險系數
??????? ========================
??????? 需求不明確??????????????????????????0.5
??????? 需求可能發生很大變化????????????????1.5
??????? 需求會增加很多??????????????????????2--3
?
??? 等等。因為讓你報工作量的時候通常沒有給你充分的時間,所以可以只從需求的確定程度來風險系數。
?
??? 最終,最可能的工作量為最小工作量×(1+風險系數)
?
?
??? 整體工作量要加保險系數。
??? 由于概率累乘,整體風險還是很大。如果要保證85%以上的可靠性,還要在整體上進行調整。
??? 比如,最后匯總的工作量為200人天,而關鍵路徑上計算出的概率為50%,為了保證總體有85%的概率,則
??? 需要的工作量還要增加一個保險量,大體上是(?可靠值-?最小值)×0.8
??????????? (根據概率分布曲線導出,不是很精確,也沒必要精確)。
5.注意事項
???? 使用人天作為工作量的單位
??????????? 2人月很可能被砍到1人月,但40人天通常被砍到30人天。
??????????? 記住每個月只有22個工作日。遇到法定假日更少。
???????單個工作項,工作量估算一定要客觀。
??????????? 單個工作項的工作量很容易估算,不要讓別人挑出問題。
??????????? 如果有問題在風險系數上做文章。
???????工作量估算和項目計劃要隨時更新
??????????? 已完成的工作項,不再存在風險,同時實際完成時間已經確定。
??????????? 需求在逐步確定,風險在逐步降低。
??????????? 有新需求時,加上新的工作項。
??????????? 隨時估算新的風險可能。
?
?
?
6. 討價還價
??? 上面在工作量上討價還價時,其實是在幫我們逐漸確定需求,減少風險。
???????? 比如,
??????? 甲:這個為什么要用這么長時間?
??????? 乙:如果需求能夠確定,那么用的時間還是很少的,但是現在不確定,風險系數比較高。
???????? 甲:是嗎?我看看,嗯,這個功能我們就不做了。
???????? 乙:這樣啊,風險系數降低到XXX,最可能完成的工作量是XXX。這個功能不做了嗎?我們簽字確認一下?
?
7.實例
??? 以后有時間給出一個實際的例子。包括快速分析設計,工作量估算表模板,實際進度中對工作表的更新等等。
?
?
???????
本人的最新博客遷移到http://thinkinside.tk,使用GitHub Pages建立。我會陸續將所寫的文章遷移過去,并進行補充和修正,
歡迎過來圍觀。