凌晨两点四十,pager 响了。一个老服务的连接池打满。
我知道大概是怎么回事。但还是先去翻 runbook——规矩是我自己定的,出事不看 runbook 的人,没资格写 runbook。
打开。四十七页。
一页一页往下滑,滑到第十九页才看见"回滚"两个字。中间那十几页,讲这个服务的历史沿革、三次架构演进,还有一节叫"设计权衡"。
那时候我没工夫欣赏权衡。
第二天我把那份 runbook 砍到六页。删掉的一大半,是前几任值班的人"觉得应该写下来"的。有人跟我说删完心里没底。我说你心里没底,是因为你指望文档替你做判断。
扯远了,回到我想说的。
十月中旬有人转给我 Alex Wennerberg 一篇文章,标题大意是问:为什么理性主义博客圈的每一篇文章都那么长。我没混过那个圈子。看到一半我笑了——那味儿太熟。
他举了个例子。Gwern 用九千词、一百多条参考文献,论证尼古丁其实不成瘾、只要不吸烟就对身体无害。然后他反驳:尼古丁成瘾,不靠吸烟摄入也有害,这是常识。
九千词,推翻常识。
这个剧本我看过。我们这行的版本,比博客贵得多。
我见过一份事故复盘,三十多页,七个小节,附录挂了六张监控截图。写得非常认真,非常完整,非常——
没有人读完。
你读完了吗?签字那个人也没有。他签了,因为看见这么厚,觉得"应该查得挺细"。
厚度在这儿起了什么作用?它替作者挡掉了追问。你没法跟一份三十页的报告抬杠,因为你没读完。
Wennerberg 说这个圈子把篇幅当成了严谨的替代品,写得越多就越像有东西可说;他管缺的那个东西叫"智慧"——判断哪些想法值得深究、哪些话根本不必说。这话我同意一半。往我们这行推一格:缺的不是智慧,是敢不敢在少写的那一页上签字。
再说 Gwern 那九千词。我真正被冒犯的不是他推了个错的结论——人都会错。我介意的是那个形式:一百多条参考文献码在那儿,形成一个气场,让你读到第三千词的时候,就不好意思说"这不就是尼古丁成瘾吗"。
参考文献在那儿不是证据,是门槛。
我们这行的对应物,是一条告警后面挂二十个 dashboard 链接。有人管这叫"上下文充分"。我管这叫把判断责任往下游推。你看得越多越不敢下结论,最后拍板的,往往是没时间看这些的那个。
说句实话,我自己也犯过。
有一年做数据库迁移,我写了四十多页方案,从选型写到回滚演练,当时真心觉得写得细就是负责。上线那天出的问题,出在我方案里唯一没写的那一页——因为那一节我不知道怎么写,就跳过去了。
写得长的人,常常在自己懂的地方写得多,不懂的地方一笔带过。
篇幅是有偏的。你以为厚度代表覆盖,其实厚度代表作者的兴趣分布。
这观察不是从谁那儿抄的,是自己被坑出来的。所以我现在看文档先看目录,专门找那几节短得不对劲的。短的那节才是雷。
现在我们的 runbook 有一条硬规矩:
runbook.md 行数 > 200
-> 值班经理在下次复盘会上逐节确认是否仍有效
不是为删而删。超过两百行的东西,没人会在凌晨三点读完;没读完的部分,等于不存在。
顺便说一句正相关的。现在流行让 AI 起草事故报告,出来的东西天然就是三十页——它不删,它只补。你让它写,它把「多种因素叠加」这路话铺满七个小节,人因一个字没有。跟 Gwern 那九千词一个毛病,只不过从一个月缩到三分钟。
Yudkowsky 那套 Sequences 一百多万词,我一个字没读过,也没打算读。不是因为我不信长文——是因为我信一条:能一句话说清的东西,写了九千词,那九千词里至少有一半,是在替作者躲那一句话。
本期教训:一份没人读完的文档,和一份没写的文档,在凌晨三点是等价的。
