先给出可执行判断:把该功能当作“无需求来源的存量资产”重新立项评估,而不是当作已投入成本去追认。若它仍有明确使用方、可量化收益、且维护成本低于替代方案,就留用并补需求与验收记录;若三者缺一,就进入下线流程。判断依据不是“已经写完了”,而是“接下来一年是否有人为它负责”。
需求取消意味着最初的问题定义、验收标准和预算承诺同时失效。此时功能处在一种反常状态:代码存在,但没有人承诺它会随业务变化而更新。常见的两种解释需要分开。
解释一:功能本身仍有独立价值。取消的只是原需求场景,但功能在其他路径上已被真实调用或即将被调用,只是没人把这条链路写进需求文档。
解释二:它只是沉没成本的载体。团队不愿承认已投入的工时无效,于是用“以后可能有用”替代了具体使用方和具体收益。两者的外部表现相似:功能能跑、页面能打开、没人主动提删除。
不要只看访问量。访问量高可能是爬虫、内部测试或误触;访问量归零也可能是入口被隐藏、权限未开放或统计未覆盖,这些都不能单独证明功能无用或有用。更有区分度的证据有三类。
一个假设例子:某站点在改版中开发了“按标签批量导出”功能,原需求方随后撤销了项目。若运营团队每月仍需手工整理同类数据,且没有其他导出路径,这属于解释一,应补一份简短的使用说明和责任人;若导出结果与现有报表完全重叠,只是入口不同,则属于解释二,应进入下线评估。
留用不是“先放着”。要让留用成立,至少补齐三件事,否则它会在下一次改版中变成无人认领的故障点。
做完这一步,下一步的判断会变得清晰:如果责任人拒绝签字,说明留用缺乏组织基础,应直接进入下线,而不是继续争论技术实现。
下线的实际动作不是删代码,而是先确认没有隐藏调用。可按以下顺序执行:
这个动作的结果会直接影响下一步:如果排查中发现外部系统仍在调用且无法快速切换,就不能按原计划下线,而应转为“冻结但保留接口”,并单独记录迁移期限。反之,若排查后没有外部依赖,就可以按计划移除,并把释放出的维护精力投入仍有需求来源的功能。
面对下一个“需求取消但功能已开发”的情况,可以用一句话收束:没有责任人和使用方的功能,默认下线;有责任人和替代成本证据的功能,才进入留用并补记录。这条规则的依据不是开发投入多少,而是未来是否有人为它的结果负责。需求取消本身不构成留用理由,已完成的代码也不构成下线障碍,真正决定取舍的是可指认的使用方、可验证的替代方案和可承担的维护责任。