文档,文档都在代码里”,还有一部分人认为,文档容易过期,很难跟上代码的更新节奏,于是没有必要写文档。
凡此种种观点致使了一个局面就是:
接手业务的时候吐槽别人不写文档,交接业务的时候又以为这东西无需解释,根本不须要文档
。
对此,首先我我的认为涉及代码细节的部分确实不必写文档,可是对于整体的设计和业务的变动是绝对须要写文档的。有些人以为文档有过期问题,那是由于他们没有引入版本(ChangeLog)的概念,
过期的文档自己就是业务历史的一部分
,我在接手一个业务的时候,经常就须要这些历史信息来辅助理解。工具
上周发生了一件趣事,一个产品跟我说,
开发两句话能说明白的,为何要看文档
?确实,问开发能以最快速度准确地获取信息,毕竟人脑就是一个强大的搜索引擎。可是长期来看有如下问题:
通常来讲,一份 好的技术文档
比起开发口述是不会有多余的理解成本的,甚至更低,由于对于不少信息,图片能比语言更好地表达。
我认为 好的技术文档 的核心是 敏捷 。一方面,好的的技术文档是
高度可维护的而且常常维护
的,好比新增了一些功能,文档的做者可以快速更新文档,文档的读者能及时获取更新;另外一方面,好的技术文档是
易理解 的,更详细来讲要表述准确、结构清晰、排版美观、风格统一。
最后,我想探讨下写文档究竟是干嘛?百度百科说:
软件文档或者源代码文档是指与软件系统及其软件工程过程有关联的文本实体。
那么写文档就是生产这个实体的过程了。但这样实在过于抽象,根据我最近一年的经验来看,我更愿意将其定义为
对特定信息进行结构化整理的过程 。
以上就是写做技术文档的道了,也就是咱们对于这件事最基础的世界观,接下来谈术,即基于此执行的方法论。
在正式开始写文档以前,咱们必需要有如下三点认知:
本章节讨论了一份技术文档应该具有的各个单元,能够做为从此技术文档写做的框架或者Checklist。
简单介绍项目背景信息,以下面是我为某个项目写的 Introduction :
,但我认为放在平常的文档写做中有点矫枉过正了。
综上,我推荐Asciidoc。
对于文档的管理,我推荐使用Git,像管理代码同样管理文档。
另外我推荐使用一个静态网站来存放本身的文档,这样其余同事访问的时候看到的老是最新的文档了。
另外,公司目前在推iWiki,我以为iWiki最大的优点是 权限控制
,对于一些敏感文档是必须的。可是,比起iWiki的变动记录,做为程序员的我更钟爱用Git进行管理,此外,iWiki是Web网页,编辑体验确定也比不上本地本身配置的编辑器。固然,术没有绝对的优劣之分,也要看本身是否合适。
以上,最近关于技术文档写做的一些思考。欢迎交流指正。