案例
A公司是一家美資軟體公司在華辦事機構,其主要的目标是開拓中國市場、服務中國客戶,做一些本地化和客戶化的工作。它的主要軟體産品是由總部在矽谷的軟體開發基地完成,然後由世界各地的分公司或辦事機構進行客戶化定制、二次開發和系統維護。這些工作除了日常銷售和系統核心維護之外,都是外包給本地的軟體公司來做。東方公司是A公司在中國的合作夥伴,主要負責軟體的本地化和測試工作。
Bob先生是A公司中國地區的負責人,Henry則是剛剛加入A公司的負責此外包項目的項目經理。東方公司是由William負責開發和管理工作,William本身是技術人員,并沒有項目管理的經驗。
當Henry接手這項工作後,發現東方公司的項目開發成本非常高,每人每天130美金,但客戶的滿意度較差,并且每次開發進度都要拖後,傳遞使用的版本也不盡如人意。而且,東方公司和A公司矽谷開發總部缺乏必要的溝通,隻能把問題回報給Henry,由Henry再回報給總部。但由于Henry本身并不熟悉這個軟體的開發工作,也造成了很多不必要的麻煩。
為此,Bob希望Henry和William用項目管理的方法對該項目進行管理和改進。随後,Henry和William召開了一系列的會議,提出了新的做法。
首先,他們制定了詳細的項目計劃和進度計劃;其次,成立了單獨的測試小組,将軟體的開發和測試分開;并且,在矽谷和東方公司之間建立了一個新的溝通管道,一些軟體問題可以與總部直接溝通;同時,還采用了裡程碑管理。
六個月後,軟體傳遞使用。但是客戶對這個版本還是不滿意,認為還有很多問題。為什麼運用了項目管理的方法,這個項目還是沒有得到改善?
Henry和William又進行了反複探讨,發現主要有三個方面問題:
1、軟體本地化産生的問題并不多,但A公司提供的底層軟體本身存在一些問題;
2、軟體的界面也存在一些問題,這是由于測試的項目不夠詳細引起的;
3、開發的周期還是太短,沒有時間完成一些項目的調試,是以新版本還是有許多的問題。
此時,Henry向Bob提出是否采用公開招标的方式,選擇新的、實力更強的合作夥伴。但Bob認為,與東方公司合作時間已經很長了,如果選擇新的夥伴又需要較長的适應期,而且成本可能會更高。于是,Henry向東方公司提出一些新的管理建議。首先,他們采用大量的曆史資料進行分析,制定出更詳細的進度計劃;其次,要求東方公司提供詳細的開發文檔和測試文檔(之前William的團隊做的工作沒有任何文檔,給其他工作帶來了很多困難);第三,重新稽核開發周期,對裡程碑進行細化。
又過了六個月,新的版本完成了。這一次,客戶對它的評價比前兩個版本高得多,基本上達到項目運作的要求。但客戶還是對項目進度提出了疑問,認為實時推出換代産品不需要那麼長的時間。
軟體外包是現在軟體工程中較常見的做法。在軟體外包工程中,保證品質的進度是很難控制的。對于項目經理來說需要一整套複雜的能力,比如制定計劃、确定優先順序、幹系人的溝通、評價等,每一種能力都與項目的最終結果有直接或者間接的關系。
然而,國内的項目經理大多沒有接受過正規訓練,缺乏項目管理方面的專業知識的技巧,往往隻是憑借以前的少量經驗盲目去做,容易出現各種問題。尤其是在管理外包項目時,缺乏足夠的經驗和技巧,往往造成進度不斷推遲,而品質無法保證的情況。
關于項目管理方案方面的執行個體,可以去參閱中國軟體工程網(rjgc.net).
前文是一個比較典型的軟體外包項目的案例。在這個案例中,我們可以看到現在IT業内許多外包項目的影子。
在該案例中,東方公司沒有專門的項目經理,是由技術人員William兼做管理。這是國内軟體公司經常會出現的問題。最初,出現進度落後的問題時,A公司的Henry與東方公司的William讨論後決定采用項目管理中計劃管理等手段,其中包括裡程碑管理。這是控制進度的較常見做法。
裡程碑管理的引入
一般來說,在項目開始時,項目組成員都會對項目制定一個詳細的計劃。通常情況下,在明确的工作說明書(SOW)和WBS的基礎上制定具體的進度計劃時,需要采用一些具體的技術。像這種軟體外包項目,最成熟的技術是裡程碑管理。
裡程碑一般是項目中完成階段性工作的标志。不同類型的項目,裡程碑也不同。比如,在開發項目中,可以将需求的最終确認、産品移交等關鍵任務作為項目的裡程碑。本案例中,Henry在接手項目後采用裡程碑進行管理是很恰當的。
不過,要注意的是,每到一個裡程碑處,應及時對前段工作進行小結,并對後續工作進行計劃調整。對于一些管理效果明顯的領域,可以不必投入較多精力。而對于下一步管理過程中可能會出現問題的領域,應給予較多的關注。當然,在軟體項目裡,進度的變化是較常見的事情。
在本案例中,采用裡程碑管理後仍沒有達到客戶的要求,進度依然拖後。在這裡,就需要考慮另一個因素—品質與進度的關系。
品質與進度關系
通常,項目管理的前提是保證在預算内、滿足品質的前提下,按進度完成項目。是以,可以看到,保證品質是前提。那麼,如何在滿足品質的前提下管理進度呢?單純從項目管理理論知識中并沒有一種有效的方式。筆者通過實踐,推薦一種較實用的方法。具體步驟為:
首先,盡量利用曆史資料。在本案例中,Henry應該調查之前的項目情況,将會發現可以類比的情況,事先就可以知道需要管理品質和進度的關系。
其次,由于此項目是軟體外包項目,Henry不能完全掌握項目的資源排程情況,是以缺乏對品質的控制。這也是大多數外包工程中最令人難以掌握的地方。在這裡,可以采用對進度管理計劃添加品質參數的方法,也就是通過參數調整進度和品質的關系。
這一做法的前提是要有一定的曆史資料。比如,從曆史資料中得知,完成子項目的時間是5天,測試後有15個問題;完成同樣子項目的時間是7天,測試後有10個問題;完成同樣子項目的時間是8天,測試後有5個問題,……以此類推。
随着資料的不斷增多的,采用兩維坐标圖,就會得到一些離散的點(不考慮資源的差異),并形成一條曲線,見圖1。考慮項目允許的品質範圍,對照圖中的資料,找出相應的參數。根據得到的參數,确定一個合适的進度計劃。
進度與成本的關系
在本案例中,Henry發現東方公司進度一直拖後,成本卻居高不下。這裡就需要了解軟體外包項目中進度與成本的關系。很多時候,此類工程大多采用固定總價合同。但由于軟體項目的修改比較多,實際上此類合同很像是固定總價加獎勵費用,其中獎勵費用一般會采用單價合同,即若幹元/人天的合同,也就是說,承包商的成本是建立在人力成本估算上的。這樣,一些承包商會傾向于拖延進度(或者減少實際投入,造成品質下降)。是以,項目經理需要了解整個合同的情況,最好參與合同的制定。在此案例中,Henry試圖通過引入競争來提高整個項目的效率,滿足項目目标,也是出于同樣的原因。尤其值得注意的是,有時候,出于競争的需要,承包商會提供低廉的價格,此時對于進度管理更應該謹慎和完善。
還要指出的一點是,要對學習曲線有深刻地認識。在軟體開發工程中,學習曲線(learning curve)有很大的用途。通常情況,承包商在接到同樣類型的軟體項目後,第二次會比第一次節省15%-20%的時間。項目經理最好要了解一下以前類似項目的情況。