公司用了多年的系統,支撐着正在運作的流程:銷售、結算、客戶個案。系統沒有一天可以關掉,預算中也沒有一項說明再維護一年要花多少。授權費在一行,人手編制在另一行,系統周邊的人手工作則哪一行都沒有。因此,重寫的決定通常要等系統自己逼出來:開發商終止支援,或唯一懂得程式碼的人離職。這個決定其實可以更早作出。
舊系統的全年成本由甚麼組成
再維護一年的帳單有五個組成部分。
- 授權與基礎設施。 軟件、伺服器或雲端的費用,開發商的支援,以及開發商已不再發展的版本的合約。
- 熟悉系統的人。 系統管理員、程式員,以及唯一能解釋系統為何這樣運作的員工所花的時間。
- 繞道做法與系統周邊的人手工作。 有人在試算表中核對兩個系統之間的數據,有人以人手拼湊報告,有人把電郵中的個案抄寫進系統。每一項單獨看都很小,所以不會出現在任何匯總表中。
- 無法實現的改變的成本。 新的銷售渠道、新的價目表、與合作夥伴系統的連接:如果舊系統接收不了,公司就要以人手處理來付出代價,或放棄收入。這一項通常不在任何帳目中。
- 熟悉系統的人離職的風險。 如果系統實際運作所依據的規則只存在於程式碼和一個人的腦海中,這個人一旦離開,維護就會變成調查。成本:重建這些知識所需的時間,乘以今年需要這樣做的機率。
如何把兩筆帳並列比較
全年成本只是起點,比較要放在幾年內才有意義:重寫是一次性開支,維護費則年年都有。合理的比較期是三年;期限再長,有關價格和人手的假設就不再可信。
第一筆帳:五個組成部分的總和乘以三,再按已預知的事件(支援終止、授權費上調、人員離職)作調整。第二筆帳:重寫的成本、新舊系統並行運作的期間(期間您要為兩套系統付費),以及新系統在餘下年份的維護費:團隊、基礎設施、授權。
未知的項目以區間填入,兩個情境都計算。區間兩端得出同一結果,就足以作出決定。結果取決於假設時,就顯示簽署報價前應先量度哪一項。
該重寫的三個信號,以及暫時不必的兩個信號
以下情況是時候重寫:
- 市場或法規要求的改變,在舊系統中無法實現,或成本相當於一個新模組。第四個組成部分因此浮現。
- 系統運作規則的知識集中在一兩個人身上,而文件描述的是多年前的版本。第五個組成部分這時就有了實際日期。
- 系統周邊的人手工作逐年增加:多一份試算表,多一個負責核對數據的職位。公司其實已經在為新系統付錢,只是以人手編制的形式支付。
以下情況暫時不必:
- 問題只在一個模組,或一個與其他系統的連接,而核心系統無須繞道就能支援流程。更換一個部件的成本只是重寫的一小部分,也為其餘部分爭取時間。
- 公司計劃在一年內改變流程本身:合併、新的銷售模式、重組。重寫後的系統只會重現一個很快就不再存在的流程。先處理流程,再處理系統。
如何在不中斷流程的情況下重寫
銷售、結算和個案處理在整個項目期間都要照常進行,而切換的時間窗口即使存在,也很短。
新系統在舊系統旁邊建立,由第一天起就使用實時數據,初期只作讀取:它看到與舊系統相同的資料,並顯示計算結果是否一致。在任何工作依賴新系統之前,差異已經浮現。
切換按流程逐一進行:先切換出錯成本最低、問題最快顯現的流程,例如報告,然後是個案處理,最後是結算。每個流程都有切換日期、負責決定的人,以及在第一星期發現錯誤時退回舊系統的方法。一次過全部切換,就沒有這條退路。
向熟悉舊系統的人接收知識,要在寫下第一行程式碼之前開始。程式和人腦中的規則,要整理成一份個案清單:系統如何處理更正發票、沒有客戶編號的個案、以其他貨幣支付的款項。這份清單之後就是新系統的測試集,也證明新系統沒有遺漏任何東西。我們團隊的成員曾參與已在運作的系統的工作:重建基礎設施監控系統以提升可擴展性(以應付不斷擴大的網絡),以及把工作流程系統遷移到雲端。他們亦曾建構ERP系統(涵蓋公司財務與營運),並實現債務追收自動化。
應向承辦商要求甚麼
在開始比較價錢之前,報價應說明五件事。
- 範圍。 新系統接手哪些流程,哪些留在舊系統或取消,並由您一方指定一人確認清單完整。
- 階段次序。 哪個流程最先切換、原因為何,每個階段完成後有甚麼已準備就緒、可以開始使用。
- 數據如何處理。 新系統從哪裏取得數據,新舊系統並行多久,由誰核對差異,以及新系統不轉移的歷史數據如何處理。
- 知識接收。 承辦商一方由誰與熟悉舊系統的人溝通,規則清單何時、以甚麼形式完成。
- 上線後由誰維護。 具體人員、回應時間、每年成本,以及如您決定接手維護,系統如何移交給您的團隊。缺少這一項,第二筆帳就會被低估。
第一步是分析:列出舊系統現時負責的所有工作,計算兩筆三年的帳,並定出切換次序,同時建議是否重寫、從哪個流程開始。


