解析軟件項目管理
張 斌
(來自計算機世界網)
2003年09月01日
有人說中國軟件企業和美國、愛爾蘭,甚至日本(我這里不提印度,因為我認為中國和印度的軟件企業發展思路是不一致的)相比最大的差距不是在技術層面上,而是在軟件的項目管理上。我完全同意。
我也曾經參加過一些軟件項目經理的聚會,在談話中我發現,中國的軟件項目經理真的是讀了很多軟件工程、項目管理類的書,很多人都參加過PMP(PMP是由美國項目管理協會發起的項目管理專業人員資格認證)的培訓和考試,但在中國企業環境下解決軟件項目中實際問題的能力存在不足,我們暫且拋開哪些"老外"們寫的軟件項目管理的經典論著,談幾個基本問題,希望對從事軟件項目管理的PM們有所啟發。
為什么要有項目管理?
沒有項目管理,項目也有可能成功。但沒有管理的項目,很難保證項目的利潤空間,對公司來說,虧損的風險就大。所以我們要有項目管理,以保證公司在總體上是盈利的,注意不是每一個項目都要盈利。
另外,有了項目管理,就有了管理改進的基礎,無論剛開始的項目管理多么糟糕,只要有管理,就有了改進的可能性,至于能不能得到改進,以及改進的快慢,則取決于兩個因素:一個是人,特別是各級管理者;另一個是利益。關鍵是"利益",準確的說是"利益的分配",在權責利明確的前提下,人才能充分的發揮作用。還需要指出的?quot;利益"是多元的,這里的多元不僅指利益的具體形式,而且指利益的受眾是多元的,包括客戶方相關人員個人的利益。
為什么要有專職的項目經理?
專業化是一個趨勢,因為在專業化的條件下,可以有效降低成本,提高利潤率。項目經理的工作內容歸根到底只有一項:識別并管理風險。這項工作的目的是控制項目成本。
由于項目的風險是多方面的,而且風險的表現形式也是多種多樣的。從風險范圍上來說,既有公司內部風險,也有和客戶交流、合作的風險;從風險的類型上來說,既有管理風險,也有技術風險;從風險產生的階段來說,包括了從業務分析到上線后維護的項目周詬鞲黿錐巍?
我認為一個項目經理是否優秀,主要是看他/她能在多大程度上提前識別并消除風險,而不是彌補和解決了多少問題(風險未被及時識別或妥善處理,就會轉換成問題)。當然能彌補和解決問題的項目經理也是相當合格的,但還不夠優秀。
項目組的范圍界限在哪里?
我認為項目組的范圍界限可以有三種劃分:
1、包括客戶方所有參與該項目的立項、調研、審批、測試和使用人員,包括開發商市場開發、管理審批、商務談判、后勤保障和具體負責該項目開發的人員;
2、包括客戶方項目經理、業務需求提出人和測試人,包括開發商具體負責該項目開發的人員;
3、僅包括開發商具體負責該項目開發的人員。
大部分人在思想上可以接受范圍1,而在實務中接受的是范圍3。而我個人認為項目經理,特別是開發商方面的項目經理應該采用的是范圍。
對項目組范圍理解不同,將影響項目經理對工作的處理方式,范圍1實際上是很虛的,在項目管理實務操作中沒有太大的意義;而范圍3實質是把客戶方和該項目有密切關系的人與開發商具體負責該項目開發的人對立起來,也就是所謂的甲方、乙方。在這種對立的前提下處理項目的分歧和矛盾,效果肯定要打折扣。
而按范圍2來理解,在項目管理實務中項目經理就必須要讓客戶方和該項目有密切關系的人也接受這一觀點,從而拆除雙方之間的"障礙",達到相互信任、相互尊重、共同協商解決問題的良性氛圍,以達到降低項目外部風險的目的。當然,這樣就增大了項目經理工作的難度,但對項目的成功則是很重要的。
怎樣才能算是一個成功的項目?
對"成功項目"的標準解釋為:項目范圍、項目成本、項目開發時間、客戶滿意度四點達到要求。我認為其實只有一點--利益。項目范圍、客戶滿意度主要代表客戶的利益,項目成本主要代表開發商的利益,項目開發時間同時影響雙方的利益。但每一個人關心?quot;利益"是不同的。
如何看待項目管理流程?
"項目管理流程"是管理項目的工具之一,不是管理本身,更不是項目管理的目的。
項目經理不能為了流程而流程。項目經理的工作內容我前面說過是"識別并管理風險",而"項目管理流程"是在項目經理識別風險后作出的管理風險的選擇。
不同的項目,項目風險也不同。
同樣的項目,不同的項目經理,識別出的風險也不同。
同樣的項目,同一個項目經理,面對不同的客戶方負責人,面臨的風險也不同。
同樣的項目,同一個項目經理,同一批客戶方負責人,不同的項目組成員,包含的項目風險也不同。
所以,我認為管理同一個項目可以有不同的流程。但不是要項目經理每次接手一個項目就創建一套全新的流程,而是根據不同的項目風險,選擇適合的流程。事實上,項目流程的基本框架可以變化的地方并不多。另外還要能理解,即使采用完全相同的項目流程,處理流程各個環節中所涉及的具體問題的方法和時機仍然有很大的不同,所以即使采用同樣的項目流程,也不能保證一定會降低項目風險。最重要的是"活學活用,融會貫通",流程、項目管理軟件、文檔等等都是項目管理的工具。
如何確定項目資源投入量?
一個項目投入的資源有很多不同的內容,我只想談談關于開發人員的投入。有些公司的做法是項目經理、系統分析工程師根據客戶需求估計一個人數,公司根據資源情況確定投入哪些人、什么時候投入、投入多少人。
我有幾點是不理解的:項目經理、系統分析工程師確定項目組人數的標準是什么,僅僅憑需求就可以估算需要的人數嗎?在公司不把成本控制指標下放給項目經理的前提下,項目經理憑什么決定要用多少人?在項目經理和系統分析工程師不了解開發項目組有哪些可用人、他們的具體技術背景、性格、合作默契度等情況下,憑什么決定要用多少人?需要給客戶報價是另一回事。
我希望項目經理能夠明白,項目人員的匹配有一個最佳的匹配范圍,超出這個匹配范圍的人數對項目是有害的,而且多要人可能比少要人對項目的風險更大,一次性投入和分階段投入人員采用的管理方法是完全不一樣的,實踐證明用追加人員的方式來追趕已經延期的項目進度往往會造成延期的更久。
大家可以思考一下,為什么項目經理和系統分析工程師在確定開發人數時傾向于盡可能的多要?而在項目延期時,項目經理采用最多的方式是追加人員?
如何看待客戶不斷的需求變更?
首先要明白兩點:一是,需求變更是不可避免的;二是,客戶是理性的。
關于第一點,應該沒有異議。第二點實際說了兩層含義,一是,客戶提出的需求變更是有理由的;二是,實現需求變更的方式和方法是可以和客戶溝通,達成一致的。
如何理解"溝通"?
從某種意義上說,相當大的一部分需求變更和項目問題都是由溝通不充分產生的。影響溝通的主要原因為:
1、信息不對稱。提出需求的客戶和系統的最終用戶信息不對稱(甚至有時候,我們從一開始就得到的是錯誤的需求),我們和客戶之間信息不對稱,業務分析人員和項目組其他人員信息不對稱,系統分析人員和程序開發員信息不對稱等等;
2、人的惰性。人的惰性決定了:有些客戶不會認真看業務分析文檔和需求分析文檔,甚至不會認真參加討論;有些程序員不會認真看設計文檔,不努力去理解業務知識;我們的文檔沒有記錄所有的重要信息,沒有根據變化進行時時的修改和更新;
3、選擇了不恰當的溝通方法。我們沒有選擇有效的溝通方法與客戶進行溝通;項目組內部沒有有效的溝通機制。
4、時間約束。項目是在一定的時間約束的前提下開發的,而另一方面是客戶往往沒有專職人員,客戶的時間不是隨時都可以被占用的。
原文轉自:http://www.anti-gravitydesign.com