先给结论:在网站制作流程里遇到“需求取消、代码已写”的情况,不能按沉没成本决定留用,而要先判断这段功能是否仍在服务当前业务目标。若它已无对应业务动作、无明确维护人、且下线不会破坏现有流程,优先下线;若它仍被真实访问或调用、且维护成本可控,则暂时留用并设定复查点。两种选择的成立条件不同,关键是找到能区分“只是没人提”与“确实还在用”的证据。
最典型的场景是:立项时业务方要求做一套报名或查询功能,开发完成后需求被撤销,但代码已经合并上线。此时页面还能打开,接口也可能还在被调用。团队内部往往出现两种声音:一种认为既然做了就别浪费,留着以后也许有用;另一种认为需求都取消了,应该尽快清理。
这两种判断都没有触及真正的问题。需求取消只说明当初的决策前提变了,不等于功能当前没有价值,也不等于它值得继续占用维护资源。要评估留用还是下线,必须回到“现在还有谁在依赖它”这个事实上。
对同一个现象,通常有两种合理解释。
解释一:它是隐形依赖。需求虽然被取消,但功能上线后已经被某些内部流程、外部用户或上下游系统实际使用。此时直接下线会造成中断,留用是必要的,但需要补上需求文档和维护责任人。
解释二:它是无人使用的遗留。功能上线后从未被真正使用,或者使用量已经归零,只是没人主动清理。此时留用只会增加后续改版、安全检查和测试的负担,下线更合理。
这两种解释对应的动作完全相反,所以不能靠讨论或印象决定,必须找可观察的证据。
能区分上述两种解释的证据,主要来自三个方面。
一个可操作的动作是:先给功能加上临时访问标记或调用计数,观察一个业务周期。如果标记显示仍有调用,下一步应找到调用方并确认其业务归属;如果标记显示为零,下一步才进入下线评估,而不是立即删除。
假设某网站制作流程中开发了一个“历史订单导出”功能,后来业务方说不再需要批量导出。团队没有直接删除,而是先保留入口并观察两周。结果发现财务部门仍每周调用一次接口,用于对账。这个证据说明功能存在隐形依赖,于是团队选择留用,并补上维护责任人和使用说明。
另一个假设是“活动抽奖页面”功能,需求取消后页面仍可访问,但访问日志显示连续一个月只有开发人员测试产生的记录,且没有任何外部入口指向它。团队据此判断它属于无人使用的遗留,于是先下线入口,再保留代码一个版本周期,确认无异常后删除。这个例子中的数字仅用于说明比较方法,不代表真实项目结果。
把证据落到决策上,可以按以下条件区分。
需要强调的是,访问量归零或调用量归零不能单独证明功能可以安全删除,它还可能意味着统计未覆盖、入口被隐藏或调用方尚未迁移。只有把观测结果与业务确认结合起来,才能形成可复查的结论。
无论最终选择留用还是下线,都应把结论写回网站制作流程的变更记录中:留用的功能注明责任人和复查时间,下线的功能注明清理范围和回退方式。这样下一次遇到需求取消时,团队不必重新争论,而是可以直接查看上一次的判断依据和结果。评估的目的不是证明谁对谁错,而是让功能的存在或消失都有可追溯的理由。