需求文档是一个PM入门级别的技能,虽说是入门技能,但是写一个比较完美的需求文档还是要花费很多精力的。
任何产品都有一个基础,这个基础包括用户基础、商业基础、产品定位、发展战略等等。所有的需求都是在这些基础之上,并为其服务。不可能说,在一个社交平台上,添加庞杂的支付转账功能,或者说校园社交产品中添加兼职模块。随手做出来的产品,更像是在堆积功能。
在这个基础之上,明确了即将做的功能,接下来就是将功能细化成单个的功能点。一般来说,每一个功能在其他的APP上都会有相关或者类似的样例。
参考产品不是说直接拿其他产品原样copy不考虑自己的产品特点,而是任何一个产品的功能细节都有其存在的意义。原理都是相通的,做好相关功能点的竞品分析,能够有效地避免设计出无用或者引导失败的巨坑。站在其他人的肩膀上,才能看的更远。
怎样写出一个好的需求文档?下面就文档的具体规范做一个简单概括。
1.文档结构
具体的文档书写有好几个方面,首先是结构。
一般来说,整个文档需要按照一个正常的业务流程进行排序,考虑到研发童鞋的开发方式,根据业务流程体现出每个功能和其对应的子功能会比按照页面流程的排序简洁很多,也要方便很多。 需要的话,最好可以用流程图或者序列图将功能轨迹画出来。
2.表现层
然后是表现层,具体来说就是用户看得见的元素。
举个例子,像APP的推荐社团列表,有一些头像名称之类的元素集合,首先得定义需要的数据集合,像社团logo、名称、徽章等等。
● 细化一下,比如说名称:名称字段可能会包含中英文,还有需不需要支持显示特殊符号像颜文字,需不需要支持emoji表情等;
● 再比如说社团介绍:如果为空的话需要怎么做处理,是隐藏还是填写默认文字,显示框是显示固定的行数还是说有多少显示多少,这些都是在表现层需要考虑的问题。
每一个表现层需要考虑的元素在数据库都有相对应的字段,并且每个属性都会对应着客户端和服务端两边的处理。
3.逻辑处理层
还有就是逻辑处理层,其包含很多方面,包括页面元素的跳转逻辑、排序逻辑等等。
还拿这个社团推荐模块来说:
● 首先需要定义整个推荐社团模块的排序逻辑是按照社团创建时间还是说按照后台运营人员的配置;
● 针对某个被推荐的社团,哪些元素支持点击,哪些不支持点击,点击之后是否要跳转到哪个页面;
● 同时一些特殊情况,比如说突然断网的页面显示和toast提示等。
一个功能正常的逻辑应该是符合用户的心理预期,符合用户在真实世界的使用习惯的。
4.标明功能
需要标明功能的“入口”和“出口”的问题。
每一个功能都会或多或少和其他功能进行耦合,所以在设计每一个功能时都要考虑到这个功能所能影响的功能。比如说,我想添加备注功能,并不是说我直接在个人中心添加一个备注功能就完事了,更进一步来说,我需要考虑到我其他的页面,出现这个人的时候我是该显示他的个人昵称还是显示我给他的备注。而且会不会有一些特殊情况比如说,在一些好友列表我是否要将这个人的昵称和备注同时显示出来,这样会不会引起一些样式上的小问题。
没有哪一个功能会是完全独立的,所以慎重添加功能,一旦添加之后必须细思考量,避免后期研发出现大坑。
5.注意细节
再就是一些细节,也是我觉得很重要的方面。
● 比如说一些细节交互,虽说不用像专业的交互设计师那样进行设计,但是所需要的静态或者动态的效果还是得描述清楚;
● 还有就是用语,尽量用简洁明了的语言风格,适当用一些专业术语,可以有效避免大段描述还有歧义等情况的出现,如果不懂的可以直接问研发的童鞋;
● 再就是做好更新记录,一个文档在评审后会有些许的更新等等。
作者简介:刘杰,英文名Mario,校导产品经理。