公司用了多年的系统,承载着正在运转的流程:销售、结算、客户工单。没有哪一天可以把它关掉,预算里也没有哪一项能说明,再维护一年要花多少钱。许可证费用在一行,人员编制在另一行,围绕系统的手工作业则哪一行都没有。因此,重写的决定通常要等系统自己逼出来才作出:厂商停止支持,或者唯一懂代码的人离职。这个决定其实可以更早作出。
旧系统的年度成本由什么构成
下一年的账有五个组成部分。
- 许可证与基础设施。 软件费用、服务器或云服务、厂商支持,以及厂商已不再开发的版本的合同。
- 了解系统的人。 管理员、开发人员,以及唯一能解释系统为何这样运行的员工所花的时间。
- 围绕系统的变通办法和手工作业。 有人在里面核对两个系统数据的电子表格、手工拼凑的报告、从邮件里转录的工单。每一项单独看都很小,所以不会出现在任何汇总表里。
- 无法实施的变更的成本。 新的销售渠道、新的价目表、与合作伙伴系统的对接:如果旧系统接不住,公司就要靠人工处理来买单,或者干脆放弃这部分收入。这一项通常不出现在任何账目中。
- 了解系统的人离职的风险。 如果系统实际运行所依据的规则只存在于代码和某一个人的脑子里,这个人一走,维护就变成了查案。成本等于重建这些知识所需的时间,乘以今年必须这样做的概率。
如何把两笔账放在一起比较
年度成本是起点,但比较要放在几年的跨度上才有意义:重写是一次性支出,维护则年年都有。合理的期限是三年;期限再长,关于价格和人员的假设就不再可信。
第一笔账:五个组成部分之和乘以三,再根据已经预告的事件(停止支持、许可证涨价、人员离职)作调整。第二笔账:重写的成本,两个系统并行运行的时期(这段时间您要为两个系统付费),以及新系统在其余年份的运维:团队、基础设施、许可证。
未知的项目以区间填写,两种情形都算一遍。区间两端得出相同的结果,结论就有了。结果取决于假设时,它会告诉您在签署报价之前该先测量哪一项。
该重写的三个信号,以及暂时不必的两个信号
以下情况说明该重写了:
- 市场或法规要求的变更在旧系统中无法实现,或者成本与开发一个新模块相当。账上的第四项开始显现。
- 关于系统运行规则的知识集中在一两个人身上,而文档描述的是多年前的版本。第五项因此有了实实在在的日期。
- 围绕系统的手工作业逐年增加:又一张表格,又一个专门核对数据的岗位。公司其实已经在为新系统付费,只是付在人员编制上。
以下情况说明暂时不必:
- 问题出在一个模块,或者与另一个系统的一个接口上,而核心部分无需变通就能支撑流程。更换一个组件的成本只是重写的零头,还能为其余部分争取时间。
- 公司计划在一年内改变流程本身:合并、新的销售模式、重组。重写后的系统会复刻一个即将消失的流程。先流程,后系统。
如何在不中断流程的情况下重写
销售、结算和工单处理在整个项目期间照常运转,而切换窗口即便存在,也很短。
新系统在旧系统旁边搭建,从第一天起就使用实时数据,最初处于只读模式:它看到的与旧系统相同,并显示两者计算结果是否一致。在任何业务依赖新系统之前,差异就会暴露出来。
切换逐个流程进行:先切换出错代价最低、问题最快显现的流程,例如报表,然后是工单处理,最后是结算。每个流程都有切换日期、拍板的人,以及第一周发现错误时退回旧系统的办法。一次性全部切换,就没有这条退路。
从了解旧系统的人那里接手知识,要在写下第一行代码之前开始。程序里和人脑中的规则,需要整理成一份案例清单:系统如何处理更正发票、没有客户编号的工单、外币付款。这份清单日后就是新系统的测试集,也是它没有遗漏任何内容的证明。团队成员曾参与改造已在运行的系统:为提升可扩展性而重构基础设施监控(使其能支撑不断扩大的网络),以及将工作流系统迁移上云。他们还构建过带有催收自动化功能的ERP系统(企业的财务与运营系统)。
应向实施方提出哪些要求
在开始比较价格之前,报价应说明五件事。
- 范围。 新系统接管的流程清单,以及留在旧系统中或将被取消的流程,并由您这一方的一名人员确认清单完整。
- 阶段顺序。 哪个流程最先切换、为什么,每个阶段完成后有什么已经就绪、可以投入使用。
- 数据如何处理。 新系统从哪里获取数据,两个系统并行运行多久,由谁核对差异,新系统不迁移的历史数据如何处理。
- 知识交接。 实施方由谁与了解旧系统的人沟通,何时、以什么形式形成规则清单。
- 上线后由谁运维。 具体人员、响应时间、年度费用,以及如果您决定自行接管运维,系统如何移交给您的团队。没有这一项,第二笔账就被低估了。
第一步是分析:梳理旧系统目前承担的工作,算出两笔三年期的账,排出切换顺序,并给出是否重写、从哪个流程开始的建议。


