2008年8月22日 星期五

Software outsourcing

專注於核心項目,將非核心工作交付外包,等於間接提升企業的競爭能力,也節省了資源及時間。但是軟體外包因牽扯到眾多面向,導致實際的執行狀況非理論所能解釋,甚至對軟體外包所能帶來的效益產生質疑。為了能重新審視軟體外包的實務面,從中淬取出可供往後參考的寶貴經驗,茲將近期於工作中經歷的軟體外包案例重新審視,並針對幾項關鍵提出檢討。
  • 外包動機
    外包動機對於軟體外包來說是非常重要的一環,不管企業本身的規模大小與否,以及所能接受的外包成本多寡,都必須先審慎思考一件十分基礎的問題:是否真的該外包?所外包的內容也許是軟體系統,也許是軟體原件,只要外包所耗用之成本及時間效益不如企業自行開發來得便宜或快速,就不應該外包。然而實際的情況是,有太多的人為干擾因素存在於企業當中,導致軟體外包真正的意義被忽略,取而代之的是個人或部門績效。一個完善的組織應當避免此等狀況發生,否則即使拉高了個人或部門的績效,但是對公司整體而言卻是傷害。
  • 需求定義
    軟體外包案的品質優劣與否,跟需求定義的完善程度有絕對的正向關係。粗糙的需求定義即代表粗糙的成品,發包的企業往往會有角色錯置的問題,也就是以為外包廠商會以盡善盡美的態度來開發,這是一相情願的想法。首先,企業的文化絕對無法影響外包廠商,畢竟兩者是互為獨立的公司,再者,外包廠商總是以盡快完成交付案件並收取報酬為優先考量,跟處處斟酌細節、反覆推敲的公司內部開發流程截然不同,故軟體外包的需求定義必須力求精確、涵蓋完整,否則差強人意、甚至不堪使用的外包成品是必然結果。
  • 溝通與確認
    在執行外包的過程中,與外包廠商溝通的聯絡人或專案經理必須密集、精確的反覆確認外包案的需求定義,一方面避免外包案在最後驗收過程才來檢驗,一方面也對外包廠商傳達了督促的訊息,尤其是後者非常重要,否則外包廠商一定會刻意規避潛在的開發細節和問題。除了對外的溝通之外,對內與技術人員的反覆確認也非常重要,除了忠實的將外包廠商的回饋傳達給內部技術人員外,也必須適度的建立內部技術人員與外包廠商技術人員的直接溝通管道,以擴大溝通層面和深度,如此也能提升外包成品的品質。
  • 驗收
    針對軟體外包,驗收過程除了基本的測試外,也必須強調驗收的時效性。若驗收時程過長,除了會打擊雙方廠商的士氣、拖延開發進度外,更會提高外包破局的機率,導致原本的外包案件變成半外包、半自行開發的狀態(變成倚賴內部技術人員直接檢查外包成品以進行修改),已致完全違反了初衷。唯有快速的反應驗收結果,要求外包廠商期限內提出修正版本才是上策。

上述關鍵因素只要有一項出現瑕疵,即會給軟體外包結果帶來重大傷害,小則打擊員工士氣、重則拖慢開發時程,影響企業獲利,不可不慎。希望此篇短文能為執行軟體外包的企業、公司帶來些許的參考價值,進而避免犯下錯誤。

沒有留言: