摘要
本文旨在说服工程师们,尤其是敏捷团队的成员,在撰写过程文档时,放弃传统方式,尝试使用:1、Markdown 撰写;2、SVN/Git 版本管理;3、HttpServer 排版;—— 3 合 1 的新方式。
本文也描述了相关的技术要素:如何不再打开 Office 或 WPS,只需普通的记事本,一样写出漂亮、易读的文章;如何搭建一套 Markdown->html 的生成、发布、和访问系统;如何使用浏览器快捷、永久的访问文档……
关键词
文档代码化 markdown toc headeranchor
特别说明
本文即是使用本文所描述的方式撰写,所以截图和文字中会看到本文自己的映射,如果让你感到了些许盗梦空间般的费解,还望谅解。
更新时间:2015-09-23 11:45
项目中的文档有很多种:需求/用户故事、方案设计、详细设计、接口说明、测试报告……
以前的软件工程理论将这些文档分摊到不同的角色身上;现代的敏捷理论强调工作的软件高于详尽的文档,讲求文档的简单有效和角色的互相渗透合并。
本文不论两者的优劣,只想探讨一下如何让写文档变的更方便、更愉悦这个话题,窃以为应该是对两派同学都是有益处吧。
文档的传统方式
回顾一下我们文档撰写、分发、阅读、更新 的传统方式:
- 找到文档模板:例如是 word/Excel/PowerPoint 模版。大公司里不要小瞧了找模板的困难,尤其是写跨部门、跨团队的文档,要找别人的模版时。找不对的话提交系统时被打回还要重新找。万一遇到了模版更换 Logo 一类的事情,用提心吊胆来形容有时候都不过分。
- 把讨论和笔记写入文档:虽然有模版,但还是会常常见到字体五花八门、行间距大小不一、色调五彩缤纷……对待这些问题,读者只能呵呵了(本文如果哪天写入了某个 Word 模版,肯定也是个鬼样)。
- 合写文档的痛苦:通常的模式是:牵头人把章节定一下,在章节后面把具体撰写人的名字写上,约定个时间,牵头人手工合并。问题显而易见啦:
- 手工合并易出错
- 具体撰写人需要修改时会去麻烦牵头人,要么牵头人不断合并,要么撰写人采取保守策略不再积极提交变更
- 合并文档的版本管理困难:经常会看到把日期加到文档后,一连串的日期把自己累的不行
- **“指定章节到撰写人”**打击了撰写人写其他章节的积极性:因为会给合并人带来更多的工作和混淆,撰写人宁可保持低调;同时撰写人并不知道另一章节的人是否已经撰写了自己想到的内容。
- 提交评审:挺好。但其中有一点需要改进:作者根据评审意见修改后,通常有两种方式评判是否 OK:主持人直接评判,主持人开会召集评委们再次评判。—— 在一个温和的团队中,这两种方式都会“和谐”的完成。可以增加第 3 种意见表达的方式:评委直接修改文档,然而在 word 模版+没有版本管理的方式下,这是令人望而却步的。
- 更新文档:最痛苦的部分到了
- 需求、方案类文档:开发实现后回头更新需求、方案的比例有多高?这个现实问题很多同学宁可提都不提, Let it go,随她吧。
- 详设、开发类文档:软硬件工程师们拿各种理由来搪塞的场景相信都遇到过吧,什么“来不及”了、“太多了”、“更新太快了”……甚至还有“代码即文档”这种左倾冒险主义的托辞不一而足。面对领导燃烧的怒火,工程师们用微笑和耸肩来抵挡。
- 测试、报告类文档:这个还好,因为是一次性活动的文档产物,基本不需要更新。《测试方案》归属到第一类中。
- 其他:技术积累、会议纪要等过程文档,细想想更恐怖,几个月前讨论的会议纪要你还会打开么?到哪里找估计都忘了吧,那次会议中的决议还记得么?上次调试遇到的挫折写入技术积累了么?…… 呀呀呀,不要再说了。呵呵。
- 更新后文档的推送:有几种方式
- 第一次你是通过邮件、聊天软件把文档发给读者的,更新后的文档则需要重发一次,如果你一个月更新一次还好,如果一周更新一次呢?一天呢?
- 文档在某某系统中归档的:这就要依赖与该系统是否好用、方便了。如果想读一个文档要进入系统中能够快速找到,Good;如果需要多次跳转、或者要掌握什么奇技淫巧才行,就又要呵呵了,就是这次进去找到了,下次可能又找不到了。—— 在某某系统中迷过路的小伙伴请举下手。
上面这些如果有哪条戳中了你的痛点,请继续往下读。如果你觉得没关系啦,这些都是小事,鸡毛蒜皮的,我们团队可以克服,那还请点击右上角(Fedora/Ubuntu/Mac 请点击左上角)的叉,谢谢。