再谈文档必不可少

简介: 项目文档必不可少,必不可少,再小的项目,别人再和你吹嘘项目多么简单,领导再告诉你时间多么紧张,客户再不上线就要损失几十万,统统都不是你的问题,唯独不写文档是你的责任!我在《人月神话》的解读中已经深入的理解了文档的必要性,很多时候人只是还不够强大,经常败在时间上,败在压力上。

项目文档必不可少,必不可少,再小的项目,别人再和你吹嘘项目多么简单,领导再告诉你时间多么紧张,客户再不上线就要损失几十万,统统都不是你的问题,唯独不写文档是你的责任!
我在《人月神话》的解读中已经深入的理解了文档的必要性,很多时候人只是还不够强大,经常败在时间上,败在压力上。

需求文档

首先,需求文档。需求文档是我们把客户心里想的东西写出来给客户看,或者有时候是客户提供的,所以需求文档往往是最不能体现项目功能的。在这个文档中,我们一定要适应客户的口吻,换句话说要用客户看得懂的话,而且一定不要往细里写,因为还不是时候。这个文档要确定的是项目的目的,这个目标一定要简短,如果一个项目的目标太多,可以写多份需求文档来分别说明。
《简约之美》这本书中,作者认为项目的目的归根结底只有一个,那就是帮助人。由此我觉得需求可以这么写,首先明确项目给谁用,再明确帮他实现了什么价值,所有的项目都可以这么写。

系统设计文档

往后是,系统设计。这是专业的程序人员或者产品经理的工作结果,应该要细化,但不可避免的会出现很多口水话,导致客户看不懂甚至不想看。但没有关系,系统设计的编写应该占程序员工作的50%是为合理的。改文档总是比改项目来的快,而且安全。之所以安全是因为文档的思路是连贯的,更容易观察到冲突和矛盾,书写的过程同时也是思考的过程,打字的时候真的能让人想通很多问题。

但是问题又来了,客户对于文档没有热情怎么办?客户语文实在是差怎么办?

实际上我们无法避免,客户的水平肯定是参差不齐的,不能要求他们所有都对互联网有较好的理解。我们能做的就是为文档编写文档。我发现这并不是多么难的事情,我需要教会客户如何写文档以及阅读文档。如果说文档是一种沟通工具的话,那么交流的双方都必须理解这种工具的内容所代表的具体含义。同时,我们对待这件事情越认真客户也越能意识到它的重要性,而不是再纠结于成本和周期而放弃文档。

那么这些为文档所编写的文档,实际上是公司 Wiki 的一部分,而且是公开的那一部分。我认为这是今后一段时间,乃至长久的一项重要工作。我希望做到的是让客户通过 config 一样的形式,就能实现良好的文档交流。

测试文档

最后是,测试文档。在某个项目之后,我意识到,我们必须让测试不再依赖于个人,特别是不再依赖于客户。如果最终测试依赖于个人而不是文档将会产生许多的不稳定因素。

  • 首先,测试者的心态会发生改变,如果项目质量仅由一人评估,整个项目就很容易出现一些人性的错误。例如,主观但错误的推测(对于功能的曲解或过度解读),存在但无价值的选择(对于个人口味的青睐)。
  • 其次,脱离文档的测试容易丢失主要目标(就是那个帮助人的目标),测试者不是设计者,他只关注于某个过程,对于项目整体很难把握。
  • 最后,也是最可怕的,没有文档的话测试与需求容易被混为一谈。测试应当源自于需求文档,而不是源自于市场或者环境。

测试文档产生于前期准备工作阶段,主要是对于需求文档仔细研究的结果,用于指导测试流程。

如何让文档不形同虚设?

上面提到的三个工作文档,比起专业书籍中的类目要少了很多,因为我认为最重要只有这三个,其他的过于形式。文档本身作为一种工具,实质必然重于形式。曾经也有重服务、轻文档的客户案例,但我认为这是建立在沟通顺畅的基础上。那么沟通顺畅本身又是一件很主观的事情,我们看很多书写情商、影响力和沟通技巧的,都没法把这个问题讲清楚。软件行业的生产效率不能像其他制造业一样用人和时间进行计算,主要也是因为沟通成本无法降低。
如何让文档真正有效的降低沟通成本,就是让文档不形同虚设的关键。我认为有两点:

  1. 技术高层必须给予支持和认同。文档往往败于时间,质量和周期本来就是矛盾,如果技术高层不认同文档沟通,那么很少有技术员能够抗住这样的压力坚持做正确的事。
  2. 客户必须经过基本的筛选,宁缺毋滥。特别是对技术驱动型以及产品驱动型的客户,如果对互联网知之甚少,建议选择不合作。现在市场环境中,确实有那么些人是不了解以至于不尊重软件从业人员工作结果的。
  3. 开发人员必须认同这样的开发方式。程序员的两大痛苦就是:为什么要写文档,以及,为什么没写文档。

你的文档仍然一文不值怎么办?

你没有做错什么,但你仍然失败了。客户说我不改需求不给钱,商务说文档只是参考,领导说你为什么不早点开始写代码,公司表示这一切无能为力。请继续写好文档,这些问题都不是文档造成的。如果仔细分析会发现,其他他们都来自于错误的进度估计
请在下一个项目的文档中进行正确的开发进度安排,需求的修改也必定意味着新的文档产生。

END
如需转载,注明出处,并不需要我同意

目录
相关文章
|
3月前
|
存储 数据可视化 数据库
团队文档管理有困难?总有一款工具合适你
本文介绍了团队文档管理的重要性及其在提升工作效率、保障协同作业和知识传承中的关键作用。随后,详细评述了六款广受好评的团队文档管理工具:板栗看板、Notion、Confluence、Quip、Google Workspace 和 Microsoft 365,分别从功能类型、发展历程、价格费用、产品特色、优缺点、适用场景及应用案例等方面进行了对比分析,旨在帮助读者根据自身需求选择最合适的工具。
团队文档管理有困难?总有一款工具合适你
|
3月前
|
敏捷开发 数据可视化 算法
瀑布模型大揭秘:如何用分段式开发轻松搞定软件项目?
瀑布模型是软件开发中最早的线性开发方法,由Winston W. Royce于1970年提出。该模型将项目分为需求分析、系统设计、实现、集成与测试、部署和维护六个阶段,每个阶段自上而下依次进行。尽管近年来敏捷开发备受推崇,但瀑布模型在需求明确、流程复杂的项目中仍具重要价值。本文将详细介绍瀑布模型的概念、主要阶段及步骤,并探讨如何使用项目管理工具如板栗看板,帮助团队高效协作。
46 0
|
8月前
|
安全 网络安全 网络架构
网络开发过程详细知识点
网络开发过程详细知识点
66 0
|
测试技术
测试思想-测试流程 需求开发与管理简述
测试思想-测试流程 需求开发与管理简述
99 0
|
存储 SQL XML
搜索引擎项目开发过程以及重难点整理(一)
搜索引擎项目开发过程以及重难点整理(一)
583 0
搜索引擎项目开发过程以及重难点整理(一)
|
SQL 自然语言处理 搜索推荐
搜索引擎项目开发过程以及重难点整理(二)
搜索引擎项目开发过程以及重难点整理(二)
159 0
搜索引擎项目开发过程以及重难点整理(二)
|
监控 测试技术
软件测试面试题:简述性能测试流程?
软件测试面试题:简述性能测试流程?
123 0
|
移动开发 安全 搜索推荐
选择在线直播源码,必不可少的考察要点
选择在线直播源码,必不可少的考察要点
|
存储 监控 中间件
陪玩源码的性能优化思路,重点分析对象是什么?
陪玩源码的性能优化思路,重点分析对象是什么?
|
SQL 存储 分布式计算
“开源”vs“商业”,差别到底有多大?这篇测试一目了然
来自用户的声音… 开源就能搞定,还要选商业方案吗? 我是小白用户,开源方案上手快吗? 性能有极致要求,开源能满足吗? 追求性价比,哪种方案更适合我? 我对MySQL很熟悉,数据分析场景适合吗? 上述问题如何解?看阿里云帮你对比分析!
15183 0
“开源”vs“商业”,差别到底有多大?这篇测试一目了然

热门文章

最新文章