外包開發專案的管理(轉)

urinator發表於2007-08-13
外包開發專案的管理
專案外包有很多優點,但最主要的一點也許並不是為了降低開發成本,而是為了解決企業內部人力資源的限制,使得企業不用招聘新員工就可以上馬大型專案。本文作者在專案管理方面有十多年的實踐經驗,他將為我們舉例說明曾經面臨的困境,接著條分縷析找到原因並指出解決方法。

  一次失敗的經歷

  在亞洲四小龍經濟全盛時期,筆者在某公司亞太區總部負責該區的軟體開發。為了應付業務迅速增長所帶來的需求,公司在各地都需要進行一些大型專案,包括主機的轉換與安裝、應用系統開發等專案。總公司要求我們把部分開發工作外包,這樣一來可以降低開發成本,同時也為了能在這一段時間內保證有足夠人力來完成專案。最後,我們決定利用公司本身的資源在區內各計算機中心內進行軟體核心功能模組的開發,周邊功能模組則實行外包。
  我們選擇了菲律賓和泰國這兩地的軟體企業來協助開發部分應用軟體,因為這兩個地區有大批新興的軟體企業,所需的開發費用只是專案基線的四分之一而已。首先,我們對兩地一些有規模的軟體企業進行嚴格稽核,包括對這些企業的技術人員數量、技術水平、財務狀況、可靠性等各方面進行深入的評估,然後在每地選擇一家從事外包。我們制定了有關程式的規格說明,然後把這些說明交給對方進行程式設計和模組測試。
  當接到第一批交回的程式時,我們從測試報告中已經發現結果跟我們的期待有很多不同之處。我們在進行測試過程中發現有些程式不能跟核心模組連線,更有些程式不能在主機上執行。我們除了對交回程式的質量感覺失望之外,更知道這會全面影響整個專案的進度。

  建立良好合作模式

  外包開發的軟體不能達到企業的質量要求,我們往往會在第一時間把罪過推給外包商。但實際經驗告訴我們,很多失敗的原因是企業本身沒有提供一套完整的軟體系統規格說明、沒有跟進開發的進度、沒有定期與外包商溝通與協調、沒有在開始時建立好質量指標和測試流程或者沒有做出適當的技術和開發環境的評估。但最重要的一點,是沒有在決定軟體外包時處理好雙方合作模式與關係的建立。
  千萬不要認為軟體外包可以減少企業的管理時間。相反,外包專案有時需要雙倍的管理時間。在我們決定外包軟體開發的時候,我們首要決定是整個應用系統的開發由外包商承包,還是隻有部分應用模組的程式交由外包商編寫。前者需要管理整個外包專案的生命週期,跟企業內部軟體開發的管理沒有差異,只是開發的地點、環境和資源比較陌生而已;後者則需要了解企業本身是否能提供優質的規格說明、是否能夠提供外包商所需的質量標準和測試資料、外包商是否有類似企業本身的開發平臺和環境,以及外包商的技術資源水平是否與企業內部開發時所需的技術指數相符。明確自身所需和服務要求,是決定外包專案的先決條件。
  選擇適合的外包商,並不能單以服務價格來做最終決定。優質的服務需要付出較高的代價。企業應根據自身對軟體質量的要求來決定服務的代價。按照國際企業的衡量指標,外包投入比本身開發的淨投資(以各技術員工的基本薪資為標準,並不包括企業對員工所提供的福利、假期和獎勵計劃等開支)多付15%~20%。也就是說,如果企業本身開發需要30萬元的話,那麼合理的外包服務價格大概是34萬元到36萬元。
  既然外包不能立竿見影地帶來經濟利益,為什麼還要外包呢?最主要的原因是企業在專案完成後不需要繼續照顧這批開發人員,不需要為這些開發人員提供福利條件。外包費用是一次性的營運開支,不像僱員薪資這樣成為企業的長期營運成本。假如企業有些一次性的大型專案需要馬上啟動,但缺乏足夠的資源,或者企業本身沒有相應的技術人員來執行的時候,外包不失為一個可行的解決辦法。

  如何進行外包專案的管理

  一些專案經理往往認為外包開發專案與企業內部開發專案的管理沒有多大分別,唯一不同是外包專案需要更多時間去溝通、協調、跟進和監控。總體來說,這種想法是對的,但事實上外包專案的管理比企業內部開發專案的管理更復雜,擔負更大的風險,需要更緊密的進度和質量監控。

  保障溝通

  內部開發專案所需人力資源大致分為兩組:一是技術人員,另一組是配合技術人員的業務人員(他們是所建資訊系統的潛在使用者)。外包專案除了需要部分技術人員和使用者群體參與外,更增加了一組外包商的資源。有些外包商更會指派一名聯絡人員負責聯絡與協調,而他們的技術人員只在後方負責專案的開發。這種運作模式要儘量避免,因為外包商指派負責聯絡的人員往往是業務人員的背景,對技術的細節不能全面把握,把有關資訊傳達到技術人員的時候便會有所差異。所以我們的首要任務是讓外包商明白負責專案聯絡的人員必須是開發小組的主管。這名開發小組主管是直接參與開發專案的主要人員,如此才能夠有效地進行溝通和監控。

  做好計劃

  專案經理首先需要做出一個詳細的、完整的專案計劃,並在計劃中詳細地列清楚每一件工作需要哪方面的哪些人力來共同執行。在計劃中的每一個進度都需要進行確認才能繼續。例如外包商在完成系統分析後,需要把分析的結果讓客戶理解,好讓企業能夠確認外包商對整個系統的理解和分析與企業本身對專案的需求和分析達成一致,這樣才能讓外包商進行其後的模組設計。不然設計出來的模組組合便有可能與企業的需求不太一樣,存在質量和最後上的差異。這些差異也將會引發企業將來在系統維護、更新、增加功能模組、升級、整合等各方面的嚴重問題。

  避免延誤

  要避免專案發生延誤,計劃中要預留足夠的時間來進行上述確認工作。由於雙方工作地點的緣故,原本只需一天的確認會議便可能耗費兩天或三天的時間來完成。議程中所達到的共識也可能需要時間來讓外包商做出適當的修改才能讓企業正式確認。也只能在正式確認後才能夠進一步繼續接下來的工作。如果沒有預留足夠的時間用於協商,當一個專案經過七八個確認會議之後,也許已經延誤了一個月的時間。

【作者簡介】黃紹良,畢業於澳在利亞墨爾本大學計算機系,後在加拿大約克大學獲得工商管理碩士學位。先後在澳大利亞、歐洲、北美、新加坡和中國港臺地區等地擔任高層職位。目前,黃先生是英國皇家計算機協會、澳大利亞計算機協會、國際專案管理協會、澳大利亞專案管理學會以及美國專案管理學會等協會的會員。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7942439/viewspace-21106/,如需轉載,請註明出處,否則將追究法律責任。

相關文章