論項目管理中的風(fēng)險管理
所有軟件項目中,通常會共存五大核心風(fēng)險,分別如下:
第一、缺乏合理的進(jìn)度安排
這是導(dǎo)致項目滯后的最主要的原因。首先、它源于開發(fā)人員們普遍存在的樂觀主義精神,我們總是期待在實現(xiàn)過程中不會碰到困難,然而我們的構(gòu)思是有缺陷的,因此總會發(fā)現(xiàn)BUG。其次、它源于一種錯誤的認(rèn)識,人員數(shù)量和開發(fā)時間是可以互換的,既投入兩倍的人數(shù)會在一半時間內(nèi)完成開發(fā)工作。然而,這種理論卻忽略了隨著人數(shù)的增加,相應(yīng)的也會增加新人培訓(xùn)和人們相互交流所需的負(fù)擔(dān),另外,還有任務(wù)重新分配所造成工作中斷帶來的負(fù)擔(dān),正如Alistair Cockburn所說:"最有效的交流方式是面對面的交流"當(dāng)3、5個人的時候很容易做到這種交流方式,隨著人數(shù)的增長,再也很難做到這種交流方式。交流成本的增加與培訓(xùn)新人所需時間成本的增加、以及任務(wù)重分配導(dǎo)致工作中斷成本的增加,直接導(dǎo)致一種結(jié)果:向進(jìn)度落后的項目中增加人手,只會使進(jìn)度更加落后。
第三、源于空泛的估算,管理人員特別是高層管理人員為了滿足顧客期望的日期而造成的不合理進(jìn)度安排。如果分配的時間一開始就不夠,不管高層領(lǐng)導(dǎo)威脅有多么嚇人,工作也無法按時完成,如果人們察覺到管理者可能濫用權(quán)力來懲罰自己,他們就會感覺到威脅,沒有安全感。安全感的缺乏會讓人們反對變化,而在所有成功項目中,變化是唯一不變的要素之一,除非感到安全,否則人們就不會去迎接變化,只會按部就班,這樣往往喪失了很多走捷徑的好機(jī)會,而這些機(jī)會原可以大大縮減時間進(jìn)度的。第四、如果你沒有認(rèn)真估算產(chǎn)品規(guī)模,那么你預(yù)計的進(jìn)度就是空中樓閣,唯一的依據(jù)只是你的希望。在估計產(chǎn)品規(guī)模時,除了正常的時間計算以外,不但應(yīng)該將"可能需要做"的事情所需工作時間加上,還要將某些"可能不需要做"的事情所需工作時間加上。項目的超期不應(yīng)歸咎于開發(fā)者的低效率。
最后、項目的滯后不是一下子造成的,而是在一天天的不知不覺中造成的,有無數(shù)種方法可以浪費一天的時間,但是沒有任何方法可以拿回一天的時間。高層管理者的不良反應(yīng)肯定會對信息的完全公開造成壓制;相反,仔細(xì)區(qū)分狀態(tài)報告、毫無驚慌地接收報告、決不壓制下級,將能鼓勵誠實的進(jìn)度匯報,而這會使你在第一時間掌握實際進(jìn)度,把握先機(jī),及早做出正確的修訂,從而避免了晚期才獲得這些實際信息時,那種無力挽天時的無奈。此外、也可以在項目管理中設(shè)定一個合理的進(jìn)度安排和一個具有挑戰(zhàn)性的期望目標(biāo)完成時間。期望目標(biāo)和合理進(jìn)度不同,期望目標(biāo)完成時間,可以設(shè)為項目完成的成功率在30%左右時的日期,這樣很具有挑戰(zhàn)性,但不能強(qiáng)迫要求必須完成此期望目標(biāo)。畢竟,合理進(jìn)度安排才是更合理的時間安排。另外、需要指出的是現(xiàn)代敏捷方法論對此進(jìn)行了有效改進(jìn),如XP(極限編程)中,就利用用戶素材與CRC卡,進(jìn)行優(yōu)先級劃分并進(jìn)行快速增量迭代開發(fā),針對原來開發(fā)的產(chǎn)品或第一次迭代開發(fā)后的原型完成的功能量,來計算功能點,從而估算每個CRC卡的功能點,得到總功能點來推導(dǎo)出比較準(zhǔn)確的進(jìn)度安排。
第二、需求的變化
從項目的角度來說,需求總是向著膨脹的方向在變化。就連去掉某些已經(jīng)做好的東西,也是一種膨脹,因為它增加了工作量。開發(fā)人員交付的是用戶滿意程度,而不僅僅是實際的產(chǎn)品,用戶的實際需要會隨著程序的構(gòu)建和使用而變化。要知道,一個活著的軟件必須面對變化,只有死掉的軟件才不會有需求變化(沒人用了),我們應(yīng)該盡早面對現(xiàn)實,而不是逃避,事先為它們做好思想準(zhǔn)備。變化是好事不是什么壞事。同樣,現(xiàn)代敏捷方法論強(qiáng)調(diào)對需求變化的快速響應(yīng),如XP(極限編程)就采用快速增量迭代開發(fā),來在短時間內(nèi)開發(fā)出功能不斷增強(qiáng)的原型軟件提交給用戶使用的方法,來快速響應(yīng)需求的變化。
第三、人員的變更
在我們有些管理者中,總是假設(shè)開發(fā)者都是可以隨便替換的,新員工馬上可以取代離去的老員工,多么愚蠢的假設(shè)。解雇員工或高的員工替換率最大的影響,是使軟件項目失去了連續(xù)性。這是在抱著這種假設(shè)的團(tuán)隊文化中,大量員工會在項目進(jìn)行到一半時離開,新來員工往往需要1到3個月的上道時間,在這段時間內(nèi),他們做不了什么,還經(jīng)常需要其它老員工的幫助,從而浪費了其它老員工很多不必要時間,導(dǎo)致項目進(jìn)展更加緩慢,最終造成項目的很大損失。
另外、還有一種現(xiàn)象在中國軟件事業(yè)中普遍存在,當(dāng)正在進(jìn)行一個項目時,另一個項目由于進(jìn)度落后或最后期限等原因所致,高層管理者就會從你的團(tuán)隊中抽掉一些人去到另一個項目中補墻。這種拆東墻補西墻的作法,往往導(dǎo)致的結(jié)果是兩個項目都會落后,因為它不僅十分錯誤作了團(tuán)隊人員可以隨意替換的假設(shè),而且還作了將開發(fā)人數(shù)與開發(fā)所需時間可以互換的錯誤假設(shè)。盲目的認(rèn)為,投入大量人數(shù)后,新人馬上會投入新的工作,這樣項目開發(fā)所需時間就會成倍縮短。在這種組織文化中,是不會形成一支穩(wěn)定的團(tuán)隊的,成員整天只會忙碌著補自已的墻或為別人補墻,充當(dāng)著類似消防員的角色,那兒有火那兒就有我們的身影。
同樣,現(xiàn)代敏捷方法論非常注重人的能力,如XP中通過權(quán)力下放、教練角色、將團(tuán)隊緊密圍在一起并結(jié)對編程、小團(tuán)隊組成等方式,來組成一個強(qiáng)有力的團(tuán)隊,由于有凝聚力,所以很少有大的人員變動,他們往往可以完成兩倍于他們?nèi)藬?shù)所能完成的任務(wù)。非常小的團(tuán)隊能夠產(chǎn)生非常大的物質(zhì)生產(chǎn)力,有時候,小團(tuán)隊可以在很短時間內(nèi)創(chuàng)造奇跡,而大型團(tuán)隊極少能做到。但是,小團(tuán)隊卻往往得不到足夠的政策支持,從而導(dǎo)致任由團(tuán)隊超編,這是一種病態(tài)組織文化所致。作為管理者必須明確知道,擁有一支穩(wěn)定的、有凝聚力的開發(fā)團(tuán)隊是組織最大的財富,而不是障礙。
第四、規(guī)約崩潰
這種情況只有兩種結(jié)果:要么發(fā)生,要么不發(fā)生,不會有不同程度的影響。但它真的發(fā)生時,它會直接毀滅你的整個項目。在項目啟動之初,項目各方需要通過一系列商談來確定需求的范圍,規(guī)約崩潰就是指這個談判過程的崩潰。在商談期間,很多時候當(dāng)遇到嚴(yán)重沖突時,由于雙方都不愿意讓步,但又不想放棄這個項目,從而導(dǎo)致這些沖突被掩蓋起來。最終項目便朝著一個帶著缺陷的、含混不清的目標(biāo)前進(jìn)了,被掩蓋的問題暫時不會打擾你,但不是永遠(yuǎn)。盡管你可以含混說明一個產(chǎn)品,但不能含混構(gòu)造一個產(chǎn)品,所以,最終在項目晚期這些問題將發(fā)生,在大半甚至所有預(yù)算時間和金錢都已付出的時候,此時,任何一方不再全力支持,都將使項目被取消。任何規(guī)格文檔中的含糊標(biāo)志著不同的系統(tǒng)參與者之間存在著未解決的沖突。只要在開發(fā)過程中有多個參與者,就一定會有沖突存在。談判困難而調(diào)解容易,如果兩個人的利益是完全或部分相斥的,預(yù)先做好安排,準(zhǔn)備好請雙方通過調(diào)解來解決沖突。同樣,現(xiàn)代敏捷方法論通過客戶的積極參與勝過合同談判的方試,來盡早發(fā)現(xiàn)和避免規(guī)約崩潰。
第五、低效率
對于項目成功而言,項目人員的素質(zhì)、人員的組織和管理是比使用的工具或采用的技術(shù)方法更重要的因素。團(tuán)隊質(zhì)量是項目成功最大的決定因素,對人的關(guān)注、激勵和培養(yǎng)勝過一切。項目管理人員的職責(zé)不是要人們?nèi)スぷ鳎墙o人們創(chuàng)造工作的可能。創(chuàng)造力來自于個人,而不是組織架構(gòu)和流程,項目管理者面臨的中心問題就是如何設(shè)計架構(gòu)和流程,來提高而不是壓制人們的主動性和創(chuàng)造力。通過權(quán)力的向下委派,從而產(chǎn)生了改進(jìn)的質(zhì)量、提高的生產(chǎn)率、高漲的士氣,進(jìn)而使中心的權(quán)威實際上得到了加強(qiáng)。就整體而言,組織機(jī)構(gòu)會更加融洽和繁榮。增加加班時間只會降低生產(chǎn)力,壓力之下的人們無法更快地思考既也會降低生產(chǎn)力。使用壓力和加班的真正原因是為了在項目失敗時讓人們看上去能好受一些。