核心问题
为什么不知道一个围栏为什么存在之前,不要先拆掉它?
真实场景
代码里有一段奇怪判断:
如果用户来源是 legacy_partner,就跳过某个校验。
新人觉得这是坏味道,想删掉。后来发现这个合作方仍在使用老接口,删除会导致订单全部失败。
常见误区
坏判断是:
这个逻辑看起来不优雅,所以应该移除。
工程上,优雅不是第一原则。正确理解系统边界才是第一步。
工程视角
Chesterton’s Fence 的工程含义是:
在你不知道一段代码为什么存在之前,不要轻易删除它。
这不是反对重构,而是反对无知的重构。
PM 可以怎么做
PM 很适合追问“围栏历史”:
- 这个规则对应哪个客户或业务?
- 有没有数据证明它已经不用了?
- 删除前是否可以加监控?
- 是否需要灰度关闭?
- 是否要通知业务方确认?
Atlas Action
对每个想删除的旧规则,建立一个“围栏卡片”:
规则是什么:
疑似原因:
当前使用量:
删除风险:
验证方式:
下线计划:
小结
切斯特顿围栏不是让你永远保留旧逻辑,而是提醒你:先理解,再拆除。
PM 的价值,是让“删除”变成可验证的工程动作。