温州程序员劝退师 (@Das)找到问题的本质在于找到本质的问题 中发帖

前言
最近 VC 玩多了,回来聊聊工程问题

找到问题的本质在于找到本质的问题

这句话乍看之下是打机锋,但却是提高工程质量的一个切实方法。很多时候,真正阻碍质量提升的不是缺少答案,而是问错了问题。
一个线上接口变慢了,我们问:“怎么优化这个接口?”
这不是个好问题,应该继续追问:
1.为什么只有管理用户慢?
2.为什么只在每天9点半到 11 点慢?
3.为什么数据库没有变慢,但接口耗时增加了?
4.为什么缓存命中率下降没有触发告警?

现象不是问题
工程现场最常见的误判,是把现象当成问题。
比如:页面白屏了。
此时简单的修复可能是单纯地拉长等待时间或者给个兜底值。
但如果我们继续追问:
1.是所有用户白屏,还是部分用户?
2.是首次加载白屏,还是路由跳转后白屏?
3.是前端资源加载失败,还是运行时报错?
4.是发布后立刻出现,还是某个接口返回特定数据后...