热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

技术文档写作速成指南

鲁迅说的好:文档是程序员进步的阶梯!虽然鲁迅先生并没有说过这句话,但是对于工程师来说,写文档还是非常重要的~一、文档很重要重要的事说三遍:重要的事,重要的事,重要的事!1、写文档可



鲁迅说的好:文档是程序员进步的阶梯!

虽然鲁迅先生并没有说过这句话,但是对于工程师来说,写文档还是非常重要的~


一、文档很重要

重要的事说三遍:重要的事,重要的事,重要的事!



1、写文档可以帮助我们整理思考过程

当遇到一个问题的时候,我们聪明的脑子里可能突然迸发出很多想法,他们之间可能层层递进,也可能彼此毫无关系。如果没有及时通过工具记录下来,后面很可能就忘掉了。

如果使用文档记录,不仅不怕遗漏,而且经过简单的整理就可以梳理出一个脉络。这时可能发现有些重点问题需要深入挖掘,而有些问题并没有像开始想的那么重要。


2、写文档可以帮助我们提高沟通效率

先想一下我们目前拥有的沟通方式都有哪些呢?


  • 面对面:这是最直接的沟通方式,效果最好,但是缺点也很明显:来一个人就要重复再说一遍
  • 通讯软件:对比“面对面”的优势是,除了第一次沟通都可以转发聊天记录
  • 文档:准备一个文档,减少常见问题的人力沟通成本浪费
  • 代码:最简单,废话少说 show me your code。但是这种方式不仅费时间,而且还不一定能看懂代码

从上述分析可以看出,虽然使用文档的沟通方式准备成本最高,而且还需要逐步完善、不断更新,但是随着沟通人数的增加,效率优势会更加明显。


3、写文档可以提高对“新人”的友好性

这里的“新人”不止代表刚刚入职的小萌新,还包括因为工作交接负责不熟悉的新项目的老师傅,甚至面对两个月前你写的代码时的自己。


二、什么时候需要写文档

好叭,我们都认可写文档是一件好事情,但是要就事论事嘛,有的情况就不用写文档阿


A同学:项目很简单/开发者很少,没必要写文档


  • 未来是难以预料的,项目的复杂性会随着项目的持续而不断增加,慢慢超出预期。
  • 前期项目简单,文档很快就能写完。但是如果一直拖延,写作的成本就会越来越大。

B同学:时间太紧了没时间写文档,以后有空再补吧


  • 工作的产出不应该只有代码,也应该包含文档。
  • 不要把文档当做走形式、面子工程,其实用好文档,它会变成工作中很好的辅助工具。
  • 写文档不是单纯的增加工时,思路清晰后,写代码的效率更高。

那到底什么时候需要写文档?

最简单的判断方式:不能“秒懂”的地方,都应该留下文档。


三、用「开发需求」的方式写文档

时间有限,小孩子才做选择,我写文档就要又快又好!


下面用模拟需求开发过程的方式,介绍写文档的流程~


1、【准备】了解PRD

与开发需求时一样,写文档之前也要了解文档的需求:


  • 明确写作目的:不同目的有不同的侧重,明确目的也便于事后衡量成功是否达标。比如,如果想写一个项目交接文档,需要事无巨细的记录所有工作中涉及的内容,与项目相关的注意事项,力求全面详尽;如果想写一个项目推广手册,那就要介绍项目是做什么的,与竞品的对比和优势,吸引读者的关注、获取读者的好感。
  • 明确文档受众:也就是了解读者的技术背景,使用读者可以看懂的表达,可以让文字形成更有效的传达。

2、【调研】康康别人咋写的

在开始写文档之前,需要了解一下此类文档的主流框架。

如果组内已有模板,直接使用即可;如果没有,可以查阅同类产品文档,掌握基础框架。可以多收集写相似的资料,不一定在什么时候就可以给你提供一些灵感哦!

一般的文档需要包含下列内容:


  • 项目信息:项目名称、版本号
  • 历史修订信息:修订人、修订时间、修订原因
  • 文档介绍:概述、背景
  • 注意样式:清晰的文档结构,统一的排版格式

3、【框架搭建】给我的变量起个名

了解了主流文档框架,就要开始梳理我的文档结构了!这一部分的主要工作是写好文章的标题,如果要插图可以先用符号和简要描述代替,以免全局审视时发现有些图片不需要,浪费了当时作图或找图的时间。

如何衡量标题是否合适呢?下面提供几个判断标准:


  • 准确的标题:标题需要可以概括文章/段落的内容,不可跑题
  • 有序的标题:使用字体大小、缩进关系,来表达标题之间的顺序与关系
  • 提纲可以概括文章内容:在前两点都完成的情况下,提纲自然可以概括文章内容。但是需要注意,标题间的嵌套关系不要太深。就像不要嵌套太多if-else一样,需要及时把一些深层内容提取成单独的一段。一般与其他内容独立的内容、特别重要的内容、需要深入剖析的内容,都可以独立成段。

4、【写作】开始写bug啦

这个阶段的主要工作是向骨架中填充内容,并且补充图片资源。

需要注意以下事项:


  • 段落内需要有逻辑:常用逻辑有总分、总分总、并列、递进等等
  • 标记重点内容:通常使用明亮的颜色、加粗、图标等方式
  • 配图清晰:图片面积不要太大,以防喧宾夺主;针对图片内容可以使用高亮或者文字描述,说明重点内容
  • 其他注意:用词友好,语法正确,标点使用等细节

5、【评审】Code Review

文档写完了并没有结束,还需要好心的小伙伴帮忙评审一下。一般分为三个评审方向:

自我评审:检查错字、标点等低级错误,节省其他评审人的时间
语法评审:检查内容是否准确有效,是否完整、有误遗漏信息
风格评审:检查语言是否简洁,用词是否得体,描述是否易懂


6、【更新】搞,搞二期!

其实前面已经完成了一次写作流程,但是只要项目还在更新,文档就要一直维护,不能给用户一种“文不对题”的感觉。当然,如果熟练上我上面的流程,那维护文档也不是一件困难的事情啦~!


四、让文档「看起来更好」的小技巧

1、精简之美

首先介绍一项内容,要仅提供一个文档入口。如果同时看到很多链接,会增加读者阅读的心理压力,进而转化为排斥情绪,那作者在第一步就输了 o(╥﹏╥)o


  • 文档需要包含最简单可用的案例,让用户可以快速得到一个可体验的demo
  • 如果有高级用法,要与简单的指南分开,并且提供可直接验证的特性
  • 对于专业术语或者自定义词汇,复述定义可以有效降低阅读难度

针对文章内,也要尽量用词简洁。文档不是写小说,不需要加太多的修饰词和无必要的语句重复。

可以参考《清晰优雅的风格课》中对「叙述简洁」的六条原则:


  • Delete words that mean little or nothing.
  • Delete words that repeat the meaning of other words.
  • Delete words implied by other words.
  • Replace a phrase with a word.
  • Change negatives to affirmatives.
  • Delete useless adjectives and adverbs.

2、排版之美

良好的排版可以提高专业性、增强页面效果,提高可读性、便于用户理解行文结构。

在《写给大家看的设计书》中对排版提出了四项基本原则:


  • Contrast 对比原则:避免不同元素太多相似,要在视觉上制造突出的差异,也就是看起来完全不同
  • Repetition 重复原则:相同结构的元素,使用相同的样式,制造视觉上的统一性
  • Alignment 对齐原则:常用的是左对齐、居中对齐、右对齐
  • Proximity 亲密性原则:内容相近的内容应该物理位置也解决

一般通过字体、字号、颜色、位置、特殊符号来实现,但是要注意:不同的元素差别一定要大,否则就是更糟糕的视觉冲突


3、颜色之美

颜色是吸引读者注意力的利器,所以要把它用于强调而不是装饰

有目的的使用颜色,可以告诉读者该看哪里,而不要为了个人喜好把文档写的五颜六色。一般使用三种颜色,如果页面颜色超过五种就会显得杂乱。

还要注意的问题是,颜色要获得读者的感情认同。一般红色都代表禁止、失败、标记,绿色代表通过、环保、安全,黄色代表警告、通知,这一点从emoji表情的配色也可以看出来:


  • 红色系列
推荐阅读
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 拥抱Android Design Support Library新变化(导航视图、悬浮ActionBar)
    转载请注明明桑AndroidAndroid5.0Loollipop作为Android最重要的版本之一,为我们带来了全新的界面风格和设计语言。看起来很受欢迎࿰ ... [详细]
  • 在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板
    本文介绍了在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板的方法和步骤,包括将ResourceDictionary添加到页面中以及在ResourceDictionary中实现模板的构建。通过本文的阅读,读者可以了解到在Xamarin XAML语言中构建控件模板的具体操作步骤和语法形式。 ... [详细]
  • JDK源码学习之HashTable(附带面试题)的学习笔记
    本文介绍了JDK源码学习之HashTable(附带面试题)的学习笔记,包括HashTable的定义、数据类型、与HashMap的关系和区别。文章提供了干货,并附带了其他相关主题的学习笔记。 ... [详细]
  • GPT-3发布,动动手指就能自动生成代码的神器来了!
    近日,OpenAI发布了最新的NLP模型GPT-3,该模型在GitHub趋势榜上名列前茅。GPT-3使用的数据集容量达到45TB,参数个数高达1750亿,训练好的模型需要700G的硬盘空间来存储。一位开发者根据GPT-3模型上线了一个名为debuid的网站,用户只需用英语描述需求,前端代码就能自动生成。这个神奇的功能让许多程序员感到惊讶。去年,OpenAI在与世界冠军OG战队的表演赛中展示了他们的强化学习模型,在限定条件下以2:0完胜人类冠军。 ... [详细]
  • Webpack5内置处理图片资源的配置方法
    本文介绍了在Webpack5中处理图片资源的配置方法。在Webpack4中,我们需要使用file-loader和url-loader来处理图片资源,但是在Webpack5中,这两个Loader的功能已经被内置到Webpack中,我们只需要简单配置即可实现图片资源的处理。本文还介绍了一些常用的配置方法,如匹配不同类型的图片文件、设置输出路径等。通过本文的学习,读者可以快速掌握Webpack5处理图片资源的方法。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 20211101CleverTap参与度和分析工具功能平台学习/实践
    1.应用场景主要用于学习CleverTap的使用,该平台主要用于客户保留与参与平台.为客户提供价值.这里接触到的原因,是目前公司用到该平台的服务~2.学习操作 ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • Google在I/O开发者大会详细介绍Android N系统的更新和安全性提升
    Google在2016年的I/O开发者大会上详细介绍了Android N系统的更新和安全性提升。Android N系统在安全方面支持无缝升级更新和修补漏洞,引入了基于文件的数据加密系统和移动版本的Chrome浏览器可以识别恶意网站等新的安全机制。在性能方面,Android N内置了先进的图形处理系统Vulkan,加入了JIT编译器以提高安装效率和减少应用程序的占用空间。此外,Android N还具有自动关闭长时间未使用的后台应用程序来释放系统资源的机制。 ... [详细]
  • 本文介绍了RxJava在Android开发中的广泛应用以及其在事件总线(Event Bus)实现中的使用方法。RxJava是一种基于观察者模式的异步java库,可以提高开发效率、降低维护成本。通过RxJava,开发者可以实现事件的异步处理和链式操作。对于已经具备RxJava基础的开发者来说,本文将详细介绍如何利用RxJava实现事件总线,并提供了使用建议。 ... [详细]
  • Java和JavaScript是什么关系?java跟javaScript都是编程语言,只是java跟javaScript没有什么太大关系,一个是脚本语言(前端语言),一个是面向对象 ... [详细]
  • macOS Big Sur全新设计大版本更新,10+个值得关注的新功能
    本文介绍了Apple发布的新一代操作系统macOS Big Sur,该系统采用全新的界面设计,包括图标、应用界面、程序坞和菜单栏等方面的变化。新系统还增加了通知中心、桌面小组件、强化的Safari浏览器以及隐私保护等多项功能。文章指出,macOS Big Sur的设计与iPadOS越来越接近,结合了去年iPadOS对鼠标的完善等功能。 ... [详细]
  • Android日历提醒软件开源项目分享及使用教程
    本文介绍了一款名为Android日历提醒软件的开源项目,作者分享了该项目的代码和使用教程,并提供了GitHub项目地址。文章详细介绍了该软件的主界面风格、日程信息的分类查看功能,以及添加日程提醒和查看详情的界面。同时,作者还提醒了读者在使用过程中可能遇到的Android6.0权限问题,并提供了解决方法。 ... [详细]
  • 恶意软件分析的最佳编程语言及其应用
    本文介绍了学习恶意软件分析和逆向工程领域时最适合的编程语言,并重点讨论了Python的优点。Python是一种解释型、多用途的语言,具有可读性高、可快速开发、易于学习的特点。作者分享了在本地恶意软件分析中使用Python的经验,包括快速复制恶意软件组件以更好地理解其工作。此外,作者还提到了Python的跨平台优势,使得在不同操作系统上运行代码变得更加方便。 ... [详细]
author-avatar
礼貌粑粑
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有