浅谈作为程序员如何写好文档:了解读者

news2024/11/17 17:23:07

我作为从一名懵懂的实习生转变为工程师的工作经历中,伴随着技术经验的成长,也逐渐意识到了编写文档是知识和经验传递给其他人的最有效方式。通过文档,可以分享我的技术知识和最佳实践,使其他人更好地理解我的工作。在这里,给大家浅谈一下作为技术研发如何写好技术文档😄

目录

    • 为何了解读者
    • 何为了解读者
      • 常见的信息差来源——术语
      • 常见的信息差来源——相似物
      • 常见的信息差来源——新事物
    • 如何了解读者
    • 总结

为何了解读者

在日常写文档过程中,大部分技术同学不会花太多时间去了解“读者”。然而由于缺乏对读者对了解,大部分的技术文档的“可用性”是很差的。

“可用性良好”的文档:主要是指读者能看懂文档内容,并且读者能借助文档顺利达到他的目的。比如完成一个任务或者了解一个概念。
反之,“可用性不好”的文档,即使读者能看懂文档,可能也没有办法帮助他解决问题。举个栗子:

  • 写给小白的技术文档,充斥着艰深的术语,又没有任何术语解释。
  • 写给运维工程师的文档,不重点介绍运维操作,却花大篇幅去介绍技术原理。

何为了解读者

  1. 明确读者身份: 文档最终的读者是小白用户or资深用户?或者是运维人员or开发人员? 确立文档的受众是第一步。

  2. 明确读者阅读目的:该文档是为了让读者了解一个概念、完成一个步骤,还是查阅一个参数解释。先确立了文档的目标,才能保证写文档时的大方向不会走错

    举个例子: 某绘图软件的用户手册

    • 文件菜单按钮:用于创建新文件,打开文件,重命名文件等
    • 裁剪按钮:用于裁剪出图片中选中的区域

    该文档作者很详细的描述了界面上各个控件的功能,但是该文档与其说是“用户手册”,不如说是“功能清单”。用户很难找到他所需要的内容。
    基于读者视角,该文档应该介绍这个软件可以解决的具体问题。绘图软件的目标读者一般都是设计人员,那么他们的阅读目的就是完成绘图的各个步骤。修改后的版本,应该使读者快速定位到有用的内容:

    • 如何捕捉图片
    • 如何选择背景
    • 如何绘制椭圆形和圆形
  3. 明确读者所需信息:根据读者的认知能力提供所需信息。比如目标用户是小白,则不能写的过于艰深。
    针对不同的读者群体,应该提供差异化的内容,不同认知水平的读者,所拥有的信息水平也是不同的,即“信息差”。对于文档写作者和读者的信息差,写文档时应该尽量去弥合信息差,将读者的认知水平拉齐到和作者一样的高度。

    The curse of knowledge(知识诅咒/知识陷阱):你越是深入到了解一样东西,则你越难体会/不了解他人的状态。

    很多时候我们难以意识到“信息差”的存在。在写文档时尤其注意需要补充这些读者不知道,却又必须知道的关键信息,否则容易导致文档的不可用。

    常见的信息差来源——术语

    我们在使用术语时,一定要注意术语的规范性。例如以下文档:

    • 大池子
    • 肉鸡
    • CPU打到60%

    此类文档就是把一些“行业黑话”当成术语写在文档里面。这是应该尽力避免的。
    其次,同一个术语应该尽量用同一个意思来表达,比如“接口”,有的人喜欢叫“API”,有的人喜欢叫“方法”。那么在同一篇文档里,应该统一用接口或者统一用API,不能换来换去,避免读者造成不必要的困惑。
    最后,应该在文档中提供及时的术语解释。例如用超链接,引用,注释块等技巧。可参考以下文档:

    • 允许您创建消息组以适应不同的业务场景,在不同的国家或地区,可以使用签名和可用的模板
    • 签名:指在文本消息正文之前的xxx,用于识别公司业务
    • 模板:…

    常见的信息差来源——相似物

    当一个产品提供了两个相似的功能,文档需要帮助读者辨析,方便其做出选择。例如通过表格对比的方式列出两个产品的不同点:在这里插入图片描述

    常见的信息差来源——新事物

    作为技术研发,我们不管是在交代步骤还是在解释概念时,所有新出现的事物都需要充分解释其来源。
    下例文档详细交代了如何获取AppID、AppName和region。这些信息一旦缺失,就可能影响客户满意度、并带来额外的客户支持成本。
    在这里插入图片描述

如何了解读者

了解读者的阅读目的以及所需信息也是至关重要的。
当我们有足够的时间和精力,可以尝试主动走近读者:

  • 邀请同事评审
    把身边同学作为目标受众,获得反馈意见。最后再对文档进行反复修改,反复打磨。
  • 读者访谈
    与读者约一次访谈,了解他们对文档的期待、建议和意见。
  • 文档支持群
    建立文档支持群,收集第一手的文档问题。这是一个长期、可靠、优质的渠道,通过该途径可以收集到许多鲜活的、高价值的文档反馈。

当然,如果没有条件,则可以选择第二种路径,即在动笔写文档之前,做一次头脑风暴,想象出作为读者的阅读历程:

  • 读者从哪里来?
    写此文档背景是什么?读者遇到了什么困难,要完成什么任务?读者最开始是什么状态?他们此时在做什么,手边有哪些资源?
  • 读者在哪儿?
    想象读者此时所处状态?比如,此时在哪个文件夹下?读者怎么确认他们处于文档里说的这个状态?比如执行某个命令,应该返回什么结果?
  • 读者到哪里去?
    为什么要告诉读者这些信息?对他们有什么用?读者下一步要做什么?

总结

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/517727.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Postgres : 创建schema、创建表空间与指定用户权限

1. 创建新的Schema 要创建 PostgreSQL 中的一个新的 schema,并创建一个只有该 schema 权限的新用户,请按照以下步骤操作: (1)打开 PostgreSQL 客户端并连接到数据库服务器。 (2)创建一个新的…

如何在Oracle存储过程发生异常时获取out类型参数的值

Oracle存储过程关于在出现(自定义/自带)异常下out类型参数的获取问题的分析 ✈️ 场景: 有一些关于金额和时间的精确且量大的计算需要在存储过程中完成。存储过程中有一些自定义的异常。并且将在RAISE前通过out类型的参数将详细的异常原因返回。 但是在…

商业智能BI分析报表很慢是什么原因?应该如何优化?

当下,数据计算已成为了分析工作中必不可少的高频次操作之一,而且在大数据的发展背景下,应用性能往往关系着项目的成败,成为了大家最为关注的产品技术参数。那么我们先来分析一下BI分析表计算很慢的原因是什么,再对症下…

Microsoft Dynamics 365 Business Central 生产订单扣料的几种方法

学习目标: 掌握生产订单扣料的几种方法 学习内容: Forward flush by routing operation(通过工序:向前扣料)Backward flush by routing operation(通过工序:向后扣料)Forward flus…

Java-Redis持久化之RDB操作

Java-Redis持久化之RDB操作 1.为什么redis需要持久化?2.什么是RDB操作?3.请你用自己的话讲下RDB的过程?4.如何恢复rdb文件? 1.为什么redis需要持久化? Redis是内存数据库,如果不将内存数据库保存到磁盘,那么服务器进程退出&am…

匿名对象的特性和使用场景你知道吗?

目录 一、匿名对象的概念 二、单参数和多参数构造场景的匿名对象 ①只有一个参数的构造函数 ②多个参数的构造函数 三、使用匿名对象作为函数的参数的缺省值 四、只为调用类中的一个函数时 五、匿名对象的特性 1、匿名对象的生命周期只有一行 2、匿名对象具有常性 3、当匿…

今天去面一个点工,HR要我会数据库,Linux还有Python,这合理吗?

软件测试出路在哪? 业务编程!! 1、软件测试的变化趋势 变化趋势1: 功能测试是核心,但是价值降低 目前测试这个行业,还是有大量的点工。但是行业的进步,技术的创新,导致了企业的需求…

不用下载的网页版Axure在这里

作为一名产品经理,你一定需要一款能够帮助你更好更快地制作原型,更方便地和团队协作的软件。网页版Axure工具替代即时设计无需下载激活,就可免费使用。那么,Axure网页版工具替代即时设计是如何进行的呢? 首先&#xf…

【数据结构】双向带头循环链表

文章目录 一、什么是带头双向循环链表二、带头双向循环链表的实现(一)链表中结构体的声明(二)头节点的创建(链表的初始化)(三)新节点的创建(四)链表的尾插&am…

( 位运算 ) 231. 2 的幂 ——【Leetcode每日一题】

❓231. 2 的幂 难度:简单 给你一个整数 n,请你判断该整数是否是 2 的幂次方。如果是,返回 true ;否则,返回 false 。 如果存在一个整数 x 使得 n 2 x n 2^x n2x ,则认为 n 是 2 的幂次方。 示例 1&…

软考高级架构师笔记1-计算机硬件

目录 1. 前言 & 更新2. CPU组成3. CPU的指令集:4.存储器5. 总线1. 前言 & 更新 注意:绪论不考,直接略过。 计算机硬件章节19-21年没考过,在22年真题考过磁盘调度,根据趋势分析,以后考的概率也不大,了解即可。 本节删掉了第一版中的编码、海明码等内容。 2. CP…

一篇文章搞定《Android异常处理》

------《Android异常处理》 异常种类(简述)编译时异常运行时异常 运行时的异常和崩溃受检时的异常第一种做法:第二种做法: 不受检时的异常(崩溃Crash)异常的传播崩溃的兜底Looper 循环问题主流程抛出异常问题 安全气囊的实现方案设…

计算机组成原理---第六章总线系统 习题详解版

(一)课内习题 (二)课后习题 1.比较单总线、多总线结构的性能特点。 答: (1) 单总线结构:它是用单一的系统总线连接整个计算 机系统的各大功能部件,各大部件之间的所有的信息传送都通过这组总线…

【企业信息化】第6集 免费开源ERP: Odoo 16 MRP + 维护+ PLM +质量全面生产制造管理

文章目录 一、MRP 物料需求计划1.一款软件,满足您的所有需要2.工作中心控制面板3.优化您的库存等级4.条形码,即开即用5.出色报告关键绩效指标6.与其他Odoo应用程序完全集成 二、PLM 产品生命周期管理1.管理工程变更2.集成文件管理3.智能版本管理4.与其他…

还在为项目初始化、依赖管理问题困扰?Dubbo Initializer 来了!

作者:Dubbo 社区 通过这篇文章,你将学习如何在 1 分钟内用 Dubbo Initializer 模板快速创建 Dubbo Spring Boot 项目,帮你解决项目初始化问题。 什么是 Dubbo Initializer? Dubbo Initializer 是一款帮助开发者快速生成 Dubbo …

【0基础也能学会】JMeter:如何开始简单的WEB压力测试?

背景 最近工作上被安排针对Web网站进行性能压测,以评估特定的硬件配置下Web网站可支持的并发用户数。考虑到JMeter是流行的Web性能压测工具,因此趁着这次机会上网查阅了很多关于JMeter的资料,也自己动手进行软件的配置和调测,从最…

前瞻洞察|借助机器学习,揪出利用DNS隐蔽隧道作恶黑手

黑客会利用DNS协议进行违法犯罪活动,那DNS协议到底是什么?它有何作用?为什么会被选作进行作恶的手段?会造成什么危害?怎么检测及研究现状如何?一连串疑问接踵而至。本篇文章中,我们会为大家一一…

【Java多线程编程】Thread类

Thread类是什么? Thread 类是 Java 提供的一个标准库,我们可以通过 Thread 类进行多线程编程。因此,今天我给大家讲解的是如何使用 Thread 类进行线程编程。 详细讲解 Thread 类中的:lambda 表达式、start 方法(启动线…

WiFi(Wireless Fidelity)基础(七)

目录 一、基本介绍(Introduction) 二、进化发展(Evolution) 三、PHY帧((PHY Frame ) 四、MAC帧(MAC Frame ) 五、协议(Protocol) 六、安全&#x…

Cloud Kernel SIG月度动态:发布ANCK 5.10、4.19新版本,ABS新增仓库构建功能

Cloud Kernel SIG(Special Interest Group):支撑龙蜥内核版本的研发、发布和服务,提供生产可用的高性价比内核产品。 01 SIG 整体进展 发布 ANCK 5.10-014 版本。 发布 ANCK 4.19-027.2 版本。 ABS 平台新增 OOT 仓库临时构建功…