前言 最近 VC 玩多了,回来聊聊工程问题 找到问题的本质在于找到本质的问题 这句话乍看之下是打机锋,但却是提高工程质量的一个切实方法。很多时候,真正阻碍质量提升的不是缺少答案,而是问错了问题。 一个线上接口变慢了,我们问:“怎么优化这个接口?” 这不是个好问题,应该继续追问: 1.为什么只有管理用户慢? 2.为什么只在每天 9 点半到 11 点慢? 3.为什么数据库没有变慢,但接口耗时增加了? 4.为什么缓存命中率下降没有触发告警 ... 现象不是问题 工程现场最常见的误判,是把现象当成问题。 比如:页面白屏了。 此时简单的修复可能是单纯地拉长等待时间或者给个兜底值。 但如果我们继续追问: 1.是所有用户白屏,还是部分用户? 2.是首次加载白屏,还是路由跳转后白屏? 3.是前端资源加载失败,还是运行时报错? 4.是发布后立刻出现,还是某个接口返回特定数据后出现? 问题会逐渐变形,从最开始我们以为是渲染问题,逐渐会发现真正的问题,它可能是: 某个接口新增字段为 null ,前端组件没有做空值防御,导致渲染阶段抛错,中断了整个...