項目時間估算
大學里跟老師做的項目幾乎沒有一個是按時間完成,都是在拖時間,一拖再拖,每次老師初步地估算這個項目需要多少時間,我腦袋里都下意識地想(老師估算的時間*2,或*3,或者更多),其中最糟糕的一個項目估計用一個月,結果用了一年才勉強結束,實際時間=估算時間*12,我的天呀,當時估計也就是學校這種地方做得出來。到了企業之后,實際時間是估算時間的兩到三倍也是很正常的事,這還是在需求明確到85%以上的情況下,需求不清的情況下,時間就海了去了。
項目開始時,客戶簡單的描述需求,開發方便豪言壯語一個時間(有時這個時間連需求分析都做不完),中間客戶改了需求,開發方聲稱“絕對不是問題”(接項目時要人情、關系之類的,客戶改點需求,一般不太好明說要加時間),到了時間了,還差很多沒做完(項目組的人趕工都加了好幾天的夜班了),給客戶演示下,忽悠下客戶,然后再說我們再完善一下(一般這時客戶也會再提點新需求),如此反復,就不知道要完善到什么時候去了。最后提起這項目,開發方暗罵客戶扯蛋,客戶暗罵開發方混蛋。
需求不清的情況下,本人暫時不知道怎么估算時間(不知各位有什么高招,分享下)。但為什么在需求明確到85%以上的時候,我們實際時間還是估算時間的兩到三倍,或者更多,這種情況我想扯蛋是出在我們自己身上了,我總結了一下,分為兩種:
1, 自己豪言壯語“害”自己,拿到了一個需求或一個技術難點,看了一下,道:“這個容易,兩三天搞定”,“這個系統簡單,撐破天一個月”,真的動起手來發現挺難的,搞了N個兩三天或撐破了N個天才搞定。
2, 別人豪言壯語“害”我或整個小組,這個別人通常指市場人員,在軟件公司基本是市場跟技術之爭,而在國內,因為各種原因往往又是市場占主導,一個項目下來,市場人員感覺一下需要多少時間,技術的就得照辦,你跟他說“時間不夠”,通常都會回復,“加加班,抓抓緊”,往往按他估算的天數就是按24小時工作也不夠(更離譜有的連需求都做不完),再說市場的不懂技術,實際時間往往是他估算的時間三、四倍也不足為奇。你直接跟他說你的估算時間=他估算時間*3,是不是從側面貶低你上級的智商,他會接受嗎?

經過了一段時間的痛苦之后,我還是小有點心得了,如下:
問題1是比較容易解決的,因為改變自己遠比要改變別人容易得多,剛開始的時候,我們自己可能會夸海口,隨著經驗的非富,對自己的時間估算會慢慢地八九不離十,我就是這樣的。剛畢業那會,我領到一個任務,看一下就估算個時間(通常很短,為了表現自己,再加上精力比較旺盛),工作時間做不完,就加班做(反正也沒什么事),慢慢我也知道具體的任務我大概需要多少小時來做。
不過剛開始帶小組的時候,接到一個任務,我就估算了我大概要多少時間,然后小組多少個人就算是多少個我,估算時間=我要的總時間\小組人數(好笨的想法呀,不用時間跟組員交待任務的嗎?個個組員都是我嗎,比我強的還好,頂多做完了休息,差一點的就麻煩了),結果實際時間多了很多。后來我就吸取了教訓,跟組里的人相處久了,心里也有底了,誰比我強,大概強多少,誰比我弱,弱多少(最好能量化,單憑感覺靠不住),這樣一折算可以把時間算個大概;再把任務跟組員交流一下,基本估算的時間八九不離十。
問題2就比較麻煩了,上級(非技術人員、市場人員之類)通常估算一個項目的時間少得離譜,說出來嚇壞項目組長,我通常把這種情況叫做放衛星。面對上級放衛星,要想辦法說服上級采用我們的時間或者讓上級接受這個時間(特殊情況),因為上級是非技術人員的話,一般是憑感覺估算時間,所以一般不要試圖用自己感覺的時間來證明別人的感覺的時間不對。(為什么你感覺的就對,我的就錯,上級肯定不會采納的,反而會讓上級感得你做事不積極,想拖時間,怕苦怕累,對任務討價還價,前期我也犯了這樣的錯誤,給上級留下了不好的印象),后來我總結了一下,發現說服上級是需要一定的技巧的。
1, 有理有據,用數據說話。上級憑感覺估算的時間與自己估算的時間有很大差距時,不要很著急地直接說出自己估算的時間(這樣容易造成直接的對立,之后的交流會很僵),可以先描述推出時間的依據是什么,依據的數據支持是什么,然后當著上級的面根據這個依據把我們估算的時間給算出來,古語有云:事實勝于雄辯;想必上級會欣然接受的。(畢竟大家都是為了把工作做好)

經歷:
有一個項目(信息系統,需求比較明確),在數據庫設計做完之后(120多張表呀),我的上級(市場人員出身),跟我說:“這個簡單呀,最多15天就搞定了,你看怎么樣?”當時我一聽心里就發毛,當時我估算的時間是45天呀(整整差了3倍);我首先表達了我的時間跟他算的有點差距(但沒有直接說我的時間),然后列舉了前面公司所做的幾個信息系統的項目,如下:
項目A,3人,60天,140張數據庫表,平均每人每天處理0.8張表
項目B,5人,30天,110張數據庫表,平均每人每天處理0.7張表
。。。。
然后我跟他說:現在我們效率提高了,再加上項目緊,我們會加下班,大概算每人每天處理1張表吧,小組共3人,也要45天這樣呀。最后我還笑著跟他開了個玩笑:我們組每天24小時工作,一直干15天,都有點勉強呀!(當時在座的都笑了)。當時上級思考了一下,然后就采用了我的45天的計劃。

2, 把任務分配到組員,再請上級到小組中交流,依靠群眾的力量說服上級,反過來每個組員都當著上級承諾了開發時間,對他自己也是一種鞭笞、激勵,有利于按時完成任務。小組組長單獨跟上級說,他官大一級壓死人,再說自己心里也有點怕怕吧。把他請到小組里來,人多了自然膽也壯了,將每個人的開發任務給他看,每個人說說對自己任務的看法,難度怎么樣,要多久才能完成(參照第一條,有理有據,用數據說話),注意控制氣氛,盡量以聊天的形式,不要搞僵氣氛,最后由自己進行一個總結,把總的時間明確化,這時上級面對群眾的力量,一般也會同意你的估算時間。
特殊的情況,假如上級就是要按他估算的時間來(原因可能有很多,他就認為他的是對的,客戶摧得緊等等),實在無法說服上級完全采用自己估算的時間,能多加幾天是幾天,但是在心里一定要有個完成項目的估算時間,哪怕這個時間是上級指定的10倍(這個時間最好是比較可靠的,有依據),我始終認為一個項目完成的時間是多少就是多少,不為因為上級硬壓一個很短的時間就真的是這個時間了(我發現加班做不了多少事,不知道大家的感覺怎么?),很多時候,上級寧可你最后延長或拖N倍于他的估算時間,也不采納你的N-X倍比較可靠的時間(有點無奈)。假如你心里沒底的話,會做到很郁悶(因為每次延時,整組人都會覺得很累,可能是因為一鼓作氣,再而衰, 三而竭;延時越多,整組人會越疲倦);遇到這種情況,可以暗地按自己計劃走,不停地延時到自己估算的時間就OK了(這是針對那種放衛星的估算時間,差距不大的時間趕趕工就可以,要積極地工作,呵呵)
最后來個估算時間的總結:有理有據地估算時間,說服上級采用這個時間。遇到放衛星式的項目時間,自己心里要有底,不可盲從。