項(xiàng)目估算與計(jì)劃不是一般的難(中)
估算如何做出來(lái)?
這里開(kāi)始所說(shuō)的估算,全部都是指項(xiàng)目組對(duì)項(xiàng)目的估算,這個(gè)估算的目的是用來(lái)指導(dǎo)項(xiàng)目的具體工作。
有很多種估算辦法,大致可以分為兩類:
1、先得到軟件規(guī)模,然后根據(jù)公司實(shí)際的生產(chǎn)率由軟件規(guī)模導(dǎo)出工作量。
2、直接得到工作量。
第一類的常見(jiàn)方法有:功能點(diǎn)法、代碼行法,第二類的常見(jiàn)方法有Delphi估算法、微軟的由底而上估算法。
什么是軟件規(guī)模?我們先看看一個(gè)搬磚頭的估算。
假設(shè)有1000塊磚頭,它們的大小和重量一樣,每名工人每天能搬100塊磚頭,于是我們可以估算到需要10人日來(lái)搬完。10人日的意思是1名工人需要10天完成,而10名工人只需要1天就搞定了。
這個(gè)1000塊代表了工作的規(guī)模,而生產(chǎn)率就是100塊/日,這樣就可以推算出工作量為10人日。建筑工程可以得到土石方量、混凝土量、鋼筋量等代表工作規(guī)模的數(shù)據(jù),這樣就比較容易推算出完成這些工作需要的工作量。
而軟件工程估算也希望能做到類似的效果,但用什么來(lái)代表軟件項(xiàng)目的工作規(guī)模呢?功能點(diǎn)和代碼行是常見(jiàn)的兩種軟件規(guī)模表示方式。
軟件規(guī)模是與軟件具體生產(chǎn)技術(shù)、項(xiàng)目管理辦法、項(xiàng)目組人員水平等無(wú)關(guān)的東西,軟件規(guī)模只和軟件項(xiàng)目本身的性質(zhì)相關(guān),如果我們能找到合適的統(tǒng)一的標(biāo)準(zhǔn)來(lái)度量每個(gè)項(xiàng)目的規(guī)模,這樣每個(gè)軟件項(xiàng)目之間就可以進(jìn)行橫向比較了。功能點(diǎn)法和代碼行法都希望能達(dá)致這樣的效果。
功能點(diǎn)法的基本思路是將復(fù)雜的軟件分解為一個(gè)一個(gè)獨(dú)立的粒度一致的功能點(diǎn),附加一些調(diào)整系數(shù),得到軟件規(guī)模。
我們的項(xiàng)目大部分是數(shù)據(jù)庫(kù)四輪馬車的操作(查詢、增加、修改、刪除),功能點(diǎn)法從比較高的層次對(duì)這些工作進(jìn)行抽象,有一套嚴(yán)密的規(guī)則可以讓你將需求分解成一個(gè)一個(gè)的功能點(diǎn)。代碼行法思路也類似,不過(guò)分解的結(jié)果是代碼行而已。但一般來(lái)說(shuō)代碼行與軟件的實(shí)現(xiàn)技術(shù)相關(guān)度太大,大家會(huì)更加偏愛(ài)功能點(diǎn)法。
功能點(diǎn)法和代碼行法有比較長(zhǎng)的歷史,也有很多詳細(xì)資料,大家可以去查閱一下。這方法理論上很理想,但實(shí)踐效果很差,我還沒(méi)有見(jiàn)到一家能成熟應(yīng)用并且取得比較好效果的公司。功能點(diǎn)法和代碼行法有這樣的一些難以解決的問(wèn)題:
1、只適用于數(shù)據(jù)庫(kù)四輪馬車的操作的項(xiàng)目,高技術(shù)含量、創(chuàng)造性高的軟件不適用,如游戲軟件、計(jì)算機(jī)負(fù)責(zé)計(jì)算與決策軟件等。
2、我們絕大部分項(xiàng)目是需求不明確、設(shè)計(jì)不明確,并且工期很趕的,這兩個(gè)方法都無(wú)法適應(yīng)這樣的現(xiàn)實(shí)條件。需求不明確基本上無(wú)法得到軟件規(guī)模,建筑工程為什么能做到,是因?yàn)樾枨蠛驮O(shè)計(jì)都十分明確了。
3、兩個(gè)方法的規(guī)則都很詳細(xì),要花大量時(shí)間學(xué)習(xí)和實(shí)戰(zhàn)才能掌握。
4、由工作規(guī)模導(dǎo)出工作量這樣的思考方式,難以適用于軟件項(xiàng)目。項(xiàng)目組還是習(xí)慣列出具體的任務(wù),逐條任務(wù)估計(jì)時(shí)間,而且只有這樣的工作方式才能讓項(xiàng)目組感覺(jué)更加踏實(shí)。
Dephi估算法是比較符合大家實(shí)際工作習(xí)慣,也是比較容易掌握的估算辦法。
Delphi法的大致方法如下:
1、找?guī)酌Y深專家,一起對(duì)項(xiàng)目進(jìn)行WBS,把項(xiàng)目的工作分解為十幾條最多二三十條的工作項(xiàng)。
2、全部專家各自估計(jì)每條工作項(xiàng)的工作量,并向其他專家闡述自己的理由。
3、第一次各專家估出來(lái)的結(jié)果可能差異比較大,每位專家聽(tīng)取別人的意見(jiàn)后,重新估算。
4、按照上述辦法,各專家反復(fù)估算幾次,一般次數(shù)就是2-4次,各專家估計(jì)的工作量會(huì)越來(lái)越趨近,這個(gè)時(shí)候取全部專家的平均值。
普遍認(rèn)為各專家的經(jīng)驗(yàn)與知識(shí)水平會(huì)嚴(yán)重影響結(jié)果的準(zhǔn)確性,而我的實(shí)踐經(jīng)驗(yàn)是:應(yīng)該讓項(xiàng)目組每個(gè)人自己來(lái)估算,也就是讓大家來(lái)當(dāng)專家,在這個(gè)基礎(chǔ)上可以再增加一兩名來(lái)自項(xiàng)目組外部的專家。
有時(shí)候覺(jué)得估算這個(gè)問(wèn)題搞得太復(fù)雜了,各式各樣的方法是不是太夸張了?其實(shí)最簡(jiǎn)單的方法就是讓負(fù)責(zé)該項(xiàng)工作的人自己來(lái)估計(jì)工作量,微軟的由底而上的估算方法就是這樣做的,可謂返璞歸真啊!
微軟由底而上的估算方法大致是這樣的:對(duì)項(xiàng)目各項(xiàng)工作進(jìn)行分解后(即俗稱的wbs:work breakdown structure,工作分解結(jié)構(gòu)),每個(gè)任務(wù)落實(shí)負(fù)責(zé)人,由負(fù)責(zé)人對(duì)自己的任務(wù)進(jìn)行估計(jì)。這個(gè)辦法有以下好處:
1、最終該任務(wù)是由這個(gè)人來(lái)完成的,他估計(jì)多少時(shí)間才能做完,這個(gè)時(shí)間才是最接近實(shí)際的。
2、負(fù)責(zé)該任務(wù)的人進(jìn)行估算的時(shí)候,肯定需要認(rèn)真思考這個(gè)任務(wù)的風(fēng)險(xiǎn),需要做哪些具體的工作,這樣更容易在未開(kāi)始工作之前就發(fā)現(xiàn)更多的潛在問(wèn)題。相反如果由項(xiàng)目經(jīng)理來(lái)分配時(shí)間,這個(gè)人就可能不會(huì)去思考這個(gè)任務(wù)了。
3、做這個(gè)任務(wù)的人會(huì)有被重視和尊重的感覺(jué),他會(huì)很重視自己承諾的完成時(shí)間,并且想法設(shè)法按時(shí)間完成。這樣會(huì)減少很多項(xiàng)目管理時(shí)間,因?yàn)槊總€(gè)任務(wù)負(fù)責(zé)人都會(huì)主動(dòng)地跟蹤好自己的工作。
其實(shí)微軟這個(gè)方法根本就沒(méi)有什么特別,所有正常人都可以想到這個(gè)方法,但仍然有很多人去追求那些不太靠譜的估算方法。
這個(gè)方法還是有這樣的一些問(wèn)題的:
1、有人會(huì)估算偏小,比方他說(shuō)需要5天,但往往10天還完不成。
2、有人估算過(guò)于保守。
3、項(xiàng)目的進(jìn)度要求就是很緊,基本上你必須在指定時(shí)間內(nèi)完成,估算顯得毫無(wú)價(jià)值。
第一個(gè)問(wèn)題是比較常見(jiàn)的,但我們要這樣想:估不準(zhǔn)也比不估算好,估算偏差哪怕超過(guò)100%,也比不估算好,至少有個(gè)譜。
大家是會(huì)進(jìn)步的,估不準(zhǔn)往往是對(duì)任務(wù)和自己能力認(rèn)識(shí)不到位,要讓大家不害怕估算,只要敢于估算,問(wèn)題才會(huì)暴露出來(lái),才能持續(xù)進(jìn)步。
第二個(gè)問(wèn)題分兩種情況,有些人是確實(shí)是過(guò)分保守的對(duì)自己信心不太足,項(xiàng)目經(jīng)理可以多多來(lái)指導(dǎo)他的工作,看看他具體的進(jìn)展,讓他更加充分地了解任務(wù),更加充分了解自己的能力,增強(qiáng)他的信心,這樣他就能持續(xù)進(jìn)步了。而另外一種情況就比較惡劣,少數(shù)人會(huì)故意增大時(shí)間,這樣他平時(shí)工作不必全力以赴,可以比較悠閑,甚至可以利用工作時(shí)間干私事。如果發(fā)現(xiàn)這樣的情況,就應(yīng)該嚴(yán)肅處理了,不要做爛好人,這樣的人在團(tuán)隊(duì)中存在是對(duì)團(tuán)隊(duì)的極大傷害。
第三個(gè)問(wèn)題往往是各項(xiàng)目經(jīng)理心中的痛楚,他們會(huì)覺(jué)得:實(shí)在無(wú)奈啊!做項(xiàng)目就是在有限時(shí)間有限資源內(nèi)做不可能完成的任務(wù),在這樣的情況下,你就不要跟我扯估算了!
我們的項(xiàng)目大部分情況都是非常大壓力的,應(yīng)對(duì)這樣大的壓力越需要冷靜。實(shí)際上大部分項(xiàng)目盡管是有壓力,但只要發(fā)揮團(tuán)隊(duì)的聰明才智,還是可以高效地做好工作的,不需要加班或者少加班。本文稍后會(huì)介紹這個(gè)問(wèn)題的應(yīng)對(duì)辦法。
介紹了這么多種估算方法,每種都有很多問(wèn)題,那到底怎樣才能做好項(xiàng)目估算呢?
軟件項(xiàng)目的特點(diǎn)就是項(xiàng)目簽訂時(shí),價(jià)錢是死的,工期是死的,而需求和設(shè)計(jì)是不明確的。
我的經(jīng)驗(yàn)告訴我,功能點(diǎn)法、代碼行法這些方法基本上是不靠譜的,我在實(shí)際項(xiàng)目中會(huì)綜合使用Dephi法和由底而上的估算方法,并予以改良,下面介紹一下我的一些心得體會(huì)。
1、項(xiàng)目估算與其說(shuō)是估出來(lái),還不如說(shuō)是做出來(lái)的。
假設(shè)某項(xiàng)目是這樣的情況:
1)合同簽署的金額是100萬(wàn),工期是3個(gè)月。
2)需求只是大致寫了,并不明確。
3)老板要賺50萬(wàn),給你的預(yù)算只有50萬(wàn)。
我們很多項(xiàng)目都是這樣的情況,不是等你估算出比較靠譜的數(shù)字,然后才去報(bào)價(jià)簽合同的,我們經(jīng)常要在老板指定的預(yù)算下完成項(xiàng)目。
你現(xiàn)在要負(fù)責(zé)這個(gè)項(xiàng)目,你會(huì)如何做估算呢?
你需要做好兩個(gè)事情,才能保證項(xiàng)目實(shí)際成本控制在預(yù)算內(nèi)。
第一個(gè)事情,控制好需求。需求不明確,這既是不利因素也是有利因素,應(yīng)盡量往有利的方向控制。不明確的好處就是你有控制需求的空間,抓住客戶的關(guān)鍵需求,簡(jiǎn)化不必要的花銷的需求,能極大地降低項(xiàng)目工作量。
第二個(gè)事情:想盡辦法降低開(kāi)發(fā)工作量。不要因?yàn)檫M(jìn)度緊就不認(rèn)真思考軟件的設(shè)計(jì),應(yīng)盡量采用簡(jiǎn)單的成熟的設(shè)計(jì)方案,簡(jiǎn)化工作。
2、估算應(yīng)該持續(xù)進(jìn)行,持續(xù)細(xì)化。
項(xiàng)目初期很難對(duì)項(xiàng)目做完整估算,但能估計(jì)的部分應(yīng)先估計(jì)出來(lái),并且針對(duì)不明確的部分安排計(jì)劃去搞清楚。
3、估算是項(xiàng)目各種工作估算的總和。
估算并不是只是得到一個(gè)項(xiàng)目估算的總體數(shù)字,項(xiàng)目的估算總數(shù)其實(shí)是由項(xiàng)目各種工作的估算組成的。
前文介紹了項(xiàng)目的各種工作,每一種工作都需要認(rèn)真估算。如果估算發(fā)生偏差,要能定位到具體是哪部分的估算出問(wèn)題了,否則估算沒(méi)有指導(dǎo)項(xiàng)目工作的價(jià)值。功能點(diǎn)法、代碼行法的估算辦法,只能得到一個(gè)項(xiàng)目估算的總數(shù),而不能定位到具體的哪一部分工作,這樣得到的估算結(jié)果難以用來(lái)指導(dǎo)項(xiàng)目工作。
4、估算依賴項(xiàng)目組的整體實(shí)力。
如果你沒(méi)有軟件開(kāi)發(fā)相關(guān)經(jīng)驗(yàn),只懂理論上的估算,你是不可能做好估算工作的。
項(xiàng)目組由項(xiàng)目管理、軟件設(shè)計(jì)、編碼、測(cè)試、實(shí)施等各類專業(yè)人才組成,每個(gè)人在自己方面都是專家,每個(gè)人都是整個(gè)項(xiàng)目組中最有資格對(duì)自己專業(yè)方面的工作進(jìn)行估算。前文列出了的項(xiàng)目各方面的工作,應(yīng)該由相應(yīng)的項(xiàng)目成員為主進(jìn)行估算。
5、項(xiàng)目組應(yīng)該不斷學(xué)習(xí)、總結(jié)、進(jìn)步,提高整體水平。
需求不明確、設(shè)計(jì)不確定這是項(xiàng)目的特點(diǎn),我們需要不斷地學(xué)習(xí)來(lái)提高水平,將這些不明確的因素逐步明確。
沒(méi)有什么妙方能解決這些不明確的因素,靠的還是我們的知識(shí)和能力。項(xiàng)目組每個(gè)人都應(yīng)該通過(guò)持續(xù)估算來(lái)發(fā)現(xiàn)自己的不足并提高水平。
6、公司應(yīng)該定期組織項(xiàng)目資深人士制定估算指南并持續(xù)更新。
我們公司有一份估算模板,里面匯集了以前的估算經(jīng)驗(yàn),列出了所有需要考慮的估算內(nèi)容以及詳細(xì)的說(shuō)明。
我們以前沒(méi)有估算模板時(shí),估算偏差會(huì)達(dá)到50%以上,總結(jié)經(jīng)驗(yàn)發(fā)現(xiàn)偏差的主要原因是估漏!使用估算模板會(huì)幫助我們發(fā)現(xiàn)遺漏,后來(lái)我們的估算偏差基本可以控制在20%以內(nèi)。
前文的“估算要估啥”小節(jié),我列出了項(xiàng)目通常要考慮的各種工作,也列出了容易估漏和估計(jì)不足的地方,大家可在此基礎(chǔ)上根據(jù)自己公司實(shí)際情況,修改和擴(kuò)充這些內(nèi)容,寫出自己公司的估算模板或估算指南。
先得到項(xiàng)目規(guī)模,再由規(guī)模導(dǎo)出工作量,這是一個(gè)很美好的想法,問(wèn)題就是和我們的實(shí)際情況相去甚遠(yuǎn)了。
將工作分解,直到分解到可以估計(jì)工作量的程度,這個(gè)可能是最土最有效的方法了。但你可能會(huì)問(wèn),這樣的估算方法,項(xiàng)目之間就無(wú)法橫向比較了?
項(xiàng)目估算第一目標(biāo)是用來(lái)指導(dǎo)項(xiàng)目工作,如果這個(gè)目標(biāo)都達(dá)不到,那么就不需要考慮項(xiàng)目之間的橫向比較了。
另外我要反問(wèn):為什么非要用這樣的方式來(lái)作項(xiàng)目之間的橫向比較?有什么好處?國(guó)外優(yōu)秀的軟件開(kāi)發(fā)工作室就不會(huì)做這樣無(wú)聊的事情,軟件開(kāi)發(fā)可能是人類最厲害的智力活動(dòng),你覺(jué)得一定能量化度量嗎?
要從本質(zhì)上提升估算水平,你不太可能用幾天時(shí)間去突擊學(xué)習(xí)某種估算辦法就能勝任項(xiàng)目實(shí)際的估算工作。
提高估算能力靠你長(zhǎng)期的積累,你的實(shí)力、你的項(xiàng)目團(tuán)隊(duì)的綜合實(shí)力,還有你們公司的綜合實(shí)力,決定了估算的水平!
估算是為項(xiàng)目服務(wù)的,后文你會(huì)看到如何利用估算來(lái)管理項(xiàng)目,又如何因應(yīng)項(xiàng)目實(shí)際情況來(lái)更新估算。
下面開(kāi)始,我們將講述估算與計(jì)劃的關(guān)系、計(jì)劃及計(jì)劃跟蹤。 計(jì)劃有什么內(nèi)容?
關(guān)于項(xiàng)目計(jì)劃,我們要先討論什么是正確的事情,然后再討論如何做正確的事情,我們先來(lái)看看項(xiàng)目計(jì)劃應(yīng)該有什么內(nèi)容?
讓大家做項(xiàng)目計(jì)劃,很多人以為用Project做一份開(kāi)發(fā)進(jìn)度計(jì)劃就完事了。而項(xiàng)目的開(kāi)發(fā)工作只是占了項(xiàng)目工作的其中一部分而已,跟項(xiàng)目所有相關(guān)的工作,我們都需要計(jì)劃。諸如開(kāi)發(fā)計(jì)劃、測(cè)試計(jì)劃、培訓(xùn)計(jì)劃、溝通計(jì)劃、采購(gòu)計(jì)劃等等,這些計(jì)劃的集合,我們稱之為項(xiàng)目計(jì)劃。
項(xiàng)目計(jì)劃應(yīng)該包含以下內(nèi)容:
1、項(xiàng)目背景、目標(biāo)、概述等。
2、項(xiàng)目需要提交的工作產(chǎn)品,包括內(nèi)部工作產(chǎn)品和最終工作產(chǎn)品。
3、風(fēng)險(xiǎn)分析及應(yīng)對(duì)措施。
4、項(xiàng)目估算。
5、項(xiàng)目在成本、進(jìn)度、質(zhì)量方面的管理目標(biāo)。
6、項(xiàng)目人員職責(zé)。
7、對(duì)項(xiàng)目各項(xiàng)工作的安排,包括但不限于前文介紹的11種工作,如下:
1)項(xiàng)目前期工作
2)商務(wù)方面的工作
3)需求調(diào)研方面的工作
4)軟件設(shè)計(jì)方面的工作
5)編碼方面的工作
6)測(cè)試方面的工作
7)實(shí)施方面的工作
8)維護(hù)方面的工作
9)項(xiàng)目管理方面的工作
10)配置管理方面的工作
11)質(zhì)量保證方面的工作
8、需客戶或第三方協(xié)調(diào)的工作計(jì)劃。
9、采購(gòu)計(jì)劃。
10、項(xiàng)目所需的各種硬件資源,包括開(kāi)發(fā)環(huán)境、運(yùn)行環(huán)境、測(cè)試環(huán)境等。
一般來(lái)說(shuō)項(xiàng)目計(jì)劃有一個(gè)主計(jì)劃,多個(gè)子計(jì)劃。主計(jì)劃總體描述項(xiàng)目的背景、管理目標(biāo)、任務(wù)概述等總體信息,而子計(jì)劃則有測(cè)試計(jì)劃、實(shí)施計(jì)劃、培訓(xùn)計(jì)劃、配置管理計(jì)劃等。
下圖是主計(jì)劃目錄示例:
posted on 2011-11-23 17:41 順其自然EVO 閱讀(138) 評(píng)論(0) 編輯 收藏