如何写好项目文档

2023-05-16

已剪辑自: https://blog.csdn.net/houzhizhen/article/details/105622282

引子

  • 有太多的程序员(包括很多资深的程序员)不会写文档
  • 有太多的项目没有(完整的)文档
  • 即使有文档,这些文档达标了吗?
  • 你对文档有正确的认识吗?
  • 你会写文档吗??
  • 软件项目的文档是可有可无的吗?

目录

  • 项目文档的重要性
  • 文档的目的:
    • 提高沟通的效率
    • 提升对“思考过程”的管理
  • 项目中,超过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(看一遍别人的文档,也是很好的训练)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何写好项目文档 的相关文章

  • 演讲的能力

    文章目录 主要形式照读式演讲背诵式演讲提纲式演讲即兴式演讲 提高方法研究对象注意事项语言艺术名言 一 每天三分钟微信语音练习 二 会演讲从写作开始 xff0c 理清思路 xff0c 结构化表达 三 提升内涵 xff0c 让自己有东西可讲 四
  • 专利常见问题汇总

    文章目录 Q1 xff1a 我是职场新人 xff0c 试用期间适合写专利么 xff1f Q2 xff1a 我的第一个专利 xff0c 应该写什么 xff1f Q3 xff1a 撰写专利的 xff0c 有什么优点 xff1f Q4 xff1a
  • 产品设计中关于思考力那些事

    这周的面试 xff0c 对我自己来说 xff0c 更像是一种迭代反思 从做什么怎么做 xff0c 到为什么做 xff0c 的一种强制思考 一方面是入行时间短 xff0c 另一方面是公司产品业务主导 xff0c 相对不需要产品去思考 xff0
  • 【优秀专利】张小龙 | 我在元宇宙里也能收到微信

    已剪辑自 https mp weixin qq com s mOIqPH7hD6ysijJTtV8w9g 引言 前段时间 xff0c 去腾讯参观的时候 xff0c 和一个朋友聊起张小龙 xff0c 他说了一个特别有意思的事情 话说腾讯有一个
  • 使用Python求解方程

    文章目录 Numpy 求解线性方程组 SciPy 求解非线性方程组 SymPy 通吃一切SymPy简介展开与折叠分离与合并简化表达式solve 解方程limit 求极限integrate 求积分diff 求导dsolve 解微分方程矩阵化简
  • 工业应用中如何选择合适的损失函数

    已剪辑自 https mp weixin qq com s 6rSNWz 5ZxNZhR bxU4pWg 直接上结果 xff1a 图片截选自本文末尾 正文 xff1a 无论在机器学习还是深度学习领域中 损失函数都是一个非常重要的知识点 损失
  • 手把手教你搭建一个轻量级电子实验室

    已剪辑自 https mp weixin qq com s 45a7BsvG23tWTfTaMuqlaQ 下面具体分类说一下都需要准备哪些设备 xff1a 仪器类 xff1a 首先是电源 xff0c 首选双路可调稳压电源 xff0c 一般几
  • 无人机飞控技术最详细解读

    已剪辑自 https zhuanlan zhihu com p 64519280 导读 被称作是 飞行器的大脑 的飞控到底是什么 xff1f 以前 xff0c 搞无人机的十个人有八个是航空 气动 机械出身 xff0c 更多考虑的是如何让飞机
  • 你的科研能力从什么时候开始突飞猛进的?

    读博后写青基的时候 xff0c 写青基的时候刻意的思考了 xff0c 我如何写 xff0c 才能引导审稿人理解我的本子 xff0c 评审人读了以后才会觉得我的本子重要 其实在做博后期间科研的很多方面都得到了提升 xff0c 当时留校的师兄指
  • 英文学术论文写作有哪些经验心得?

    文章目录 博士第四年结束 xff0c 还没发表论文 xff0c 心态出了问题 xff0c 怎么办 xff1f 1 博一阶段2 博二阶段3 博三阶段4 博四阶段5 博五阶段6 总结 SCI写作方法总述 一 学术论文的基本组成部分二 学术论文写
  • 一个博士生接受怎样的训练是完整、全面的科研训练?

    我粗算了一下对机器学习 xff08 偏理论和方法论 不偏工程 xff09 大概30个技能点吧 xff08 可能增加 xff09 每个点我分成 高中初 三个级别 即总共90分 为了方便理解 默认本科毕业送基础分10分 凑到100分 解题力 x
  • 科研大牛们怎么读文献?

    我是练习时长一年多一年的博士萌新一个 xff0c 看到很多大佬分享了如何找文献读文献的精彩分享 xff0c 不过很多并没有提到如何针对某一篇论文进行阅读 xff0c 正好我最近看了一个相关的PPT xff0c 觉得对我启发很大 xff0c
  • 作为审稿人,你什么情况下会选择拒稿?

    刚好前不久NIPS给我发了top reviewer award 就来分享一下我的心得 最主要的判断必须是基于文章本身 我认为几个类型 颠覆了我的认知 让人有种脱口而出 卧槽 的冲动 我是肯定给8分起跳 至少strong accept 而且我
  • B端项目整体设计流程

    一 B端产品的能力图谱 1 逻辑思维与抽象能力 2 技术知识储备 3 复杂项目管理能力 xff1a 沟通能力 执行能力 团队协助能力 组织协调能力 4 业务与经营管理知识 二 B端产品设计流程 1 业务调研 a 明确调研目标 战略层 xff
  • 哪些思维方式是你刻意训练过的?

    1 管理记忆 2 贴好标签 3 放大苦难 4 绝对理性 5 自以为是 6 调整尺度 7 等价交换 8 断舍离 脑子只要醒着就不停转 18岁左右开始刻意培养自己的各种思维方式 至今6年了 1 管理自己的脑海 有效的记忆容量是有限的 所以需要管
  • 你的编程能力从什么时候开始突飞猛进?

    在啃掉一本本计算机经典书籍和写下大量代码以后 疫情原因回不去学校 xff0c 作为一个马上毕业 xff0c 即将入职腾讯的大四生 xff0c 分享一下自己的学习历程吧 本人在大学之前从未接触过编程 xff0c 最开始的编程学习还是在高考完后
  • 好用的专利检索推荐

    下面推荐几个我觉得不错的专利检索 谷歌专利 xff08 Google Patent xff09 就像谷歌学术一样 xff0c 谷歌专利也是非常好用 xff0c 无限搜索 xff0c 免费下载 谷歌专利地址 xff1a https paten
  • 软件定义一切?

    梅宏教授的主题报告是 软件定义一切 xff1a 挑战和机遇 主要内容分为三部分 xff0c 无处不在的软件 xff0c 软件定义的时代 xff0c 新时代的机遇和挑战 他从软件从业者的视角 xff0c 将计算机软件发展历程分为三个阶段 xf
  • 首次申上青年基金的一些感悟(综合多位基金评审专家意见)【投稿作品展】

    已剪辑自 https zhuanlan zhihu com p 409740011 各位奋斗在科研一线的朋友们大家好 xff0c 非常荣幸能在此分享一下自己国家自然科学青年基金的申请经历和感悟 本人于2021年1月份毕业 xff0c 耗时2
  • 怎么才能心无旁骛地学习?

    已剪辑自 https www bilibili com read cv7504938 看到这里不要划走 xff01 这个回答一定会颠覆你的学习现状 xff01 靠着这套方法 xff0c 我从一个学习 5分钟 xff0c 走神2小时 的废柴学

随机推荐

  • 示波器串口波形分析

    已剪辑自 https www cnblogs com dongxiaodong p 14163409 html 串口是最常用的外设了 xff0c 串口基本都是单片机的标配 串口通信只需要3条线组成 xff0c 分别为RX TX GND 下面
  • 什么是软件架构?常用的软件架构

    文章目录 软件架构软件介绍种类表现形式具体作用常用的软件架构一 分层架构二 事件驱动架构三 微核架构四 微服务架构五 云架构 软件架构 软件架构 xff08 software architecture xff09 是一系列相关的抽象模式 x
  • 软件工程总结

    文章目录 名称由来与定义软件危机由来定义 软件工程的核心知识 xff08 SWEBOK xff09 软件工程与计算机科学软件工程的现况没有银弹与人月神话软件工程与计算机程序设计软件开发过程方法学软件工程的发展方向 软件工程的最大难题一 引言
  • jupyter notebook打开其他盘

    转载于 xff1a https blog csdn net qq 41238579 article details 101016253 1 juter notebook 默认打开系统盘 2 更换显示盘 1 xff09 打开cmd 2 xff
  • 网监后台管理系统设计思路

    本次做的是网监系统saas服务平台的后台管理系统 xff0c 不涉及复杂功能逻辑 就是从菜单 模板 系 统 组织架构 角色 用户的设计思路 产品需求 xff1a 在各个省市网监系统的数量不断增长 xff0c 且系统逻辑和功能模块大致相同 x
  • 基于模型的系统工程(MBSE)

    文章目录 了解MBSE xff0c 这一篇文章就够了MBSE是什么 有什么用 怎么学习 xff1f 1 MBSE是什么 xff1f 2 MBSE有什么用 xff1f 3 MBSE的方法有哪些 xff1f 4 MBSE怎么学习 xff1f 要
  • 基于模型设计和机载软件

    采用基于模型设计应对机载软件设计中的挑战 已剪辑自 https www jianshu com p a8fb02ce366d 采用基于模型设计应对机载软件设计中的挑战 Model Based Design for Airborne Soft
  • MBSE与MBD的融合

    已剪辑自 https www jianshu com p 9efae90ca0f7 基于模型的设计 xff0c 是美国迈斯沃克公司 xff08 MathWorks xff0c MATLAB软件的开发商 xff09 提出并推广的复杂系统设计方
  • 基于模型的系统工程(MBSE)与设计(MBD)的关系思考

    已剪辑自 http www clii com cn lhrh hyxx 201905 t20190522 3934609 html 导读 xff1a 如何将关于功能知识表达的建议与任何系统工程建模语言的任何部分结合起来 xff0c 确定地
  • 从MBD到MBE的战略转型路径

    已剪辑自 https zhuanlan zhihu com p 58927567 导读 xff1a 企业的不断成功 xff0c 源于在每个关键机遇期做出正确的抉择 对于在国民经济中发挥重要作用的中国制造业企业来说 xff0c 如何面向未来
  • SysML教程

    已剪辑自 https www jianshu com p 6ba96913abcc SysML是一种支持复杂系统分析 规范 设计 验证和确认的通用图形化建模语言 这些系统可能包括硬件设备 软件数据 人员 规程 设施 xff0c 以及其他人造
  • 程序运行原理:程序是如何运行又是如何崩溃的?

    已剪辑自 https time geekbang org column article 166581 软件的核心载体是程序代码 xff0c 软件开发的主要工作产出也是代码 xff0c 但是代码被存储在磁盘上本身没有任何价值 xff0c 软件
  • 分布式系统

    简介 在一个分布式系统中 xff0c 一组独立的计算机展现给用户的是一个统一的整体 xff0c 就好像是一个系统似的 系统拥有多种通用的物理和逻辑资源 xff0c 可以动态的分配任务 xff0c 分散的物理和逻辑资源通过计算机网络实现信息交
  • #如何写好技术文档——来自Google十多年的文档经验

    文章目录 文档的重要性为什么大多数人都不喜欢写文档 xff1f 如何产出高质量文档像管理代码一样管理文档明确你的读者是谁清晰的分类参考文档设计文档引导类文档概念性文档Landing pages 落地页 文档Review 写文档的哲学5W法则
  • 如何写好技术文档?

    文章目录 01为什么需要写文档 xff1f 02写文档的重要性03像管理代码一样管理文档04文档类型05文档Review06文档写作的哲学07结论 已剪辑自 https cloud tencent com developer article
  • 数据库系统原理1

    第一章 数据库管理技术发展的不同阶段形成不同的特点 数据描述经历了三个阶段对应于三个数据模型 第二章 数据库系统的生命周期 xff0c 书中可能和我们学习软工的时候有些出入 xff0c 其实就是不同时间有不同的理解 xff0c 横看成岭侧成
  • ssh 登录时常出现的几种错误以及解决方法(Linux)

    ssh 登录时常出现的几种错误以及解决方法 xff08 Linux xff09 参考网址 xff1a https blog csdn net GX 1 11 real article details 80423409 前言 ssh是Linu
  • 程序员既要写好代码,又要写好文档

    转载于 xff1a https developer aliyun com article 196898 作为一个长期混迹于CSDN社区的人 xff0c 我对很多拥有高访问量的博主钦佩不已 xff0c 特别是在参加了CSDN在举办 2014
  • 一步一步教你如何写开发文档

    已剪辑自 https icocos github io 2017 01 02 E4 B8 80 E6 AD A5 E4 B8 80 E6 AD A5 E6 95 99 E4 BD A0 E5 A6 82 E4 BD 95 E5 86 99
  • 如何写好项目文档

    已剪辑自 https blog csdn net houzhizhen article details 105622282 引子 有太多的程序员 xff08 包括很多资深的程序员 xff09 不会写文档有太多的项目没有 xff08 完整的