TANG / 唐泽龙 BUILDING WITH AI
← 文章与随想

产品随笔 · 2026.08.07 · 8 分钟

代码完成、部署上线与客户可用,为什么不是一回事?

一个功能真正抵达用户之前,要经过几个完全不同的状态。把它们说清楚,不是流程洁癖,而是对结果负责。

做黄雀和泽龙中转站以后,我越来越确定一件事:团队最容易产生误解的地方,不是功能难不难,而是每个人口中的“做好了”并不是同一种状态。

“已经好了”至少包含五件不同的事

  1. 代码完成:功能已经写进开发分支,开发者能在自己的环境里运行。
  2. 检查通过:构建、测试和必要的安全检查没有发现阻断问题。
  3. 进入主线:改动已经被审查并合并,成为团队共同维护的代码。
  4. 部署上线:正确版本已经进入目标环境,相关服务和配置正常工作。
  5. 客户可用:真实用户能完成完整任务,拿到结果,费用、作品和记录彼此一致。

这五个状态互相关联,却不能互相代替。一次接口返回 200,不能证明用户拿到了作品;一个开发包上传成功,也不能证明它已经通过审核并正式发布。

越靠近用户,证据越接近产品真相

我习惯把证据分层:代码和测试证明“我们实现了什么”,部署与运行状态证明“目标环境正在执行什么”,而真实业务链路才证明“用户最终得到了什么”。

服务在线是技术事实,客户拿到结果才是产品事实。

所以做付费 AI 功能时,我不会只看健康接口。还要核对任务是否完成、作品能否打开、扣费是否正确、失败有没有退款、同一个请求会不会被重复提交。

清楚地报告边界,团队反而会更快

“代码已完成,尚未部署”“开发版已上传,尚未审核”“正式环境已更新,真实用户链路待验收”——这些句子看起来更谨慎,却能让每个人立刻知道下一步在哪里。

模糊的“已经好了”会把风险推给下一个人。清楚的状态说明,会把责任、证据和下一步放在同一张桌面上。

我现在如何判断一项工作是否结束

我会追问三个问题:用户能不能看见?用户能不能完成?结果和账务能不能对上?只要其中一个答案还不确定,这项工作就只是抵达了某个中间状态。

产品的最后一公里不在代码仓库里,而在用户真正拿到结果的那一刻。