根據(jù)我多個(gè)項(xiàng)目的經(jīng)歷,資源嚴(yán)重不足(或人員離職)是最頭疼的問(wèn)題,需求蔓延和進(jìn)度表超出100%-300%甚至更多是最常見(jiàn)的問(wèn)題。而項(xiàng)目進(jìn)度表是任何可能出錯(cuò)事件的替罪羊。如果有人胡亂評(píng)估,弄錯(cuò)需求,或者有項(xiàng)目組成員生病了、離職了,這都是進(jìn)度表的責(zé)任。所以說(shuō),項(xiàng)目進(jìn)度表(Schedule),音譯過(guò)來(lái)就成了“是個(gè)酒”。酒能怡情,也最能傷人。罪不在酒本身,而在于不同的人!
但是,項(xiàng)目進(jìn)度表又必不可少。它至少有三個(gè)作用:
第一,是一個(gè)承諾,是對(duì)什么時(shí)候完成任務(wù)的承諾。進(jìn)度表在參與者之間提供了一份合同,確定每個(gè)人在一個(gè)特定的時(shí)間內(nèi)要提供什么;
第二,是提供了一種能夠追蹤項(xiàng)目和把工作分成若干個(gè)易于管理的小塊的工具,把工作分成小的任務(wù),能夠幫助團(tuán)隊(duì)更好地理解他們到底需要做些什么;
第三,是鼓勵(lì)每個(gè)人把自己的工作看做整體的一部分,并且全力把自己的工作和他人的工作結(jié)合起來(lái)。只是在實(shí)際工作中,我們很容易發(fā)現(xiàn)進(jìn)度表的第一、第二個(gè)作用,我重點(diǎn)說(shuō)說(shuō)第三個(gè)作用。
如果沒(méi)有一個(gè)進(jìn)度表來(lái)說(shuō)明在某個(gè)特定的時(shí)間和日期內(nèi)必須要完成某些任務(wù),就不可能讓大家相互團(tuán)結(jié)和依靠起來(lái)。沒(méi)有進(jìn)度表,每個(gè)人只會(huì)關(guān)注他自己的任務(wù),而不去考慮他的工作是否會(huì)影響別人。在進(jìn)度表中,有一種心理上的力量,因?yàn)樗鼘?duì)眾宣布了某人要履行的承諾。
要制作進(jìn)度表,就必須做估算,而估算是相當(dāng)困難的,這里面既有技術(shù)方面的原因,更有很多不可預(yù)測(cè)或我們無(wú)法左右的因素在里面。Schedule必不可少,而制作它又有很大的問(wèn)題,一對(duì)極度的矛盾體。如果一個(gè)團(tuán)隊(duì)在開(kāi)始一個(gè)項(xiàng)目的時(shí)候,就充分了解進(jìn)度表可能出現(xiàn)問(wèn)題的原因,并且采取措施去減少這些出錯(cuò)的風(fēng)險(xiǎn),那么這個(gè)進(jìn)度表就為成為開(kāi)發(fā)過(guò)程中更加有用和精準(zhǔn)的工具。要弄清進(jìn)度表為什么總做不準(zhǔn),就必須找出最本質(zhì)的原因。
原因一,倒推法本身就有很大的問(wèn)題
客戶(hù)、市場(chǎng)部門(mén)甚至是我們自己在項(xiàng)目前期荒廢了大量時(shí)間,而到了后面,眼看著做不完了,就用倒推法來(lái)處理。同樣是甲方,有沒(méi)有哪個(gè)病人對(duì)牙醫(yī)說(shuō),我下午趕飛機(jī),你兩個(gè)小時(shí)之內(nèi)把我的牙齒修好。牙醫(yī)不把他罵翻才怪! 思路都出了問(wèn)題,結(jié)果能不出問(wèn)題么?
原因二,我們的估算過(guò)程有問(wèn)題
是該先出需求、概要設(shè)計(jì)還是該先出計(jì)劃?實(shí)際工作中,我們總是在項(xiàng)目還沒(méi)有簽合同(快要簽了)就將計(jì)劃按照用戶(hù)方、監(jiān)理方的要求做好并發(fā)給他們,當(dāng)然這個(gè)計(jì)劃是包括了工期和大的進(jìn)度計(jì)劃(總體)的。然后是進(jìn)場(chǎng)做需求調(diào)研,再做設(shè)計(jì)。搞得我總是懷疑自己的智商只有60-70,不怪這個(gè)世界變化太快,而該反省我反應(yīng)太慢。
原因三,我們的估算方法有問(wèn)題
經(jīng)常是項(xiàng)目經(jīng)理一個(gè)人拍腦袋后的一份文檔,有時(shí)候半天就提供出來(lái)了。沒(méi)有經(jīng)過(guò)集體的研究,沒(méi)有采用科學(xué)的方法,如PERT、三點(diǎn)估算法,參數(shù)估算法等等??傊?,一切顯得那么的草率,依據(jù)這樣的結(jié)果做出的進(jìn)度表誤導(dǎo)了好些人,起到的副作用是顯然的。我們處于一個(gè)躁動(dòng)、功利和狂熱的大環(huán)境中。
原因四,我們喜歡按照固定思維來(lái)考慮問(wèn)題
比如1人1天100行代碼,那么3個(gè)人100天自然就是30000(100*100*3=30000)行代碼,打個(gè)7折,也有21000行代碼。你看,夠低調(diào)了吧,其實(shí)早期我也經(jīng)常犯這類(lèi)錯(cuò)誤。有考慮到夏天熱或春節(jié)附近工作效率會(huì)低很多么?有將用戶(hù)新需求蔓延的風(fēng)險(xiǎn)計(jì)劃在內(nèi)么?有設(shè)想到關(guān)鍵員
工生個(gè)小病請(qǐng)假么?有應(yīng)對(duì)員工離職的風(fēng)險(xiǎn)策略么?如果這些常見(jiàn)的都沒(méi)有考慮,項(xiàng)目延期也是活該!
當(dāng)然,辦法總是比問(wèn)題多。首先,必須不要盲目的屈從“政治”的壓力,假使技術(shù)團(tuán)隊(duì)足夠強(qiáng)勢(shì),情況會(huì)是這個(gè)樣子么?這個(gè)問(wèn)題夠大夠廣,還是從技術(shù)層面談點(diǎn)實(shí)際的。估算應(yīng)該根據(jù)以前的生產(chǎn)率。估算依賴(lài)于程序員、技術(shù)人員對(duì)項(xiàng)目目標(biāo)的理解。項(xiàng)目經(jīng)理、程序員應(yīng)該受到信任??梢远鄠€(gè)人從不同角度來(lái)進(jìn)行估算。規(guī)格說(shuō)明書(shū)或設(shè)計(jì)質(zhì)量應(yīng)該達(dá)到做良好估算所需的程度。既然可以提出問(wèn)題,就有解決問(wèn)題的方法。