Diátaxis:技术文档写作的系统性方法

查看原文 HN 讨论

文章摘要

Diátaxis 是 Daniele Procida 提出的一套技术文档写作框架,网站本身就是这套框架的完整阐述。名字取自古希腊语 δῐᾰ́τᾰξῐς——dia(横跨)加 taxis(安排)。它的核心主张是:文档应当围绕使用者的需求结构来组织,而使用者的需求恰好可以分为四类,对应四种文档形态——教程(tutorials)、操作指南(how-to guides)、技术参考(reference)、解释(explanation)

框架解决的是文档的三类问题:内容(写什么)、风格(怎么写)、架构(怎么组织)。作者强调它同时服务于文档的创作者和维护者:轻量、易懂、易于应用,不强加实现层面的约束,并给维护者带来一条主动的质量原则,帮助他们有效地思考自己的工作。

为什么恰好是四种? 这是 Diátaxis 与其他文档分类法的关键区别,也是网站「Foundations」一章的论证核心。作者的说法是:如果只能说「它看起来挺管用」,那它就只是又一个有用的启发式方法;作为一套理论,它必须说明为什么恰好是四种而不是三种或五种。他的推导从「技艺」(craft)出发——Diátaxis 服务的用户是某个技能领域中的实践者,而技能领域由一门技艺定义(使用一门编程语言是技艺,驾驶某型飞机是技艺,当飞行员这件事本身也是技艺)。任何技艺都包含两个正交维度:

这两个维度构成一张关于技艺领域的完整地图。作者的论证是:只有两个维度,而且它们不只是覆盖了整个领域,它们定义了这个领域——所以必然有四个象限,不可能是三个或五个,这个数字不是任意的。把这张地图翻译到文档上,就得到了四类需求与四类文档的对应:学习的需求由教程满足(用户在习得技艺,文档在告知行动);目标的需求由操作指南满足(用户在应用技艺,文档在告知行动);信息的需求由技术参考满足(用户在应用技艺,文档在告知认知);理解的需求由解释满足(用户在习得技艺,文档在告知认知)。

四种形态的区别。 网站的「地图」一章给出了一张对照表,把四者的差异逐项摊开:教程做的是引介、教育、带路,回答「你能教我……吗?」,面向学习,目的是提供一次学习体验,形式是一堂课;操作指南做的是引导,回答「我该怎么……?」,面向目标,目的是帮助达成某个特定目标,形式是一系列步骤;技术参考做的是陈述、描述、告知,回答「……是什么?」,面向信息,目的是描述这套机器;解释做的是阐明、澄清、讨论,回答「为什么……?」,面向理解,目的是照亮一个主题。作者特别指出,这种组织方式的一个明显好处是它同时提供了对读者的明确预期和对作者的指引:任何一段内容的目的是清楚的,它规定了该怎么写,也指明了该放在哪里。

他还解释了为什么「二维结构」优于「一张清单」:当文档结构不好时,这很少只是结构问题——架构上的缺陷会感染并侵蚀内容。在缺乏清晰、通用的文档架构时,创作者往往试图围绕产品的功能来组织,这即使在单个项目中也很少成功,在一组文档中则会带来剧烈的不一致。而任何有序的内容分类都会有所帮助,但作者常常发现自己要写的某段内容无法很好地落入某个方案给出的类别,或者在重写既有材料时非常吃力——他们会感到这个结构有某种任意性:为什么是这份内容类型清单而不是另一份?如果有另一份清单来竞争,该采用哪个?Diátaxis 的二维推导正是为了回答这个质疑。

指南针。 网站还提供了一个被作者称为「令人惊讶地平庸」的实用工具:地图是好的提醒,但直觉并不总是可靠,作者常常面对「这是哪种文档?」或「这里需要哪种文档?」而没有明显答案,更糟的是直觉有时会立刻给出一个错误答案。Diátaxis 指南针类似于一张真值表或决策树,把二维问题化简为两个问题:行动还是认知?习得还是应用?告知行动 + 习得技能 = 教程;告知行动 + 应用技能 = 操作指南;告知认知 + 应用技能 = 技术参考;告知认知 + 习得技能 = 解释。作者建议在找初始方位时灵活使用这些术语,不要执着于确切的名称。指南针在你觉得自己(或面前的文档)在做某件事、却被某种怀疑或工作中的某种困难困扰时特别有效——它迫使你停下来重新考虑。

网站首页也明确给出了阅读建议:不需要读完整个网站才能理解 Diátaxis 或开始使用它,事实上作者建议你不要那么做——最好的入门方式是读一份简短的入门材料后就直接开始应用。首页还展示了来自 Vonage、Gatsby、Cloudflare 等公司的使用证言,其中 Cloudflare 开发者文档的 Adam Schwartz 说,重新设计文档时 Diátaxis 成了他们信息架构的北极星,不确定新内容该放哪里时就去查这个框架。

HN 评论精华

这条帖子拿到 558 分。它此前多次登上 HN(tedd4u 指出最近一次是 2024 年,那次讨论量最大),所以这轮讨论的重心不在「介绍它是什么」,而在实战经验、与 LLM 的结合,以及一些具体的落地摩擦。框架作者 DanieleProcida 本人也在评论区。