上个月有个客户找我,说上一家把源码给他了。
我问他跑起来没有。他说还没试,先放着。
我让他当场打开编译一遍。缺三个依赖,报了 17 行红字。
他愣了半天,说了一句:\"不是说都给我了吗。\"
给了,和能用,是两回事。这篇就讲一件事:源码到手那天,你怎么验。
一、源码给你了,不代表你能用
很多人以为,拿到一个压缩包就算交付了。
不是。
压缩包解压出来,可能缺配置、缺数据库脚本、缺依赖清单。看着文件都在,一跑全是错。
更麻烦的是,这种事往往隔半年才发现。等你换供应商、要改功能,打开一看跑不起来,上一家早联系不上了。
那时候再补,花的钱比当初验收多得多。
二、验收三件套:编译、数据库、部署文档
我给客户做源码交接,只验这三样。
三样都过了,这个源码才是真的到手了。
少一样,后面都有坑。
| 验收项 | 当场要做什么 | 过不了说明什么 |
|---|---|---|
| 跑通编译 | 干净环境里从零构建一次 | 依赖没交全,或者版本锁死了 |
| 数据库结构 | 拿到建表脚本加初始数据 | 只给表不给数据,跑起来是空壳 |
| 部署文档 | 照着文档一步步做到能访问 | 文档是摆设,实际靠人肉记忆 |
这三个不用懂技术也能盯着。你不用自己动手,但必须当场看完。
三、第一件:当场编译一遍
别信\"在我机器上是好的\"。
这话我听过几十遍。
验收就一条:换一台干净电脑,从零开始装环境、拉代码、编译。中间卡在哪,缺的就是没交的东西。
常见缺这几样:
- 依赖包清单不全,某个库只装在他自己电脑上
- 版本号没锁,你装的是新版,跑不动老代码
- 配置文件里的密钥没给你,或者给的是过期的
- 某个模块是编译好的二进制,源码没有
最后这条最狠。整个项目 80% 能看,核心那块是黑盒。
编译这一步,顺利的话半小时。不顺利,能拖三天。
四、第二件:数据库要连结构带数据
数据库只给表结构,等于给你一个空房子。
进去一看,什么都没有。
要拿的是三样:建表脚本、初始化数据、一份脱敏的真实数据。
第三样最容易被漏掉。没有真实数据,你连\"这个系统跑起来长什么样\"都不知道。
我见过最离谱的一次,客户拿到 42 张表,全是空的。后台登录进去,列表一片白。他以为是 bug,其实是压根没数据。
还要当场确认一件事:数据库账号权限给了没有。只给查询权限的,你连改表都改不了。
五、第三件:部署文档要能照着做出来
文档这个东西,最容易糊弄。
给你一份三页纸,写着\"安装运行环境、导入数据库、启动服务\",等于没写。
怎么判断文档有没有用?找一个没参与过这个项目的人,照着做一遍。他卡住的地方,就是文档缺的地方。
一份能用的部署文档,至少要有这些:
- 服务器环境要求,具体到版本
- 每一步的命令,能直接复制
- 配置文件里每一项的含义
- 出错了去哪看日志
- 证书、域名、第三方账号分别在哪配
五条里少一条,换人的时候就要靠猜。
六、除了三件套,还要点一遍这五样
三件套过了,还有五样东西要当场点清。
这五样不影响跑起来,但影响你能不能真的接手。
第一,第三方组件的授权。 代码里用了别人的库,是免费的还是商用的?商用的买了几个授权?到期时间写在哪?
第二,所有密钥和证书。 支付证书、短信接口、地图服务,这些账号在谁名下?你能不能自己续费?
第三,域名和服务器的管理权。 域名在谁账号里,服务器后台给不给你管理员权限。
第四,后台管理员账号。 拿到最高权限的账号,别只给一个普通操作员账号。
第五,小程序或应用的主体。 注册在谁名下,能不能迁到你名下。
这五样,一样没点清,后面都能卡住你。
七、三种常见交付,风险差很多
同样是\"给源码\",实际给的东西差别巨大。
| 交付方式 | 你拿到什么 | 风险等级 |
|---|---|---|
| 整包压缩发给你 | 一份代码,剩下的靠猜 | 高 |
| 代码仓库权限移交 | 含提交历史,能看到改了什么 | 中 |
| 仓库加文档加现场验收 | 三件套齐全,能独立部署 | 低 |
第一种最常见,也最容易出问题。价格看着最便宜,后面补的钱最多。
第三种贵一点,但你能真的拿走。
为什么第一种最常见?因为没人愿意为验收花时间。开发方觉得代码都给你了还要怎样,甲方觉得能跑就行。两边都图省事。
结果就是,风险全压在半年后。
我有个客户,交付那天双方吃了顿饭,气氛特别好。半年后他要加功能,找到我,第一句话是\"我怀疑上一家没给全\"。我验完,确实没给全。
那顿饭省下的半小时,最后花了一周补。
八、源码体检要花多少钱
如果你已经拿到源码,心里没底,可以做一次体检。
我们按人天报,人天单价 1000 元。市面上同行普遍在 1200 元上下。
交接验收:编译跑通、数据库核对、文档试做
1500 - 2000 元 1.5 至 2 人天
完整交接包:补文档、整理配置、搭一套干净环境
3000 - 4000 元 3 至 4 人天
深度审计:授权核查、依赖清点、安全扫描、迁移方案
6000 - 8000 元 6 至 8 人天
第一档最常用。换个供应商之前花 1500 元验一遍,比后面扯皮便宜太多。
第三档适合系统跑了三五年、中间换过好几拨人的情况。
说实话:体检这事,做完可能一分钱问题都没发现。那你这 1500 元花得值不值?我觉得值——你买的是\"确认没问题\",不是\"找出问题\"。
九、三个真实交接,钱花在哪了
说三个我做过的,隐去客户信息。
案例一:缺三个依赖,1500 元
一家做建材的公司,上一家交付半年后联系我们改功能。
我们拉代码一编译,缺三个内部依赖包。对方公司已经注销了。
怎么办?只能照着报错反推,把那三个包的功能重写了一遍。
1.5 人天,1500 元。钱不多,但拖了四天。要是当初当场编译一次,十分钟就能发现。
案例二:数据库没给数据,3000 元
第二个客户是做培训机构的,拿到源码和 38 张表。
表结构齐全,一条数据没有。他后台登进去全是空白页,以为系统坏了。
我们补了两件事:写初始化脚本,造一份脱敏的测试数据。
加起来 3 人天,3000 元。这钱本来不该花,交付清单里写一句就能避免。
案例三:换供应商前的全面审计,6800 元
第三个是一家连锁门店,系统跑了四年,中间换过两拨开发。
他们要整体迁移到自己服务器,先做了一次深度审计。
查出两个问题:一个报表组件是商用的,只买了单店授权;一个短信接口的密钥写在代码里,四年来没人改过。
第一个不处理,扩张到第五家店就是侵权。第二个不改,密钥泄露了都不知道。
7 人天,6800 元。他们自己说,这个钱花得最值。
十、换供应商时,怎么接才不掉链子
换人是最容易出事的节点。
老的不配合,新的不熟悉,中间就断档了。
我的建议是分三笔走:
- 先把仓库权限要过来,别等最后一刻
- 验收通过再付尾款,金额至少留一成
- 新供应商先做体检,别急着改功能
第三条最容易被跳过。新的一来就上手改,改到一半才发现地基有问题,那时候谁都说不清是谁改坏的。
还有个细节:交接期最好留两周重叠。老的还没撤,新的已经接上,有问题当场问。
完全断开再接,中间那段空白最贵。
十一、一份能直接用的验收清单
下面这些,验收那天照着点一遍就行。
不用懂技术,看着他们做。
- 干净电脑,从零编译一次,看有没有报错
- 拿到建表脚本,加一份脱敏的真实数据
- 找个人照着部署文档做一遍,看卡不卡
- 清点第三方组件,问清哪些是付费的
- 要所有密钥和证书,当场验证能用
- 确认域名、服务器、应用主体在自己名下
- 拿到后台最高权限账号,登录一次
- 所有东西打包存档,写清日期和版本
八条,半小时能点完。点完签个字,后面省很多事。
顺带说一句:验收完一定要存档。把当天拿到的所有东西,打包存一份,文件名写上日期和版本号。
别嫌麻烦。真出事的时候,你能证明\"那天就是这个状态\",这句话值很多钱。
十二、开源协议:最容易被忽略的一颗雷
代码里用了别人的库,不是写了\"免费\"就能随便用。
开源协议有很多种。有的允许商用,有的要求你也开源,有的禁止商用。
最常见的坑是这种:开发图省事,引了一个协议很严的库。你自己用没事,一旦对外提供服务,就违约了。
怎么查?让开发方出一份清单:用了哪些第三方库,分别是什么协议,有没有商用的。
这份清单不长,一般一页纸。但很多开发方给不出来,因为他自己也不知道。
给不出来,就说明这个项目的依赖是糊涂账。
十三、常见问题
对方不愿当场验收怎么办?
合同里写一条:交付后五个工作日内完成验收,逾期未提异议视为通过。有了这条,主动权在你手上。
按年付费、不给源码的那种能买吗?
能买,但要想清楚一件事:你买的是使用权,不是这个系统。哪天他涨价或者停服,你的数据要能导出来。签约前问清导出格式。
源码拿到了,自己没人维护怎么办?
那就别自己扛。找个按次收费的,改一次算一次。比养一个人划算得多。
什么时候该做体检?
三个时机:刚交付、换供应商前、系统跑了三年以上没动过。其他时候不用花这个钱。
最后说一句
源码交付这事,出问题的时候都很安静。
不是当场吵起来,是半年后你要用的时候,发现打不开。
那时候没人认账。所以验收那天,该看的一定要看完。
拿不准的,把交付物清单发过来,我帮你过一遍有没有漏项。看一眼不要钱。
