技术写作指南:如何写出人能看懂的文档和方案
2026/7/3大约 6 分钟
技术写作指南:如何写出人能看懂的文档和方案
技术文档写了很多,但没人看?方案写了几十页,评审时大家还是在问「这个方案到底要做什么」?问题不在技术深度,而在表达方式。本文从结构化思维到图表规范,帮你写出真正有人看的技术文档。
一、技术文档分类
技术文档四大类型:
┌──────────────┬──────────────────────┬────────────────┐
│ 类型 │ 读者 │ 核心目标 │
├──────────────┼──────────────────────┼────────────────┤
│ 设计文档 │ 技术团队 │ 方案对齐+评审 │
│ API 文档 │ 调用方开发者 │ 快速接入 │
│ 运维手册 │ 运维/SRE │ 故障处理 │
│ 复盘报告 │ 团队+管理层 │ 总结教训 │
└──────────────┴──────────────────────┴────────────────┘
写作黄金法则:
1. 先说结论,再说过程(金字塔原理)
2. 读者优先(写给谁看就站在谁的角度写)
3. 一图胜千言(能用图不用表,能用表不用段落)
4. 可执行(每个段落读者读完知道下一步做什么)二、结构化写作方法
2.1 金字塔原理
金字塔原理:结论先行,逐层展开
❌ 错误写法(倒三角):
我们调研了 3 种方案:
方案 A 用 Redis,优点是快但数据量大时内存不够
方案 B 用 MySQL,优点是稳定但查询慢
方案 C 用 ES,支持全文搜索且扩展性好
综合考虑,我们选择方案 C。
问题:读者读到最后一行才知道结论
✅ 正确写法(金字塔):
我们选择 ES 作为搜索引擎。
原因有三:
1. 支持全文搜索(MySQL 的 LIKE 性能差)
2. 水平扩展(Redis 内存成本高)
3. 与现有日志系统统一技术栈
方案对比:
┌────────┬────────┬────────┬────────┐
│ │ Redis │ MySQL │ ES │
│ 搜索 │ 精确匹配│ LIKE 慢 │ 全文搜索│
│ 扩展 │ 内存限制│ 分库分表│ 水平扩展│
│ 成本 │ 内存贵 │ 低 │ 中 │
└────────┴────────┴────────┴────────┘
现象 → 结论 → 依据 → 细节2.2 MECE 原则
MECE(Mutually Exclusive, Collectively Exhaustive):
相互独立,完全穷尽
分类时做到不重叠、不遗漏
❌ 不 MECE:
"性能问题分为:CPU 问题、内存问题、数据库问题"
→ 数据库问题可能也是 CPU 问题(重叠)
→ 遗漏了网络问题、IO 问题
✅ MECE:
"性能问题按资源分类:
CPU、内存、磁盘 IO、网络、数据库、应用代码"
→ 每个分类独立,合在一起覆盖所有可能
在技术文档中的应用:
- 方案对比:列全所有可行方案
- 影响评估:覆盖所有受影响模块
- 风险列举:覆盖技术/业务/安全/合规2.3 SCQA 框架
SCQA:情境 → 冲突 → 问题 → 答案
S(Situation):情境——读者认可的背景
"我们的订单系统日均处理 100 万订单,
P99 响应时间 200ms"
C(Complication):冲突——打破了情境
"大促期间 QPS 涨 10 倍,P99 飙升到 2s,
丢单率上升 3%"
Q(Question):问题——读者心中的疑问
"如何在大促期间保持 P99 < 500ms?"
A(Answer):答案——你的方案
"引入 Redis 缓存 + 读写分离 + 限流降级,
预期 P99 降到 300ms"
效果:读者自然被吸引,从「为什么要做」到「怎么做」三、图表表达规范
3.1 架构图
架构图规范:
1. 层次清晰(从上到下:用户 → 应用 → 数据)
2. 箭头方向表示数据流/调用关系
3. 每个框标注名称 + 技术栈
4. 用不同颜色区分:外部/应用/中间件/存储
示例:
┌──────────┐ ┌──────────┐
│ Web 前端 │ │ APP 客户端 │
│ (Vue 3) │ │ (Flutter) │
└─────┬────┘ └─────┬──────┘
│ │
▼ ▼
┌─────────────────────────────┐
│ API Gateway (Nginx) │
└─────────────┬───────────────┘
│
┌───────────┼───────────┐
▼ ▼ ▼
┌──────┐ ┌──────┐ ┌──────┐
│用户服务│ │订单服务│ │商品服务│
│(Java) │ │(Java) │ │(Go) │
└───┬──┘ └───┬──┘ └───┬──┘
│ │ │
▼ ▼ ▼
┌──────┐ ┌──────┐ ┌──────┐
│MySQL │ │MySQL │ │ ES │
└──────┘ └──────┘ └──────┘3.2 流程图
流程图规范:
使用标准符号:
○ 开始/结束
□ 处理步骤
◇ 判断
▽ 数据输入/输出
示例(订单流程):
○ 开始
│
▽ 用户提交订单
│
◇ 库存充足?
│ ├── 否 → 返回缺货提示 → ○ 结束
│ └── 是
│ │
□ 创建订单(状态:待支付)
│
□ 发送支付消息
│
◇ 15 分钟内支付?
│ ├── 否 → 取消订单 → ○ 结束
│ └── 是
│ │
□ 更新订单(状态:已支付)
│
□ 发送物流消息
│
○ 结束3.3 时序图
时序图规范:
参与者:用户 / Web / API / DB
消息:→ 同步调用,--> 异步消息
激活条:表示处理时间
示例(登录时序):
用户 Web API Redis MySQL
│ │ │ │ │
│─POST──→│ │ │ │
│ login │ │ │ │
│ │─POST──→│ │ │
│ │ │─GET────→│ │
│ │ │ token │ │
│ │ │←───OK───│ │
│ │ │ │
│ │ │─SELECT──────────→│
│ │ │ user │
│ │ │←─────result───────│
│ │ │ │
│ │ │─SET────→│ │
│ │ │ session│ │
│ │←──200──│ │ │
│←──200───│ │ │ │
│ token │ │ │ │四、不同类型文档的写作要点
4.1 设计文档
## 设计文档 Checklist
□ 背景与目标(为什么做,做成什么样)
□ 现状分析(当前怎么做的,有什么问题)
□ 方案对比(至少 2 个方案,列出优缺点)
□ 详细设计(架构图 + 流程图 + 接口 + 数据模型)
□ 影响评估(影响哪些模块,兼容性)
□ 测试策略
□ 上线计划(灰度 + 回滚)
□ 风险与对策
常见问题:
❌ 只有方案没有对比(为什么选这个方案?)
❌ 只有架构没有流程(数据怎么流转?)
❌ 只有正常路径没有异常处理(出错怎么办?)
❌ 没有影响评估(改了什么其他模块?)4.2 复盘报告
## 复盘报告模板
### 事件概述
- 时间:2024-06-15 14:30 ~ 15:45(75 分钟)
- 影响:订单服务不可用,影响 12,000 笔订单
- 严重级别:P0
### 时间线
14:30 监控告警:订单服务错误率 100%
14:32 值班收到告警,开始排查
14:35 定位到 MySQL 慢查询导致连接池耗尽
14:40 临时方案:扩容连接池
14:45 连接池扩容完成,服务恢复
15:00 确认根因:索引被误删
15:15 恢复索引
15:30 验证服务正常
15:45 事件关闭
### 根因分析(5Why)
1. 为什么服务不可用?→ MySQL 连接池耗尽
2. 为什么连接池耗尽?→ 慢查询占用连接不释放
3. 为什么有慢查询?→ 全表扫描(索引缺失)
4. 为什么索引缺失?→ 06-14 凌晨 DDL 误删索引
5. 为什么 DDL 误删?→ DDL 评审缺少索引检查
### 改进措施
| # | 改进项 | 负责人 | 截止日 | 状态 |
|---|--------|--------|--------|------|
| 1 | DDL 评审增加索引检查项 | 张三 | 06-20 | 已完成 |
| 2 | 慢查询告警阈值从 1s 降到 500ms | 李四 | 06-18 | 已完成 |
| 3 | 连接池监控大盘补充 | 王五 | 06-25 | 进行中 |五、面试要点
Q:技术方案文档怎么写?
- 背景+目标(为什么做)2. 现状分析(当前问题)3. 方案对比(至少 2 个,列出优缺点和选择理由)4. 详细设计(架构图+流程图+接口+数据模型)5. 影响评估 6. 测试策略 7. 上线计划(灰度+回滚)8. 风险与对策。核心原则:结论先行(金字塔原理),方案有对比,异常有处理。
Q:如何提高文档的可读性?
- 金字塔原理:结论先行,逐层展开 2. MECE 分类:不重叠不遗漏 3. 一图胜千言:架构图/流程图/时序图 4. 段落 < 5 行,多用列表 5. 预读机制:评审前发出,减少会议时间 6. 持续更新:文档是活的,随方案变更更新。
六、总结
技术写作 = 结构化思维 + 图表表达 + 读者意识
结构化:金字塔原理(结论先行)+ MECE(不重叠不遗漏)+ SCQA(情境-冲突-问题-答案)
图表:架构图(层次+箭头)+ 流程图(标准符号)+ 时序图(交互顺序)
分类:设计文档(8 节结构)/ API 文档 / 运维手册 / 复盘报告
核心原则:
- 先说结论再说过程
- 写给读者看,不是写给自己看
- 能用图不用表,能用表不用段落
- 文档是活的,持续更新