tdr · essay
论文档之死
关于工程组织里那个无人愿读、也无人愿写、却仍然每周新生的文体 — 文档。一份冗长的辩护词。
我们写文档不是为了让人看见我们写过什么,而是为了让六个月之后回到现场的那个人 — 也许是别人,也许是自己 — 不必从头猜起。
什么算是文档
在动笔之前,我们先约定一个共同的定义。文档不是任何写在屏幕上的字 — Slack 不是,Jira 不是,PR description 不是。文档是一个特殊的文体:它假设读者不在事件现场,因此必须自带上下文;它假设读者会在未来某个时刻才打开,因此必须经得起时间。当一段文字同时不满足这两条,它属于沟通,不属于文档。
这条界限解释了为什么"我们的文档很多"和"我们没有文档"可以同时成立。RFC、设计稿、上线公告 — 这些
三种相邻文体
把文档从相邻文体里区分出来,有助于看清它真正的边界:
三者并非高低关系,而是分工 — 把工程文档当成会议纪要的扩写,是当代组织文档质量崩塌的最常见路径。
关于"写"的三个误解
谈"写"之前,先清理那些被反复念诵但从未被验证的口号。这些口号不只是错的,它们是有害的 — 它们让作者以为自己在写文档,实际上只是把模板填了一遍。
论证:为什么我们仍要写
面对前述三个误解,最常见的反应不是修正,而是放弃。"既然全写出来没人看、模板化没用、写在前面又写不出来,那干脆就别写了。" 这是一种诱人的退路。本节给出三条反驳。
这四条都不是新论点。但它们值得在每次决定"这次先不写了"之前被重新念一遍。
两种风格的折中
我们见过的最好的工程文档,几乎都在两个极端之间做了某种折中 — 一端是 RFC 的严谨、可追溯、结构化;另一端是随笔的叙事、判断、个人化。下表是一份非常粗暴的对照,仅供启发:
这张表的真正用法不是去选一边,而是意识到自己在选。一份装作 RFC 的随笔,和一份偷偷想当随笔的 RFC,是工程组织里最常见的两种烂文档。
论文档之美
本节是这篇文章最不像工程文章的一节 — 谈论审美。
排版的传统是慢的。一本书的页面比例、行长、字距、引号悬挂、首字下沉、章节序号 — 这些细节经过几百年的优胜劣汰沉淀下来,每一项都解决了一个具体的阅读问题。我们今天把工程文档塞进 Notion 默认模板里,丢掉的不是装饰,而是这些被验证过的"如何让人愿意继续读下去"的智慧。
这不是怀旧。这是承认一个朴素事实:没人会读他不愿意读的东西。当你的 RFC 长得像 stack overflow,你的同事就会用读 stack overflow 的方式扫两眼。当它长得像一本书,他可能会真的从头读到尾 — 哪怕只为了对得起那个排版。
文档之死,从哪里开始
每一份死去的文档,回溯起来,都死于一个具体的瞬间。下面这条时间线不是真实事件,是一个虚构的合成 — 但每一格,你或许都在自己的某份文档里见过它的影子。
有没有救?有。但救法不在文档本身,而在写作的人 — 在他是否愿意把"评审是为了打磨我的判断"理解为"评审是为了用别人的判断替换我的判断"。
四种危险
把"写不下去"具体化,大致可以归为四类风险。
结语
这篇文章本身是一份文档。它谈论了文档的边界、文档的误区、文档的美学、文档的死亡。如果它最终被读完一次 — 哪怕只有一次 — 它就胜过了我见过的绝大多数 RFC。
下次你坐下来准备写一份新的文档时,先做一件事:把你脑子里关于"应该怎么写"的所有念头放下,问自己一个朴素的问题 — 半年后那个不在场的人,需要先知道什么。从那个答案开始写。
剩下的,会自己找到位置。
由 talon-doc-runtime 渲染 · archetype: editorial-longform ·