上个月,一位做本地生活服务的老板找我。
他手里有个小程序。
三年前找人做的。
现在想加两个功能。
一个是在线退款。
一个是订单导出。
他问了两家。
一家说能改,报价 4200。
一家说改不了,建议重做,报价 1 万 3。
他把两份报价发给我,问:"二次开发是不是一定比重做贵?"
我说不是。
大多数情况下,改比重新做便宜。
但有几种情况,改反而更贵。
而且贵得不容易看出来。
先说结论:改还是重做,看三件事
这件事不用凭感觉。
看三样东西。
第一样,老代码读不读得懂。
读得懂就改,读不懂就重做。
这是最要紧的一条。
第二样,要改的地方有多少。
只动一两个模块,改。
要动的地方超过六成,重做。
第三样,底座还活着没有。
用的框架还在更新,改。
框架早就停更,连部署环境都装不上了,重做。
三条过完,答案基本就出来了。
二次开发的钱,主要花在"读懂"上
很多人以为二次开发的钱花在写代码上。
不是。
大头花在读别人的代码上。
我给你拆一遍。
头一笔,把项目跑起来。
拿到源码,先要在本地装环境、装依赖、连数据库。
顺利的话半天。
不顺利,两天都未必跑得起来。
按 1000 元一个人天算,这一笔 500 到 2000 元。
这笔钱,重做是不用花的。
再一笔,读懂业务逻辑。
原作者不在,没有文档。
只能一行一行看。
一个中等规模的系统,两三万行。
通读一遍要 1 到 3 个人天。
也就是 1000 到 3000 元。
还有一笔,才是改本体。
加一个在线退款,前后端加接口、加状态、加后台按钮。
2 到 3 个人天,2000 到 3000 元。
最后一笔,回归测试。
改完不能只看新功能。
老功能有没有被碰坏,要全部过一遍。
又是 1 个人天左右。
四笔加起来:5 到 8 个人天。
5000 到 8000 元。
而同样的需求重做,要 12 到 15 个人天。
12000 到 15000 元。
所以常规答案是:改,大概能省一半。
但有一种改,会越改越贵
上面那个算法有个前提。
代码读得懂。
读不懂的话,第二笔钱就不是 1 到 3 个人天了。
可能变成 5 个人天,也可能永远读不完。
我遇到过一次。
一个商城系统,外包做了一半,人跑了。
代码没有一行注释。
变量名是 a1、a2、temp2 这种。
数据库还缺两张表。
客户问我能不能接着改。
我看了两天,报了个数。
硬改的话,先把缺的表补齐、把逻辑猜出来,保守 9 个人天,9000 元。
猜错了一处,后面全是坑。
重做的话,15 个人天,15000 元。
但重做完是个干净东西,后面再加功能便宜。
他选了重做。
现在过了大半年。
他后加的三个功能,一个花了 800,一个 1200,一个 2000。
这就是区别。
改一个读不懂的系统,你付的钱是不确定性的价钱。
这个价钱,会随着改动次数一直涨下去。
三招,测出老代码还能不能救
不用懂技术也能测。
让对方按这三步做一遍,看结果。
先测这个:能不能在本地跑起来
把源码拿过来,装环境,跑一遍。
半天跑起来的,说明项目是活的。
两天都没跑起来的,说明底子已经烂了。
跑不起来还硬改,等于闭着眼睛修车。
再测这个:有没有一份说得清的文档
不用多正式。
哪怕是一个表格,写着"哪个文件管什么"。
有的话,读懂的成本直接砍一半。
没有的话,只能靠读代码猜。
这一项,很多三年前的项目都交白卷。
最后一个:改个小地方试试水
别一上来就谈大改动。
先提一个最小的需求。
比如把某个按钮换个位置,或者加一个字段。
看对方多久交付、改完有没有碰坏别的地方。
这个小改动花 1 个人天,你能买到一个很重要的信息:
这套代码,后面还改得动吗。
什么情况下,改更划算
这几条对得上,就别折腾重做。
- 只加一两个功能,不动主流程
- 原功能基本能用,只是缺东西
- 项目跑得起来,能本地部署
- 框架还在维护,市面上找得到人
- 源码、数据库、后台账号在你自己手上
- 改动的地方不超过整个系统的四成
- 你现在的预算,只够改,不够重做
最后一条很实在。
预算只有四五千的时候,重做就是一句空话。
先把最疼的地方改掉,跑起来再说。
什么情况下,建议推倒重来
这几条撞上任意一条,我劝你别改。
- 源码不完整,缺模块或数据库对不上
- 原来那家联系不上了,也没有任何文档
- 用的框架已经停更,找插件都找不到
- 这次要动的地方超过六成
- 老系统每隔一两个月就出一次莫名其妙的问题
- 你要加的功能,和原来的架构根本对不上
- 算下来改的钱已经到重做的七成
第七条是硬标准。
改要 9000,重做 12000。
这时候别省那三千。
省下来的结果是,你拿到一个拼起来的东西。
下次再改,还是这个价。
同一套系统,两份账摆一起看
下面这张表,是我给那位做本地生活的老板算的。
你照着套自己的项目就行。
| 项目 | 二次开发 | 推倒重来 |
|---|---|---|
| 跑通环境 | 1 人天 | 不花钱 |
| 读懂逻辑 | 2 人天 | 不花钱 |
| 需求梳理 | 0.5 人天 | 1 人天 |
| 页面与接口 | 2.5 人天 | 7 人天 |
| 后台管理 | 不花钱(原来有) | 3 人天 |
| 测试上线 | 1 人天 | 2 人天 |
| 合计 | 7 人天,约 7000 元 | 13 人天,约 13000 元 |
表里最扎眼的是"后台管理"那一行。
重做要 3 个人天。
改的话,后台是现成的。
这就是改的最大优势:
你不用为已经做好、并且还在用的部分再付一次钱。
前提是那些部分还能用。
还有第三条路:老的不动,新的另起
改和重做之外,还有个中间选项。
老系统接着跑。
要加的新功能,单独做一套小的。
两边靠导入导出打通,或者接一个简单接口。
这条路适合两种情况。
一是老系统天天在用,一天都停不得。
二是预算紧,只够解决眼前最疼的那一件事。
我去年做过一个。
老系统是进销存。
客户想加个小程序,让下游客户自己下单。
老系统一行没动。
新做了个下单小程序,4 个人天,4000 元。
订单每天定时导进老系统。
缺点是两套账号,数据不是实时的。
优点是老系统一点风险都没有,钱也花得少。
跑了一年多,他还在这么用。
动手之前,先把这六样东西备齐
二次开发拖工期,八成卡在资料上。
不是卡在技术上。
要这六样:
- 完整源码,含前端和后台,别只要一半
- 数据库,能导出就导出一份,别只给表结构
- 服务器和后台的管理员账号
- 第三方账号:支付、短信、地图、实名认证这些
- 原来的需求文档,没有的话,截图也行
- 现在最痛的三个问题,写下来
第六样最容易被跳过。
但它决定了这次改动值不值。
很多人上来就说"我要改一改"。
问改哪,说不上来。
这种情况,先别谈钱。
把最疼的三件事写出来,再谈。
四个坑,二次开发里最常踩
缺数据库的坑
拿到了全部代码,一跑,空的。
数据是核心资产。
代码可以重写,三年前的数据重写不回来。
签合同的时候写清楚:源码、数据库、部署文档,三样一起交。
账号绑在别人名下的坑
支付商户号是原来那家的。
短信签名也是。
这种换不掉,只能重新申请。
申请一套微信支付,主体资料加审核,快的两天,慢的一周。
这段时间项目只能停着。
框架停更的坑
三年前的项目,用的是三年前的版本。
服务器系统一升级,老版本装不上了。
找插件,插件也停更了。
这种我建议直接重做。
硬改的话,等于在沙子上盖楼。
改到一半才发现要动主流程
这是我见过最贵的坑。
年前一位客户,要求给老系统加会员等级。
报价的时候按"加一个模块"算,4 个人天,4000 元。
改到第三天发现。
原来的订单表没有会员字段。
价格计算散落在七个地方。
要加会员等级,这七个地方全得动。
工程量从 4 个人天涨到 11 个人天。
再加前面已经花掉的,一共 1 万 6。
比重做还贵。
所以我的建议是:报价之前,先花半天做一遍代码体检。
半天,500 元。
能省掉后面几万块的意外。
也有特别划算的二次开发
说完贵的,说个便宜的。
上个月有个客户,只提了一个需求。
老系统里的报表,能不能导出成表格。
就这一件事。
我看了看,加一个导出按钮,接一下现有查询。
1.5 个人天,1500 元。
当天给,第二天上线。
这种活我最爱接。
因为改一个地方,解决一个大麻烦。
她原来每个月要手动从系统里抄一遍数据。
抄一整天。
1500 块,把每个月的一天买回来了。
所以别一听"二次开发"就觉得贵。
贵的从来不是"改"这个动作。
贵的是不知道要改什么、也不知道改下去会碰到什么。
常见问题
二次开发是不是一定便宜?
不一定。
改动小就便宜,改动大就不便宜。
判断方法是算人天。
改的总人天到了重做的七成,就别改了。
原来那家不给源码怎么办?
先看合同。
合同里写了源码归你,就有依据。
没写的话,只能谈。
谈不下来,就只能重做。
这也是为什么我一直强调,源码交付这条款一定要写进第一份合同。
能不能只改,不要维护?
能。
但改完那次上线,建议让对方盯着。
老系统最怕的不是改错。
是改完别的模块悄悄坏了,两个月后才发现。
换个团队接手,风险有多大?
关键在于交接。
资料齐的,一周能上手。
资料不齐的,光猜逻辑就要一两周。
交接的时候多花两小时整理文档。
后面能省十几天。
这件事,先别急着报价
如果你手上也有个老系统要改。
我的建议是先做两件事。
头一件,把最疼的三个问题写下来。
再一件,找人做一遍代码体检。
体检花半天,几百块。
出一份东西:这套代码还能改多久、改哪里最贵、你这次要的功能大概几个人天。
拿着这份东西,你再决定改还是重做。
不至于像那位客户一样。
改到第三天,才知道这是个 11 个人天的活。
AI 辅助开发在代码生成、UI 组件、接口联调这些环节能大幅压缩人工时间,省下来的成本直接体现在报价上。
读代码这件事,AI 也能帮上忙。
两三万行,先让工具梳理出调用关系,人再顺着看。
以前要 3 个人天的活,现在 1 个多。
省下的时间,我们直接减在人天里。
如果你在西安,这套老系统可以当面看。
带上源码和数据库,坐两小时。
看完给你一句实话:能改,还是别改了。
