程序员必备!最全技术文档写作指南

程序员最讨厌两类人,一类是不写文档的人,一类是让自己写文档的人。但其实,一篇上下文详尽、边界清晰的文档,能够前置性地解决很多问题,避免因为信息差而带来的各种来回追问、扯皮。

写技术文档是开发者的义务,它和写可读代码一样重要,它也可以体现个人做事态度、逻辑思考能力。本篇文章作者将体系化地教会你,如何写文档,如何写好文档。

01

用什么载体

  • 持久沉淀的文档:建议使用可以被多人看到、可以被检索的知识库工具,譬如:公司内的 wiki 或者归属于组织的知识库。不建议使用私人文档,或者 word 等无法规模化传播的工具。

  • 短时间多人协作的文档:首选腾讯文档之类的在线多人协作工具。

  • 整体建议:评审、共建类的文档,可以采用腾讯文档,最终定稿之后使用腾讯文档知识库或者其他长久存储工具。

02

需要写哪些文档

文档是高效沟通、高效协作、知识沉淀、知识分享的工具。鼓励写文档,但也不推荐事无巨细的流水账式写文档。这些情况下需要写文档。

  • 模块的整体架构设计文档,譬如:《检索引擎架构设计详解》、《检索内核整体设计》、《在线检索系统设计》 、《内容架构重构方案》 等等;

  • 模块的关键功能设计文档,譬如:《检索引擎打分排序设计》、《检索引擎性能评测框架》 等等;

  • 通用经验沉淀,譬如:《时间戳转换时间字符串导致服务卡死》、《流水线构建说明手册》、《GCC8 编译优化 BUG 导致的内存泄漏》 等等;

  • 项目经验总结,譬如:《检索引擎系统升级项目总结》、《检索引擎内核建库阶段性能优化》、《内容架构重构项目总结》 等等;

  • 给其他开发者提供开发框架文档,譬如:《检索内核 C++ 打分插件开发及使用文档》、《内容接入系统算子开发手册》 等等;

  • 提供给使用者的功能介绍文档,譬如:《快速入门——检索引擎接入说明》、《force 召回干预使用说明》 等等;

  • 复杂 case 排查的总结文档,譬如:《文档入库时效性滞后排查》、《未召回相关文档排查》 等等;

  • 调研总结文档,譬如:《ES 检索获取匹配词方式调研》、《Lua 插件性能调研》 等等;

  • 新人入门类文档,譬如:《检索引擎新人大礼包》、《从入职第1天到第1个需求》、《搜索中台开发入门手册》 等等;

总的来说,对多个读者有价值的文档,才值得一写。

03

怎么写好文档

   3.1 文档模板

文档的内容、结构决定了文档的质量,如无特殊说明,技术文档应该采用固定的模板编写。当前我们团队已有的技术文档模板包括:

  • 【模板】后台串讲文档模板

  • 【模板】后台性能评测文档模板

  • 【模板】后台架构评审文档模板

  • 【模板】技术产品 Case 调查总结文档模板

  • 【模板】Case Study 模板

   3.2 排版格式

   3.2.1 目录规范

  • 内容超过一屏的文档,必须有目录。

  • 目录必须有数字序号。

   3.2.2 撰写者和编辑者规范

文档必须有 owner,也必须允许开放协作,要求在文章开头插入文章的主要作者(撰写)和参与编辑作者(编辑)。

例子:

000233ddd3956fdde2272939459a734d.png

   3.2.3 中英文/数字/标点规范

规范细则:

https://github.com/sparanoid/chinese-copywriting-guidelines/blob/master/README.zh-Hans.md

核心要点:

  • 中文与英文/数字之间需要增加空格。

  • 数字与单位之间需要增加空格。

  • 全角标点与其他字符之间不加空格。

  • 使用全角中文标点。

   3.3 内容组织

   3.3.1 核心原则

  • 目标:让读者⾼效地获得预期信息。

  • 特点:准确、完整、清晰、聚焦。

  • 关键词:简洁清晰、内容单一、完整准确、有层次、面向读者。

   3.3.2 呈现工具

如果有些步骤比较复杂,建议使用 gif 图,比贴图片更详细,又不会像视频那么重。推荐 ScreenToGif 工具,支持录屏 gif,还可以编辑每一帧,加上文字说明。

   3.3.3 合适的粒度

文档应该避免粒度过粗,导致内容衔接不上(不完整);也避免粒度过细,影响阅读效率(不简洁)。粒度的粗细程度,根据文档将要面对的读者类型而定。

   3.4 技术评审文档建议

技术评审文档是我们日常写得较多的文档,下面举两个例子。

   3.4.1 从 0 开始搭建的架构

按照金字塔原理,层层递进,思路如下:

  • 目标和背景,描述清楚为什么你要做、要做成什么样。

  • 整体架构,给出架构的整体视图,包括:功能架构图、模块架构图。

  • 方案细节,以功能架构图、模块架构图为蓝本,介绍详细设计。

  • 方案权衡,行业是怎么做的,为什么选择这个方案。

  • 工作排期,给出开发人日,什么时候开始,什么时候完成。

  • 其它,根据业务特点,需要给出来的一些附加信息,譬如:调研报告、参考信息等等,当内容比较多时,独立放到另外一个文档中。

   3.4.2 对已有功能点的优化

按照金字塔原理,问题--> 问题拆解 --> 解决方案分类归并,思路如下:

  1. 背景/提出问题:描述清楚为什么要做优化。

  2. 发散方案:可以发散的提出各种解决方案,也可以是对上面问题的进一步分析,行业方案对比也放在这里描述,除非内容非常多需要单独放一个文档。

  3. 收敛方案:已经将方案明确下来,这里只探讨明确下来的方案细节,可以是有唯一方案,也可以是有多个方案备选。

  4. 工作排期:

    1. 有时候在【1. 背景/提出问题】这里提出问题的同时就已经包含了解决方案。

    2. 必须围绕着问题展开讨论,紧贴问题,不要把跟主题不相干的内容放到分析里,也不要给出一个泛泛而谈的问题,问题太泛会导致分析没有针对性,如果一个问题点太大,需要拆小了分析。

04

文档的维护

文档是跨越时间限制的交流,而时间也可能让文档过时,因此文档需要持续维护。

   4.1 owner 制度

单篇文档,由文档 owner 负责维护,其他同学如果有发现错误,也可以随时更新,文档 owner 负责整体审核。系列文档,由方向负责人整体承担文档的质量。

   4.2 例行更新和按需更新

文档维护和代码质量维护一样重要且耗费人力。基于投入产出比的考虑,通常建议将更新分为两种类型。一种是必须及时更新的,譬如:技术产品对外的接口文档,需要结合迭代进度在每次技术升级时例行更新。另一种是读者不多,更新滞后影响较小的,譬如:给团队新人阅读的新人手册,可以在有新人入职时再更新。

05

推荐阅读书籍

《金字塔原理》

e8ead73a6aa1470a1714a777fe8db42b.png

《一本小小的红色写作书》

0ff5820a166b3a0ded5dcbb1392fb020.png

-End-

原创作者|吴银光

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
智慧校园整体解决方案是响应国家教育信息化政策,结合教育改革和技术创新的产物。该方案以物联网、大数据、人工智能和移动互联技术为基础,旨在打造一个安全、高效、互动且环保的教育环境。方案强调从数字化校园向智慧校园的转变,通过自动数据采集、智能分析和按需服务,实现校园业务的智能化管理。 方案的总体设计原则包括应用至上、分层设计和互联互通,确保系统能够满足不同用户角色的需求,并实现数据和资源的整合与共享。框架设计涵盖了校园安全、管理、教学、环境等多个方面,构建了一个全面的校园应用生态系统。这包括智慧安全系统、校园身份识别、智能排课及选课系统、智慧学习系统、精品录播教室方案等,以支持个性化学习和教学评估。 建设内容突出了智慧安全和智慧管理的重要性。智慧安全管理通过分布式录播系统和紧急预案一键启动功能,增强校园安全预警和事件响应能力。智慧管理系统则利用物联网技术,实现人员和设备的智能管理,提高校园运营效率。 智慧教学部分,方案提供了智慧学习系统和精品录播教室方案,支持专业级学习硬件和智能化网络管理,促进个性化学习和教学资源的高效利用。同时,教学质量评估中心和资源应用平台的建设,旨在提升教学评估的科学性和教育资源的共享性。 智慧环境建设则侧重于基于物联网的设备管理,通过智慧教室管理系统实现教室环境的智能控制和能效管理,打造绿色、节能的校园环境。电子班牌和校园信息发布系统的建设,将作为智慧校园的核心和入口,提供教务、一卡通、图书馆等系统的集成信息。 总体而言,智慧校园整体解决方案通过集成先进技术,不仅提升了校园的信息化水平,而且优化了教学和管理流程,为学生、教师和家长提供了更加便捷、个性化的教育体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值