程序员编写技术文档的新手指南

这是一篇帮助你给第一个项目写文档的指南。

万事开头难,我希望这份指南能把你引导到正确的道路上。

最后,你应该有一个可以公开发布的项目。

请轻松地阅读完这篇文章,或者简单地把它当作参考。

为什么要写文档?

你将会在 6 个月后使用你的代码

我发现一开始从利己的角度来解释这个问题会比较有吸引力。写文档最好的理由就是你将会在 6 个月后使用你的代码。你 6 个月前写的代码跟别人写的代码对你来说通常没有什么区别。你将会带着一种熟悉的感觉读你的代码。然后一种不良的预兆悄悄逼近,你发现写代码的人毫无经验,毫无智慧。

当你读完几个月前很简单易懂或者取巧的代码之后,你就会开始同情你的用户。只要我写下为什么我要这么做,生活就会变得如此简单。文档能让你记录代码为什么这样写的原因。同样地,代码注释解释了为什么,而不是怎么做,文档也是这样。

你想要别人使用你的代码

你已经写了一段代码,并且发布了它。你这样做是因为你认为别人可能觉得它有用。但是,人们需要先知道为什么你的代码对他们可能有用,才会决定使用它。文档可以告诉人们这个项目对他们有用。

  • 如果人们不知道你项目存在的意义,他们不会使用它。
  • 如果人们不知道怎么安装你的程序,他们不会使用它。
  • 如果人们不知道怎么使用你的代码,他们不会使用它。

只有少数人会深入研究你的代码并且使用它。几乎没人会使用你的代码,除非它有好的文档。如果你真的热爱你的项目,给它写文档,让其他人使用它。

你需要别人的帮助

开源项目是具有魔力的,对吗?你发布了代码,然后 code gnomes 出现并且让你的代码更好。

当你发布代码的时候会有一种奇妙的感觉产生。它通过各种方式出现,但总是能让你兴奋不已。有人在使用我的代码?这是一种混合了恐惧和兴奋的感觉。

我创造了价值!

如果它出错了怎么办?!

我是一个开源项目开发者了!

天哪,别人在使用我的代码。。。

写好的文档能够减轻这种恐惧。很多恐惧来自于给世界创造东西。我最喜欢的关于这个问题的引文如下所示:

恐惧来自于你做着重要的事情。

如果你在做不让你恐惧的事情,那么它对你或者世界都没有益处。

恭喜你感到恐惧!它意味着你在做重要的事情。

实际上,不完全是这样。

开源项目确实令人感到惊奇,但它同样必须符合现实世界的规则。你必须有付出,才有收获。

在你为项目付出大量工作之后,才能获得贡献。

在你的项目有用户之后,才能获得贡献。

在你的项目有文档之后,才能获得贡献。

文档也为你项目的第一次贡献提供平台。很多人从来没有为开源项目贡献过,让他们修改代码比修改文档可怕得多。如果你没有文档,你将失去这类文档贡献者。

文档让你的代码更好

有一个古老的事实:把东西写下来帮助你更好地思考。头脑里产生一个听起来不错的想法很容易,但是把想法写到纸上就需要思想上的升华。

写文档能提升代码的设计。在纸上讨论你的API和设计决定可以让你用一种更正式的方式思考它们。它还有一个不错的副作用:让别人按照你原来的意图贡献代码。

你想成为一个更好的写作者。

写文档跟大多数人体验过的写作方式不同。技术写作是一种非与生俱来的艺术。写文档将会是你成为更好的技术写作者这条路的起点,作为程序员,这是一个有用的技能。

写作会随着时间的流逝变得更容易。如果你好几个月没写东西,再次动笔就会变得更加困难。边做项目边写文档将会让你保持一个合理写作节奏。

用什么工具写作

简单的开始是取得实际成果的最好方式。我将会提供一条平坦的路给你走,在你有了基本的想法之后,你可以扩大范围。这些工具很强大并且容易使用。这将移除写作的障碍。

这篇文章中的例子在 Markdown 和 reStructuredText 中都是有效的。reStructuredText 有一点难用,但是更强大。我推荐你两个都看看,然后决定哪个你想要用。

纯文本版本控制

做为程序员我们生活中纯文本的世界里。我们的文档工具不应例外。我们想要能把纯文本转化成漂亮的 HTML 的工具。我们还有一些最好的跟踪文件变化的工具。为什么我们写文档的时候会放弃使用这些工具?这套工作流是强大的,并且对开发者来说很熟悉的。

基本例子

1

2

3

4

5

Resources

---------

* Online documentation: http://docs.writethedocs.org/

* Conference: http://conf.writethedocs.org/

上面的文字将渲染成标题,下面带着列表。URLs 将会被自动超链接。这写起来很容易,不但作为纯文本有意义,而且还能很好的渲染成 HTML。

README

你第一个应该写的文档是 README。如果你提供了合适的扩展名,代码托管服务会自动把你的 README 渲染成 HTML。它也是大多数用户跟你的项目的第一次互动。所以,一个可靠的 README 对你的项目十分有用。

有些人甚至 从 README 开始做项目

文档写什么

现在我们来讨论重要的事情。确保你的用户能得到他们需要的所有信息,但不要太多。

首先,你需要问自己:文档是为谁而写。一开始,你只需要吸引两类的读者:

  • 用户
  • 开发者

用户是指那些只是想使用你的代码,而不管关心它怎么工作的人。开发者是指那些想要给你的代码做贡献的人。

你的项目解决了哪些问题

很多人会通过你的文档搞清楚你的项目是什么。有人会提到它,有人会随机地用 Google 搜索一个短语。你应该解释你的项目做了什么和它存在的意义。Fabric 这方面做的很好。

一个代码的小例子

提供一个生动的例子来告知用户你的项目通常会被用来做什么。 Requests 是一个很好的例子。

一个代码和问题追踪的链接

人们有时候喜欢浏览源代码。他们可能对归档他们发现的代码 BUG 感兴趣。尽可能地让那些想要为项目做贡献的人做这件事很容易。我认为 Python Guide 做得很好,因为它有指向代码部分的链接。

常见问题(FAQ)

很多人会有相同的问题。如果问题一直发生,你应该适当地修改你的文档或者代码来解决问题。但是总是有一些经常被问的关于项目的问题,不能改变的的事情等。把这些记录在文档中,并且使其保持最新。FAQs 通常会过时,但当它们被很好的维护时,它们就是黄金资源。 Tastypie 做得很好,它把 FAQs 整理成“Cookbook”。

如何获取支持

邮件列表?IRC 频道?文档要记录如何获取帮助和跟项目社区交流。 Django 这方面做得很好。

给贡献者的信息

在项目中,人们通常有怎么做事情的标准。你应该记录在文档上,以便于别人写代码时能符合项目的标准。Open Comparison 这方面做的很好。

安装说明

一旦人们决定使用你的代码,他们需要知道如何获取它和运行它。但愿你的安装指令只有几行用于基本使用。如果有必要,给出提供更多信息和说明的页面链接。我认为 Read the Docs 中我们做得很好。

你的项目许可证

BSD?MIT? GPL? 这些证书可能对你来说没什么,但是使用你代码的人会很关心这个。考虑一下你想要用什么证书发布你的项目,务必选择一个互联网上的标准许可证。

下一步做什么

在你遵循上面的指南之后,我们相信你的项目将会成功。进一步的参考资料,查看这篇文章 如何维护一个开源项目

模板

给你一个 README 的模板。如果你使用 markdown 的语法,把它命名为 README.md。如果你使用 reStructuredText 的语法,把它命名为 README.rst。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

$project

========

$project will solve your problem of where to start with documentation,

by providing a basic explanation of how to do it easily.

Look how easy it is to use:

import project

# Get your stuff done

project.do_stuff()

Features

--------

- Be awesome

- Make things faster

Installation

------------

Install $project by running:

install project

Contribute

----------

- Issue Tracker: github.com/$project/$project/issues

- Source Code: github.com/$project/$project

Support

-------

If you are having issues, please let us know.

We have a mailing list located at: project@google-groups.com

License

-------

The project is licensed under the BSD license.

原文地址:https://www.cnblogs.com/ryanzheng/p/9473872.html

时间: 2024-10-01 06:34:06

程序员编写技术文档的新手指南的相关文章

从 Word 到 Docbook, 最后用 Pandoc, 让程序员爱上写文档

写文档一直是程序员非常讨厌的工作, 甚至和改需求一样令人厌烦. 在程序员眼里比写程序还难, 即便强制执行下来文档质量也很难让人满意. 相信大多数公司写文档都是用 Word, 笔者也是用了 Word 写了好几个项目的文档. 架构, 设计, 运维等好几份, 呵呵, 即便是写的再好, 交给客户也基本是不看的. 一个文档是项目组内好几个成员编写的, 大家各写各的模块, 各自的实现, 然后一起合并, 合并时修改字体, 字号, 目录等, 第一次合并还好, 再升级几个版本后, 大家改了哪里, 没改哪里, 根本

如何编写技术文档

最近在公司内部审查,我想不是我们中国软件行业的个别问题,相反,存在一定的普遍性.以下我列出了几个值得提高的地方. 1) 文档的格式上存在不一致性的问题.格式有时是这样,有时是那样.一篇好的文档我想不光是内容写得好,其格式是很重要的一部分.试想,如果我们拿到了一篇格 式上写得乱七八糟的文档,这一第一印象会影响我们的阅读心情吗?好的文档应当是从头到尾保持格式的一致性,这不仅仅是一种美,更是专业性的一种表现. 2) 写文档的作者不能很好的站在读者的角度去思考.要写出一篇好的支持文档,作者应当站在读者的

20+ 为前端程序员准备的文档、指南

最近几个月,我们收集了很多不同的学习资源,包括文档.指南以及很多有用的网站,可以帮你学习不同的前端技能.这里列出了一些其中非常棒的. 1. Keyboard Event Viewer 一个可配置的交互式工具,让你能够查看键盘事件,既包括事件信息的传统概念,也有用户界面事件规范. 2. jQuery Quick API Reference jQuery 功能的 Cheet Sheet,涵盖了 jQuery 的 1.0/2.0 版本,只需点击其中的一项,即可在弹出框中打开 jQuery 的文档. 3

程序员如何编写好开发技术文档 如何编写优质的API文档工作

编写技术文档,是令众多开发者望而生畏的任务之一.它本身是一件费时费力才能做好的工作.可是大多数时候,人们却总是想抄抄捷径,这样做的结果往往非常令人遗憾的,因为优质的技术文档是决定你的项目是否引人关注的重要因素.无论开源产品或面向开发者的产品,均是如此. 实际上,我想说明的是:对于面向开发者的产品来说,其用户体验中最重要的一环并不是什么主页设计.登录过程.或者SDK下载.真正最重要的是产品的API文档!如果没人知道你的产品如何使用,纵使它巧夺天工,又有何用? 如果你是一个专门从事面向开发者产品设计

如何快速阅读并理解英文的技术文档

作为一名程序员,要实现我们的产品,首先需要选择一种或几种编程语言,其次是使用各种工具和第三方库. 而在这个过程中,就少不了对这些语言.工具和第三方库的下载和学习. 下载一般都非常简单,但是关于如何使用,相信大家都会有各种各样的学习方法. 但是不管通过什么方式,追根溯源都会来到官方文档. 那么问题就来了!目前来说,大部分的官方文档都是英文的,如何才能快速的理解并使用官方文档呢? 今天,把自己的学习方法拿出来,和大家一起分享一下,希望大家可以尽量少走一些弯路,尽快的找到bug的解决方法. 说起来很简

Boost.Asio技术文档

Christopher Kohlhoff Copyright ? 2003-2012 Christopher M. Kohlhoff 以Boost1.0的软件授权进行发布(见附带的LICENSE_1_0.txt文件或从http://www.boost.org/LICENSE_1_0.txt) Boost.Asio是用于网络和低层IO编程的跨平台C++库,为开发者提供了C++环境下稳定的异步模型. 综述 基本原理 应用程序与外界交互的方式有很多,可通过文件,网络,串口或控制台.例如在网络通信中,完

有关技术文档的一点感想

   在IT行业很多的技术人员都不是很注重技术文档,或是没有明白技术文档的重要性.    大多数的人都觉得文档的撰写,整理,归类是一件很麻烦的事,因而很多的时候为了规避麻烦就避而远之,在做有关文档的工作的时候,能省则省,能简略就简略.很多的程序员在写程序的时候竟然没有注释,很多的编程人员,包括电子工程师,在写程序的时候都没有对程序中重要的变量进行说明,在写函数的时候没有对函数的功能进行描述,没有传入参数,返回参数,以及中间重要变量的说明.    前一段时间在学习ZigBee,看了人家TI公司Z-

@程序员,技术债你还清了吗?

"我很想改进这种设计,但是我没有时间." "我真的很想整理这些,但是这不属于这个任务的范围." "我们现在没有时间重新思考这个模块的架构." 这些话把每个开发人员的耳朵,都磨出茧自来了.更不像话的是,每个开发人员也整日把这些话挂在嘴边. 更让人心有不甘的得失,很多时候这些都是应该做的事情. 曾经我也很希望提供优雅美观的代码,但是现实情况是,我的老板付钱给我,让我提供对他们和他们的客户有用的功能,即价值. 专心为客户提供价值,是现代科技业务最大的重

OCR识别技术文档识别怎么用

OCR识别技术文档识别的概括 我们常说的OCR.文字识别.OCR识别技术文档识别是指通过电子设备等将纸质上的文字识别出来,形成可编辑的文字. OCR识别技术文档识别的流程 随着扫描仪的普及与广泛应用,再加上摄像头迅速发展的手机等智能终端设备的应用,OCR识别技术文档识别软件越来越被应用于各种业务系统中. 常规的OCR文字识别处理的过程包括: 1.图像输入.预处理:二值化图片.噪声去除.倾斜较正: 2.版面分析:把页面分为横排文本.竖排文本.表格.图片等不同区域,帮助字符切割.识别OCR: 3.设