如何写好项目文档

引子

  • 有太多的程序员(包括很多资深的程序员)不会写文档

  • 有太多的项目没有(完整的)文档

  • 即使有文档,这些文档达标了吗?

  • 你对文档有正确的认识吗?

  • 你会写文档吗??

  • 软件项目的文档是可有可无的吗?

目录

  • 项目文档的重要性
  • 文档的目的:
    • 提高沟通的效率
    • 提升对“思考过程”的管理
  • 项目中,超过50%的时间用于沟通
    • 提高沟通的效率非常重要
  • 沟通的方式
    • 口头, 文档, 代码
  • 对“思考过程”的管理
    • 项目中常常面临数不清的问题(“线头”)
    • 理清问题,挑出重点, 深入挖掘

常见的误区

  • 写文档是浪费时间? 没时间写文档?
  • 文档本身也是产出: coding 的时间少于30%。
  • 写文档是整理思路的过程:打字的速度应该快要思考的速度
  • 没有文档,后期会花费更多的维护成本
  • 没有需求和设计文档就开始写程序?
  • 修改文档,比修改代码的成本小的多。()
  • 这是个简单的项目/问题,不需要文档?
    • 项目的延续时间和复杂性往往超出预期
    • 早期的“偷懒”, 往往在后期会付出代价

常见的问题

  • 没有接口文档:多人协作出现问题
  • 需求文档没写好:
    • 多次反复讨论同样的问题
  • 没有系统总体架构文档:
  • 每个人都需要重新看代码,还不一定能看请
  • 缺少文档:
  • 新人无从入手
  • 人员变动时、不好交接
  • 团队内部沟通效率很低
  • 自己过两个月后,痛苦的回忆之前的思路

什么时候需要些文档?

  • 必须的文档

    • 需求设计文档:需求, 重点,取舍过程
    • 接口文档: 函数, 参数, 返回值
    • 边界性的算法文档: 思路, 关键点
    • 系统总体框架: 全局的思路
  • 凡是不那么“显而易见”的地方,最好都留下文档

  • 文档中不仅仅留下设计的结果(what), 也要留下思考的过程(why): 留下决策的依据,便于后面的工作

  • 文档不是写完代码后补出来的!

    • 文档是设计过程中使用的工具、和设计过程的结果

文档书写规范

  • 封面
    • 编号(用于Reference),项目,版本号
  • 历史说明
  • 修订人、修改日期、修改说明
  • 字体
  • 宋体,五号字, 单倍行距
  • 文档结构
  • 分层次的标题

文档的存放

  • 这里推荐一个比较实用的做法
  • 你可以根据自己的情况来设计一个存档方式
  • 将文档(word格式)保存在svn上
  • 容易看到本地和远程的不一致
  • 在wiki上建立文档的索引
  • 便于看请全局的情况(内容分布,时间分布)

文档内容的书写

  • 文档的格式
  • 文档的逻辑
  • 文档的评价
  • 文档的书写方法

文档的格式

  • 格式表现的是一种逻辑
  • 可能的逻辑关系: 总-分,递进, 并列, …
  • 标题
    • 标题是否表达文档的内容
    • 标题是否和文档的内容相符合
    • 各层标题所构成的提纲,是否能清晰反映文档的内容?
  • 段落
    • 段首一定要有缩进
    • 段落不要太长
    • 注意每段的第一句话
    • 每段内的多句话应该有一定的逻辑

文档中问题的划分

  • 选择合适的角度
  • 从不同的角度看到的东西是不一样的(类比:汽车不同角度的riew)
  • 角度的说明: 说明划分问题的出发角度
  • 注意联系: 子问题之间的联系
  • 是否是一个独立的问题
  • 切分问题是否准确
  • 是否是一个重要的问题
  • 决定写作的详略。

选用合适的表述模式

  • 不同种类的问题,有不同的模式
  • 分析和解决一个问题: 提出问题,分析问题,解决问题
  • 提出一个实现的建议: 出发点(目的),手段,工作量估计,收益的估计
  • 系统的设计: 模块,功能,过程
  • 程序的设计: 数据,函数,模块,调用过程,系统结构

文档的评价

  • 文档是写给别人看的!
  • 能否让读者在5分钟内看懂
  • 能否做到问题清楚、重点突出、逻辑清楚?
  • 能否做到言之有物: 不要死套格式
  • 能否做到言简意赅:不要说废话
  • 能否避免造成别人的误解
  • 不要说模棱两可的话
  • 要注意自己的表达是否通俗(有太多人说“自己才懂的方言”)

文档的书写方法

  • 拉提纲,自顶向下
    • 大的标题下列出子问题,再对每个子问题逐步展开
  • 反刍
  • 感觉(一句,一段,甚至整个文章的结构)不好之后要及时修改
  • 提高自己写文档的能力
  • 让重要的内容醒目
  • 标题: 段首第一句话:
  • 加重、有颜色、或者带下划线的文字

文档中配图的指南

  • 要明确这个图片的目的
  • 只能展现1-2个(最好是一个)主要问题
  • 只能说明一个层次上的问题
  • 要明确图片中传递信息的重点
  • 要注意图片中面积的使用
  • 可能错误:太多空白的区域,说明的文字过小
  • 图片最好能独立说明一个事情
  • 同时太多的关注点 =》 失焦
  • 对于图片中不能明确表达的地方,需要在图片周围的文字部分给出辅助的说明

文档的review

  • 有太多文档的review是无效的!
    -Q(leader): 这个文档你reciew过了, 为什么质量还这么差?!
    -A(reviewer):这个文档的内容我也感觉是模模糊糊的…
  • 甚至有很多文档写出后,根本就没有被(仔细)看过
  • 写这样的文档有什么用?
  • 文档的review是一次在大脑中的“重放过程”
  • 尝试follow作者的思路,看看是否可以走通
  • 是否有遗漏的内容
  • 文档review的产出
  • 在文档中插入comment
  • 直接对文档进行修订
  • Word提供了很好的功能,你也可以选用其它工具

怎么提高写文档的能力

  • 一个普遍的误区
  • 我对这个项目都非常清楚,我只是不会写文档
  • 你错了!写不好文档的根本原因是没有想清楚!
  • 提高写文档的能力的本质
  • 最根本还是提高分析问题的能力, 提高设计系统的能力
  • 多看好的文档
  • 好的教科书(不仅仅告诉你what, 而且分析why,要注意看分析过程)
  • 好的论文(很多发表的(尤其写系统的)论文,可能原来就是一个设计文档)
  • 多些(自己给自己挑毛病。类似金庸笔下周伯通的左右互搏)
  • 多相互review(看一遍别人的文档,也是很好的训练)

猜你喜欢

转载自blog.csdn.net/houzhizhen/article/details/105622282