分配责任
- 集中式: 文档团队或技术写作人员负责所有内容。适用于较小的团队和产品,在这些情况下文档团队有足够的上下文来维护所有内容。
- 分布式: 产品、工程或团队负责人负责各自领域的文档。适用于具有专业领域的大型产品。需要一个协调人来确保一致性并发现缺口。
- 混合式: 文档团队负责核心内容(入门、导航、风格),而领域团队负责其功能的技术参考和指南。
建立审查节奏
基于触发器的审查
- 在与代码变更相同的 pull request 中更新文档
- 在功能发布清单中包含文档检查项
- 在关闭任何改变用户可见行为的工单之前,要求文档签核
定期审查
- 每月: 审查高流量页面的准确性。这些页面影响最多的用户,因此值得更频繁地关注。
- 每季度: 审计反馈评分低或与支持工单高度相关的页面。
- 每年: 全面内容审计——查找过时的示例、已被取代的方法以及不再反映产品的内容。
使用自动化发现过时内容
- 标记超过 90 天未更新的页面进行审查
- 监控搜索分析中没有返回结果的查询——这些通常表明应该存在但不存在的内容
- 使用 CI 检查在每个 pull request 中强制执行 frontmatter 要求并捕获损坏的链接
尽可能自动化
- 损坏的链接: 在发布前运行
mint broken-links,在用户遇到之前捕获损坏的内部和外部链接。 - 风格执行: 像 Vale 这样的 linter 可以根据可配置的规则检查文本——术语一致性、被动语态、缺少标点——在每个 pull request 中执行。参阅风格与语气了解更多关于 linting 的信息。
- API 参考更新: 如果你的 API 参考是从 OpenAPI 规范生成的,请将规范生成自动化为发布流水线的一部分,这样参考文档就永远不会落后。
- 自动化文档草稿: 使用代理 API 在代码合并时自动生成文档草稿。
知道何时重写
- 尽管经过多轮编辑,用户仍然持续报告困惑
- 页面已经扩展到涵盖多个不同的主题,这些主题应该是单独的页面
- 产品发生了根本性变化,页面结构不再映射到功能的工作方式
- 超过一半的内容是边缘情况、注意事项或”如果……则不适用”
移除不再适用的内容
- 设置从旧 URL 到最相关当前页面的重定向
- 检查指向已移除页面的内部链接并更新它们
- 如果该页面被广泛使用,考虑是否在更新日志中添加简要说明
常见问题
如何让工程师在发布功能时更新文档?
如何让工程师在发布功能时更新文档?
将其设为必需步骤,而非请求。在功能的完成定义中包含文档。将文档更新放在与代码变更相同的 pull request 中——这样可以保持上下文的新鲜度,便于一起审查。当工程师意识到过时的文档会产生返回到他们那里的支持工单时,维护文档的动力就会变得更加清晰。
如何处理已弃用功能的文档?
如何处理已弃用功能的文档?
保持已弃用的文档可访问但明确标记。在页面顶部添加通知,说明该功能已弃用、何时将被移除以及用户应该迁移到什么。在功能实际被移除之前不要删除页面——使用旧版本的用户仍然需要它。一旦移除,将 URL 重定向到迁移指南或替代功能的文档。
小团队的最低可行维护流程是什么?
小团队的最低可行维护流程是什么?
两个实践涵盖了大部分价值:在与代码变更相同的 PR 中更新文档,以及在每次发布前运行
mint broken-links。这两个习惯可以防止最常见的偏差类别——过时的说明和损坏的链接——而无需专门的文档基础设施。随着团队和产品的增长,逐步添加定期审查和自动化。如何对文档债务进行优先级排序?
如何对文档债务进行优先级排序?
按影响排序。一个每月有 5,000 次访问且满意度评分低的过时页面,比一个没人阅读的过期页面更紧急。使用分析数据按流量对内容进行排名,与反馈评分交叉参考,并与支持工单量关联,以建立一个优先级列表。修复用户实际访问的页面,而不是团队觉得杂乱的页面。