1322 words
7 minutes
技术文档写作指南:如何写出没人看但很有用的文档

好的技术文档没人看,烂的技术文档看不懂。目标是:写出能看懂、能执行、能解决问题的文档。

为什么要写文档#

程序员不爱写文档,但不得不写。

三个现实原因:

  1. 交接需要——你走了别人要接手
  2. 协作需要——团队要统一认知
  3. 自己需要——三个月后你会忘记

我吃过没写文档的亏:

  • 半年前写的代码,现在看不懂
  • 给同事讲了三遍怎么做,还是有问题
  • 离职交接花了两周,嘴巴都说干了

所以我现在逼自己写,哪怕没人看。

文档类型#

不同类型的文档,写法不一样。

1. README#

项目首页,应该包含:

  • 项目是什么(一句话)
  • 怎么安装(复制粘贴能跑)
  • 怎么用(最简单示例)
  • 怎么贡献(可选)

不要

  • 长篇大论介绍背景
  • 只写给自己看的术语
  • 过时信息(README必须是最新的)

2. API文档#

接口定义,应该包含:

  • 接口地址
  • 请求方法
  • 参数说明(类型、必填、示例)
  • 返回值(成功/失败示例)
  • 错误码

工具推荐

  • Swagger/OpenAPI - 自动生成
  • Postman Collection - 可执行
  • Markdown表格 - 简单清晰

3. 设计文档#

架构、方案,应该包含:

  • 背景(为什么要做)
  • 目标(做到什么程度)
  • 方案(怎么做的)
  • 权衡(为什么选这个方案)
  • 风险(可能的问题)

重点:写决策过程,不只是结果。

4. 操作手册#

部署、运维,应该包含:

  • 环境要求
  • 详细步骤(复制粘贴能执行)
  • 常见问题
  • 回滚方案

原则:让新手能照着做出来。

写作原则#

原则一:读者是谁#

写之前问自己:

  • 给谁看?
  • TA知道什么?
  • TA想看什么?

给新手的文档:

  • 术语要解释
  • 步骤要详细
  • 例子要简单

给专家的文档:

  • 直接给结论
  • 细节可以简略
  • 重点在决策逻辑

原则二:结构清晰#

用标题层级:

# 一级标题 - 文档主题
## 二级标题 - 主要章节
### 三级标题 - 小节
#### 四级标题 - 尽量少用

用列表:

  • 无序列表 - 并列事项
  • 有序列表 - 有先后顺序

用表格:

  • 对比多个选项
  • 展示参数

原则三:简洁具体#

不好: “系统会自动处理异常情况。”

: “当数据库连接失败时,系统会重试3次,每次间隔5秒。如果仍失败,返回错误码500。”

不好: “传入正确的参数即可。”

: “参数userId必填,类型为字符串,示例:‘user_123’。“

原则四:可执行#

代码示例要真的能跑:

# 不好的示例
import api
api.call()
# 好的示例
import requests
response = requests.post(
'https://api.example.com/v1/users',
json={'name': '张三', 'age': 25},
headers={'Authorization': 'Bearer your_token'}
)
print(response.json())

具体技巧#

开头要吸引人#

不好: “本文档介绍XX系统的使用方法…”

: “3分钟上手XX系统,完成你的第一个API调用。”

或者直接给一个能跑的代码。

使用代码块#

大段代码用代码块,不要 inline:

// 好
public void example() {
System.out.println("Hello");
}

不要:public void example() { System.out.println("Hello"); }

标注重要信息#

用引用块:

⚠️ 注意:执行此操作前请备份数据

用加粗: 重要:生产环境需要修改配置文件

及时更新#

文档过时比没有文档更糟。

每次代码变更,问自己:

  • README需要更新吗?
  • API文档需要更新吗?
  • 操作手册需要更新吗?

建议:把文档更新加到Definition of Done。

工具推荐#

文档托管#

  • GitBook - 美观,适合产品文档
  • ReadTheDocs - 适合技术文档
  • Notion - 适合团队内部
  • GitHub Wiki - 简单,和代码在一起

文档生成#

  • Swagger - API文档
  • Javadoc/JSDoc - 代码注释生成
  • MkDocs - 静态站点生成

写作辅助#

  • Grammarly - 语法检查
  • Hemingway - 可读性分析
  • MarkdownLint - Markdown格式检查

常见问题#

Q: 文档写多长合适?#

A: 能短则短。但必要的细节不能省。

原则:刚好够读者完成任务。

Q: 英文还是中文?#

A: 团队用什么语言就写什么语言。

如果是开源项目,英文为主,关键部分双语。

Q: 怎么让人愿意看?#

A: 没办法,大部分文档确实没人看。

但你要写,因为:

  • 出问题时会有人查
  • 新入职时必须看
  • 你自己三个月后会看

Q: 文档和注释的区别?#

A:

  • 注释 - 解释代码为什么这样写
  • 文档 - 解释系统怎么用

两者都要有。

我的文档写作流程#

  1. 先写大纲 - 结构比内容重要
  2. 填充内容 - 先写全,再精简
  3. 添加示例 - 每个概念配代码
  4. 检查可读性 - 自己读一遍,顺不顺
  5. 给同事看 - 让目标读者试用
  6. 发布并维护 - 定期更新

最后的话#

技术文档不是文学作品,不需要华丽辞藻。

它的价值在于:

  • 节省沟通时间
  • 降低出错概率
  • 沉淀团队知识

哪怕只有一个人看,也是值得的。

因为那个人可能是三个月后的你自己。


你写技术文档吗?有什么技巧或痛点?欢迎交流。