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