技术写作:为什么最好的程序员也是最好的写手
代码是写给机器看的,文档是写给人看的。但很多程序员只重视代码质量,忽视了写作能力。本文探讨技术写作的重要性、核心原则和实用技巧。

技术写作:为什么最好的程序员也是最好的写手
程序员的日常工作不只是写代码。
你需要写设计文档来阐述你的技术方案。你需要写代码审查的评论来解释你的意见。你需要写邮件来和团队沟通项目进展。你需要写文档来帮助其他开发者使用你的代码。
写作能力直接影响你的工作效率和职业发展。
为什么程序员需要写作能力

软件开发本质上是一种协作活动。一个大型项目可能有几十甚至几百个开发者参与。协作的基础是沟通,而文字是最主要的沟通方式。
设计文档是技术决策的载体。一个好的设计文档能让团队理解你的方案、提出反馈、达成共识。一个差的设计文档让团队困惑、质疑、甚至误解。
代码审查的文字是知识传递的渠道。通过审查评论,你可以解释为什么某段代码需要修改、为什么某个方案更优、哪些边界情况需要考虑。这些文字帮助团队成员学习和成长。
文档是代码的"说明书"。没有文档的代码就像没有说明书的复杂机器,用户不知道怎么操作,遇到问题也不知道怎么解决。
技术写作的核心原则
清晰是技术写作最重要的原则。每一个句子都应该只表达一个意思,不应该有歧义。不要使用模糊的词语,比如"可能"、"大概"、"应该"。用具体的数据和例子来替代。
简洁是第二个原则。能用十个字说清楚的不要用一百个字。删掉所有不必要的修饰语和过渡句。读者的时间是宝贵的,不要浪费。
结构化是第三个原则。用标题、列表、段落来组织内容,让读者可以快速找到需要的信息。一个长篇大论没有结构的文章,会让读者失去耐心。
读者导向是第四个原则。写作时要考虑读者的背景和需求。写给高级工程师的技术方案和写给产品经理的需求文档,语气、深度、用词都应该不同。
设计文档的写作
设计文档是技术写作中最重要的类型。
一个好的设计文档应该包含以下几个部分:背景和动机(为什么要做这个)、目标和非目标(要做什么、不做什么)、方案设计(怎么做)、替代方案(还考虑过什么方案、为什么没选)、风险和缓解(可能出什么问题、怎么应对)。
背景和动机部分要说清楚"为什么"。不要假设读者了解项目的上下文。用具体的场景和数据来说明问题的重要性和紧迫性。
方案设计部分要说清楚"怎么做"。用架构图、流程图、时序图来辅助说明。文字描述配合图表,比纯文字更清晰。
替代方案部分是很多人忽略的,但它非常重要。它展示了你思考的全面性,也让读者理解为什么最终选择了这个方案而不是其他方案。
代码注释的写作
代码注释是最小单元的技术写作。
好的注释解释"为什么",而不是"是什么"。代码本身已经说明了它在做什么,注释应该解释为什么要这样做。比如"使用二分查找而不是线性查找,因为列表可能有上万元素"。
坏的注释要么是代码的重复(注释说的和代码做的一样),要么是过时的(代码改了但注释没改),要么是误导的(注释说的和代码做的不一致)。
注释应该简洁明了。一个函数的注释应该在一两句话内说清楚函数的功能、参数的含义、返回值的含义。不需要写成长篇大论。
文档即代码

"文档即代码"是近年来流行的理念。把文档和代码放在一起管理,用版本控制来跟踪文档的变更,用 CI/CD 来自动构建和发布文档。
这种做法有几个好处。首先,文档和代码在同一个仓库中,更新代码时可以顺手更新文档。其次,文档的变更可以通过 PR 来审查,保证文档的质量。第三,文档可以自动生成和发布,不需要手动维护。
Markdown 是技术文档的主流格式。它简洁、易读、可以用 Git 管理。大部分文档工具(GitBook、Docusaurus、MkDocs)都支持 Markdown。
常见的写作误区
过度技术化是一个常见误区。技术文档应该让目标读者能理解,而不是展示作者的技术深度。过多的术语和缩写会让读者困惑。
缺乏上下文是另一个误区。不要假设读者了解项目的背景。在文章开头提供足够的上下文,让读者能跟上你的思路。
追求完美也是一个障碍。很多人觉得"我写得不够好,所以不写了"。完成比完美更重要。先写出一个初稿,然后逐步修改完善。
不更新是文档最大的敌人。代码改了但文档没改,导致文档和代码不一致。过时的文档比没有文档更有害,因为它会误导读者。
如何提升技术写作能力
多读是提升写作能力的基础。阅读优秀的技术文档、设计文档、博客文章,学习它们的结构、用词、表达方式。
多写是提升写作能力的关键。写作是一种技能,需要通过练习来提升。从写好代码注释开始,然后尝试写技术博客、设计文档。
获取反馈是提升的加速器。把你的写作给同事看,听取他们的反馈。哪些地方不清楚?哪些地方太啰嗦?哪些地方有错误?
模仿优秀作品是入门的好方法。找一篇你觉得写得好的技术文章,分析它的结构和风格,然后用类似的风格写一篇文章。

我的判断
技术写作是程序员最容易被忽视但最有价值的技能之一。它不直接产生代码,但它提升了代码的价值、团队的效率、个人的影响力。
对于个人来说,投资技术写作能力的回报是长期的。一个好的技术博客可能为你带来工作机会,一个好的设计文档可能让你的技术方案被采纳,一个好的代码注释可能让后人避免踩坑。
对于团队来说,建立技术写作的文化是有价值的。鼓励设计文档的撰写、代码注释的规范、知识库的维护,这些投资会在长期带来回报。
代码是写给机器看的,文档是写给人看的。两者同样重要。最好的程序员不只是会写代码,也会写清楚地表达技术思想的文字。
