热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

什么是敏捷又不被技术嫌弃的需求文档?

本文摘自PM圈子网—PM牛人聚集地(www.pmleader.cn)转载请注明来源先问几个问题,大家觉得写文档是一件必要的事吗?你喜欢写文档吗??你写的文档程序猿和测试会看吗??假如你自己能独

本文摘自PM圈子网—PM牛人聚集地(www.pmleader.cn)转载请注明来源


先问几个问题,大家觉得写文档是一件必要的事吗?你喜欢写文档吗??你写的文档程序猿和测试会看吗??

假如你自己能独立设计和开发一个产品,你甚至根本就不需要写文档。文档的存在很大程度是因为团队协作需要进行信息传递。但负责传递信息的文档会存在几个问题,信息传递会有损失。

存在写文档的成本。

存在阅读理解成本。

而在一个变化万千的互联网行业里,大家应该知道有一种绝望叫做,当你还在写文档的时候,别人已经在收集用户反馈了。

关于信息传递在知乎我找到一个图表,大概表达的是“沟通成效和沟通渠道的关系”,我们可以发现右上角面对面交流的效率是最高的,左下角用纸来交流效率最低。

当今的世界是敏捷开发的天下。传统开发过程中,人们通过交付文档来获得价值。但这样做的结果仅仅是撰写了产品的附加件而已,对于产品本身的交付没有太大的帮助。在经典的敏捷软件开发宣言中,我们会发现很有名的一句话,工作的软件高于详尽的文档,你写再多的文档也不如用一个哪怕简陋却可运行的软件来阐述明白你的问题。

当然文档也有它存在的必要,比如说它的“记录”功能,若干个月后,项目换了负责人,他就可以通过这份文档了解项目的来龙去脉,从而更好的传承设计思路。文档也有益于解决纷争,当传递过程中信息流失太多,事后追究过错,看一看文档就能找到问题所在。

因此在互联网行业,无论是大企业还是创业公司,文档有其存在的必要,但这个文档应该是一份轻量且高质量的文档。那么一份敏捷有效的文档应该遵循怎样的原则呢??

最最基本的有两条:

敏捷性

可读性

什么叫敏捷的文档,我的理解就是“精简易迭代”。

所谓精简,就是指你的文档只讲重点,什么标题目录复杂的专业术语统统都先抛掉,只写当前任务的核心要点。有些需求文档会先讲行业和业务背景,还会有名词解释的类别,专门有一块来解释后文难懂的专业术语,而对于一份敏捷的文档来说,这些细节应该在MRD或者BRD里说明,不应该在PRD里废话。如果程序猿需要了解业务背景知识,当面讲给他听。

所谓易迭代,就是这份文档要有一个易于迭代的形式。一是编写人员不应该花费过多的时间去注意排版和规范,思考的重心在需求内容。二是要有迭代记录的区域,需求变更频繁,变动的原因、时间、提出人、处理情况还是有必要记录下来的。当然大家可以将这部分统一进PRD的文章开头,也可以另外用专门的软件或文档来管理。

关于“敏捷性”还有一个要点要提一提,就是编写文档的时机。我们要知道,不是先写文档,才做产品。合理的顺序应该是先有产品,需要的时候才写文档,当然这一点比较难把握,实际操作中大家需要综合考虑。

接着说可读性,我的理解也是两个要点:

形式易读

考虑阅读对象

关于形式易读,其实它会增加编写人员的写作成本,但还是有一些很基本的技巧和方法可以快速的达到目标。最起码,我们要用上设计四原则的前两个,亲密性和对齐,再用简单的色块区分开文档的不同要点,就能很大的提高阅读人员的理解速度,同时不会增加太多的编写成本。

接着就到了本文浮夸标题的内容了T.T,也就是写一份考虑阅读对象尤其是程序猿的文档。写文档的人其实最怕写完文档却没人看,所有的努力仿佛都被浪费了,而产品需求文档最主要的阅读人员就是开发工程师和测试工程师。那究竟怎样的文档才是他们喜闻乐见的呢??

我的想法是写一份符合程序猿思维模式和工作方法的文档。

比如说测试最常见的工作方式是什么,就是撰写测试用例。测试用例如果简化一点,我们可以用写“用户故事”(user story)的方法来写。

用用户故事的方法来编写需求文档,可以让我们将注意力放在需求上,而不是解决方法和实施技术上。过早的提及技术实施方案,会降低对需求的注意力。

这里我上网搜了一下资料,规划业务需求,可以采用“3W模板”,也就是:

谁(Who)

是什么(What)

为什么(Why)

上面的3W实际上就是描述了相关利益者是谁,他们想要什么,他们为什么有这种需求。下面举一例子进行说明:

谁(Who):用户

是什么(What):希望借助一个应用程序在不同服务器间传输文件为什么(Why):为了存储项目数据

为了更加接近“用户故事”,我们可以改写为:

谁(Who):消费者/用户

是什么(What):想将归档过程数字化

为什么(Why):为了增强沟通,提高分享效率

敏捷项目中编写用户故事有一个常用模板:作为一名“用户类型”,我想要“需求”,以便于“原因”。应用到这个例子,就是:作为一名用户,我想要将归档程序数字化,以便于增强沟通、提高分享效率。

多数情况下,需求内容需要更加充实和详细,这一步要放到后面做,开始不要这样。用户故事的方法有时会因过于简短、不断重复而受到批评。这里我们必须明白:需求文档不是散文或诗歌,应该清晰、简明地描述用户需求;需求文档的重点也在于此,不要管形式多变或内容是否重复这样的问题。

然后作为一个不太懂技术的产品,我了解到开发中最常用的一个软件设计框架叫做MVC框架。

它的运作规则我还在学习,但它给我编写需求文档提供了一个重要的指导意义,就是在开发的思维里,用户的输入行为、后端规则和前端交互是独立出来的,我们在撰写文档时是不是也可以按照这种思维方法来区分内容。对此我设计了一个需求文档的模板,欢迎大家提出参考意见啊,这个文档还有很多缺陷,欢迎大家提出修改意见和我交流哦。



推荐阅读
  • 网络出版服务许可证申请指南
    本文详细介绍了网络出版服务许可证的办理条件、适用企业范围及具体流程,帮助相关企业和个人了解并顺利完成许可证的申请。文章由专业机构提供,旨在为读者解答在互联网出版领域遇到的技术和合规问题。 ... [详细]
  • 优化联通光猫DNS服务器设置
    本文详细介绍了如何为联通光猫配置DNS服务器地址,以提高网络解析效率和访问体验。通过智能线路解析功能,域名解析可以根据访问者的IP来源和类型进行差异化处理,从而实现更优的网络性能。 ... [详细]
  • CentOS 7 磁盘与文件系统管理指南
    本文详细介绍了磁盘的基本结构、接口类型、分区管理以及文件系统格式化等内容,并提供了实际操作步骤,帮助读者更好地理解和掌握 CentOS 7 中的磁盘与文件系统管理。 ... [详细]
  • 邮件(带附件,模拟文件上传,跨服务器)发送核心代码1.测试邮件发送附件接口***测试邮件发送附件*@parammultipartFile*@return*@RequestMappi ... [详细]
  • 360SRC安全应急响应:从漏洞提交到修复的全过程
    本文详细介绍了360SRC平台处理一起关键安全事件的过程,涵盖从漏洞提交、验证、排查到最终修复的各个环节。通过这一案例,展示了360在安全应急响应方面的专业能力和严谨态度。 ... [详细]
  • 解读MySQL查询执行计划的详细指南
    本文旨在帮助开发者和数据库管理员深入了解如何解读MySQL查询执行计划。通过详细的解析,您将掌握优化查询性能的关键技巧,了解各种访问类型和额外信息的含义。 ... [详细]
  • 掌握远程执行Linux脚本和命令的技巧
    本文将详细介绍如何利用Python的Paramiko库实现远程执行Linux脚本和命令,帮助读者快速掌握这一实用技能。通过具体的示例和详尽的解释,让初学者也能轻松上手。 ... [详细]
  • 本文详细分析了Hive在启动过程中遇到的权限拒绝错误,并提供了多种解决方案,包括调整文件权限、用户组设置以及环境变量配置等。 ... [详细]
  • 本文探讨了如何优化和正确配置Kafka Streams应用程序以确保准确的状态存储查询。通过调整配置参数和代码逻辑,可以有效解决数据不一致的问题。 ... [详细]
  • 本文详细介绍如何使用Samba软件配置CIFS文件共享服务,涵盖安装、配置、权限管理及多用户挂载等关键步骤。通过具体示例和命令行操作,帮助读者快速搭建并优化Samba服务器。 ... [详细]
  • 本文介绍了如何使用PHP代码实现微信平台的媒体素材上传功能,详细解释了API接口的使用方法和注意事项,确保文件路径正确以避免常见的错误。 ... [详细]
  • 在现代网络环境中,两台计算机之间的文件传输需求日益增长。传统的FTP和SSH方式虽然有效,但其配置复杂、步骤繁琐,难以满足快速且安全的传输需求。本文将介绍一种基于Go语言开发的新一代文件传输工具——Croc,它不仅简化了操作流程,还提供了强大的加密和跨平台支持。 ... [详细]
  • MySQL缓存机制深度解析
    本文详细探讨了MySQL的缓存机制,包括主从复制、读写分离以及缓存同步策略等内容。通过理解这些概念和技术,读者可以更好地优化数据库性能。 ... [详细]
  • 智能医疗,即通过先进的物联网技术和信息平台,实现患者、医护人员和医疗机构之间的高效互动。它不仅提升了医疗服务的便捷性和质量,还推动了整个医疗行业的现代化进程。 ... [详细]
  • 为何我选择了华为云GaussDB数据库
    本文分享了作者选择华为云GaussDB数据库的理由,详细介绍了GaussDB(for MySQL)的技术特性和优势,以及它在金融和互联网行业的应用场景。 ... [详细]
author-avatar
_郭士铭
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有