先给有条件的结论:如果这个功能已经开发完成、能独立运行,且维护它不会拖住后续迭代,那么短期留用、但标记为“无主功能”并设定复核时间,通常比立刻下线更稳妥;反之,如果它依赖即将更换的接口、需要专人持续投入,或与当前业务口径冲突,就应尽快下线。判断的关键不是“开发成本已经花掉了”,而是“继续保留会占用多少未来的维护与理解成本”。
多角色对同一功能的理解常常不同:业务方记得需求取消,开发记得代码写完,运营可能以为它还在用。分歧之所以难解决,是因为大家谈的是印象,而不是可核对的项目。建议把功能拆成三类事实,逐项确认:
这三类事实可以分别核对,不必一次谈完。比如开发确认代码仍在,运营确认近一段时间没有新增数据,业务确认需求已取消——三方事实拼起来,才构成判断依据。若只凭“我记得取消了”就删代码,可能误删仍被引用的模块;只凭“代码已经写了”就保留,则可能长期养着一个没人负责的入口。
留用成立的条件通常有三条同时满足:功能可独立运行、不依赖即将变更的外部接口、有明确的归属人或复核时间。此时可以把它保留在站内,但在项目文档里注明状态,避免后来者误以为它是正式业务功能。
下线成立的条件则相反:功能依赖的接口、字段或页面结构即将调整;或它需要持续投入才能维持;或它与当前业务口径已经冲突,留着反而让用户困惑。满足其中一条,就足以把下线提上日程,不必等三条全中。
这里有一个反例会让上述结论失效:如果该功能虽然需求取消,但已经对外产生承诺,比如用户已提交的数据需要可查询、合同或活动页面里已写明入口,那么“无主功能”这个标签就不成立,不能按普通废弃功能处理,而要先解决对外承诺,再谈留用或下线。也就是说,判断的前提是“没有外部承诺”,一旦有,优先级顺序就变了。
与其开会争论,不如先做一个动作:在测试环境或本地把该功能的入口临时关闭,然后观察一段时间内是否有人反馈“找不到”。这个动作的结果会直接影响下一步——如果没有反馈,说明下线阻力小,可以进入删除流程;如果有反馈,反馈来自谁、用来做什么,就决定了它该被保留、改造还是正式立项。
需要说明的是,访问量归零或某段时间没有数据,不能单独证明功能可以下线。它还有别的合理解释:入口藏得深、只在特定时段使用、统计口径没覆盖到,或者用户早已转向其他渠道。因此观察结果要和前面的三类事实交叉核对,而不是拿一个数字下结论。
假设某企业站开发了一个“经销商查询”页面,后来渠道政策调整,需求取消,但页面已经上线。团队可以按下面的方式比较两个选择:
比较的重点不是哪边“更省事”,而是哪种选择让后续维护者更容易理解现状。若页面无人负责又长期挂着,新接手的人会花时间判断它是否重要;若直接删除却仍有外部链接指向,则会产生死链。两种成本都真实存在,选择取决于哪一边更容易被核对和控制。
建议先完成一次事实核对,把代码、运行、数据三类信息写进同一份记录,并明确一名临时负责人。然后执行临时关闭入口的观察动作。若观察期内无人反馈,且确认没有对外承诺,就进入下线流程,同时保留可回溯的备份;若有人反馈,就把反馈内容转成新的判断依据,重新评估是保留、改造还是正式立项。这样,分歧就从“谁记得对”变成了“哪条事实支持哪种处理”,后续每一步都有可核对的结果作为依据。