关于产品与技术沟通的一些建议

有一个新创业的项目,我个人有一点点投资参与的,最近开发进度一直不如预期,因为开发的负责人也是我认识很久的一个朋友,所以有点奇怪,就去聊了聊。(说来惭愧,主要我也有责任,本来答应一开始研发就介入做一些技术沟通的工作,结果自己太懒,一直没太多过问) 然后发现,问题主要还是出现在沟通环节。这个创业团队的负责人,业务运营能力应该还是有的,但是他们之前没有技术产品开发的经验,简单说就是,团队里缺乏一个产品经理的角色,需求的反复和双方理解的歧义导致了研发周期的延宕。

这个场景相信很多创业公司,甚至规模不小的公司都出现过,我也不敢说自己就可以彻底的解决,但是还是分享一下关于产品需求设计与开发沟通的一些观点。


第一要旨: 产品人员在提出功能需求时,应明确告诉开发人员,其需求的目标是什么。


很多产品人员做需求设计,给开发的时候只告诉开发你要做这个这个,那个那个,而并不具体说明为什么要做这些,也许他们认为开发不需要了解这个,也许他们认为开发应该一看就明白这是什么,但实际上,往往这里就产生理解歧义。这是很常见的问题。


此外,产品人员,特别是没有技术背景或技术背景一般的产品人员,有时候会替开发人员多想,比如会认为这样做简单而那样做复杂,但也许技术实现成本并不是他想象的那样,而对于创业公司,实现成本往往也是特别重要的需要考虑的因素,产品人员往往没有给出实现成本最低的方案,而开发人员则盲目按照定义的需求出发,有时候做出的东西从实现成本来说非常不经济,特别是时间成本,消耗非常巨大。


在符合第一要旨的前提下,开发人员应能参与需求的讨论,我知道有些大公司或者产品经理不希望这样,我定义好的需求你去实现就好了,你做研发的讨论这个干什么? 但这样其实是有好处的。


1、研发人员的参与意识强,对产品的热爱度和积极性会提高。

2、加深对需求目标的理解,减少开发过程中因理解歧义做出无用功或不符合需求的状况。

3、有可能提供目标一致,而更低实现成本的方案。对创业公司,开发力量不够完善的场景而言,这一点也非常重要。


当然,强调一点,研发人员可以参与需求设计的讨论,但决策权仍需要明确掌握在产品经理手里,(如果研发人员确实更懂得需求定义,可以兼任产品经理。但只要你赋予了独立的产品经理角色,这个需求的决策权还是必须给予保证的。)


第二要旨:产品人员应给出所有功能需求的流程和结构图

在给出具体功能需求设计之前,应给一个总纲,也是为了加深需求理解,形成完整的需求概念的一步重要工作。

很多时候,产品经理会觉得,我说的都那么清楚了,你怎么不明白呢? 其实主要就是因为在这个环节上产品经理对整个项目的背景,结构,前提,目标早已有了代入感,所以觉得每个细节都理所当然是这样的,但是对研发而言,他们并没有得到完整的背景信息,对细节的理解往往就出现偏差和误判。对彼此功能点的关系,相互的联系了解的支离破碎,那么实现起来这个系统也就难免出现不尽如人意的地方。

常见的,比如,用户的某个属性,在某个功能中体现出来,而在另一个功能中被赋予或产生变化的,但是因为需求设计的时候,没有给出整体的结构和流程,只是在局部的设计中提供了不精确不严谨的描述(产品经理也许觉得描述的足够清楚了,但是缺乏必备的背景信息铺垫),那么实现的工程师,(甚至可能两个不同功能是不同工程师实现),也许会误判做成两个不同的字段,赋予不同的定义。这样这个属性的实现就彻底错了,而在上线前甚至双方都没意识到存在这样的问题。


第三要旨:具体视图设计的三要素


不论是设计网站,还是设计app,基本都是由一个到多个交互视图组成需求设计。

产品人员在提供这样的应给与研发者如下三要素

1、界面元素,比如哪里是文字,哪里是下拉框,哪里是按钮,这些属于界面元素,可以用草图,或word简单排版,但要明确界面上的元素是什么,如何展现。是静止?浮动?

2、数据逻辑,这一点往往也是非常多创业团队和新手产品经理容易忽视的,比如页面这里是最新新闻,那么你要说明,这个最新新闻是基于怎样的数据逻辑获取的,当然这个基本上工程师都知道,按照时间逆序就好,但是如果涉及,比如有一个区块叫做推荐游戏,那么你要告诉开发人员,这个推荐游戏是从什么地方取出来的信息,按照什么逻辑取出来的。有的产品经理说,这不是技术活么?我怎么知道? 哦,要是真不知道,就要跟技术人员沟通这个问题,看看你需要这个地方出现的东西体现出怎样的一种特征,然后问他应该怎么来设计,然后你也要参与思考,这个数据逻辑是否符合用户的预期,以及在运营中是否会出现一些比如说位置会固化,新数据无法体现的问题,这些都是产品经理要思考和确认的,不能说甩手给技术,当然,如果你遇到一个特别有产品经验和理念的工程师,他真能帮你都解决好,但这情况其实非常罕见。

3、操作逻辑,界面上可以进行操作的有哪些元素,哪个可以点击,可以选择,操作后出现怎样的反馈,比如显示浮层?进入新页面?或怎样怎样? 这也是要在需求设计文档里说清楚的。


一个视图的设计,说清楚界面元素,数据逻辑,操作逻辑,开发者才能明确这个视图的开发需求。不要让开发的工程师自己去猜,去揣测,如果有些逻辑涉及算法,产品经理不清楚,也要与开发者确认他所采用的逻辑是什么,以及效果是什么,并与自己所预期的效果做比对,而不是说,这个我不清楚,让工程师决定。 操作逻辑可能会指向其他视图,这就是前面说的,结构流程图要说明的地方。


在百度这样的公司,产品经理要写繁琐冗长的MRD,(其实早期的MRD不繁琐,也不冗长,但后来对需求定义的精确性要求越来越高,内容就越来越繁冗了)。其实我不喜欢这样的风格,沟通成本太高,所以对于创业公司而言,还是尽可能简单直接有效最好。 那么我认为,要做到简单直接有效,做好如上几点,对于大部分场景来说,应该就可以满足。

重复一下,第一,要让开发工程师明确需求的目的并参与讨论。第二,要给出结构图,流程图,对需求有完整的认识。第三,针对具体的视图,提供元素,数据逻辑,操作逻辑 三要素,其实并不会很复杂,正常一个视图写一页到两页就够了。如果开发工程师配合比较默契,有较多合作基础,中间很多内容可以写个略字。但是这个结构建议还是养成习惯。


说一个执行中的要点,当产品经理给技术人员展示完文档,表达完需求后,最好的一种确认方式是让技术人员按照自己理解重述一下需求,重述的过程往往容易暴露出理解的歧义。确保你表达的与对方理解重述的一致,这样有可能减少很多后续的麻烦。


今天讲的主要是产品经理如何更好的与技术沟通;那么在产品设计中,如何更好的满足用户需求,是另一个特别大的话题,以后有机会我们再聊聊看。



有好几人觉得我前天那篇质量不好,有人建议我减少更新频率以提高质量,咳咳,发现订阅用户数多了,越来越身不由己,不敢肆无忌惮随便唠嗑了。


昨天其实写了一篇,后来觉得不是很合适发出来,就删除了。



  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
完整版:https://download.csdn.net/download/qq_27595745/89522468 【课程大纲】 1-1 什么是java 1-2 认识java语言 1-3 java平台的体系结构 1-4 java SE环境安装和配置 2-1 java程序简介 2-2 计算机中的程序 2-3 java程序 2-4 java类库组织结构和文档 2-5 java虚拟机简介 2-6 java的垃圾回收器 2-7 java上机练习 3-1 java语言基础入门 3-2 数据的分类 3-3 标识符、关键字和常量 3-4 运算符 3-5 表达式 3-6 顺序结构和选择结构 3-7 循环语句 3-8 跳转语句 3-9 MyEclipse工具介绍 3-10 java基础知识章节练习 4-1 一维数组 4-2 数组应用 4-3 多维数组 4-4 排序算法 4-5 增强for循环 4-6 数组和排序算法章节练习 5-0 抽象和封装 5-1 面向过程的设计思想 5-2 面向对象的设计思想 5-3 抽象 5-4 封装 5-5 属性 5-6 方法的定义 5-7 this关键字 5-8 javaBean 5-9 包 package 5-10 抽象和封装章节练习 6-0 继承和多态 6-1 继承 6-2 object类 6-3 多态 6-4 访问修饰符 6-5 static修饰符 6-6 final修饰符 6-7 abstract修饰符 6-8 接口 6-9 继承和多态 章节练习 7-1 面向对象的分析与设计简介 7-2 对象模型建立 7-3 类之间的关系 7-4 软件的可维护与复用设计原则 7-5 面向对象的设计与分析 章节练习 8-1 内部类与包装器 8-2 对象包装器 8-3 装箱和拆箱 8-4 练习题 9-1 常用类介绍 9-2 StringBuffer和String Builder类 9-3 Rintime类的使用 9-4 日期类简介 9-5 java程序国际化的实现 9-6 Random类和Math类 9-7 枚举 9-8 练习题 10-1 java异常处理 10-2 认识异常 10-3 使用try和catch捕获异常 10-4 使用throw和throws引发异常 10-5 finally关键字 10-6 getMessage和printStackTrace方法 10-7 异常分类 10-8 自定义异常类 10-9 练习题 11-1 Java集合框架和泛型机制 11-2 Collection接口 11-3 Set接口实现类 11-4 List接口实现类 11-5 Map接口 11-6 Collections类 11-7 泛型概述 11-8 练习题 12-1 多线程 12-2 线程的生命周期 12-3 线程的调度和优先级 12-4 线程的同步 12-5 集合类的同步问题 12-6 用Timer类调度任务 12-7 练习题 13-1 Java IO 13-2 Java IO原理 13-3 流类的结构 13-4 文件流 13-5 缓冲流 13-6 转换流 13-7 数据流 13-8 打印流 13-9 对象流 13-10 随机存取文件流 13-11 zip文件流 13-12 练习题 14-1 图形用户界面设计 14-2 事件处理机制 14-3 AWT常用组件 14-4 swing简介 14-5 可视化开发swing组件 14-6 声音的播放和处理 14-7 2D图形的绘制 14-8 练习题 15-1 反射 15-2 使用Java反射机制 15-3 反射与动态代理 15-4 练习题 16-1 Java标注 16-2 JDK内置的基本标注类型 16-3 自定义标注类型 16-4 对标注进行标注 16-5 利用反射获取标注信息 16-6 练习题 17-1 顶目实战1-单机版五子棋游戏 17-2 总体设计 17-3 代码实现 17-4 程序的运行与发布 17-5 手动生成可执行JAR文件 17-6 练习题 18-1 Java数据库编程 18-2 JDBC类和接口 18-3 JDBC操作SQL 18-4 JDBC基本示例 18-5 JDBC应用示例 18-6 练习题 19-1 。。。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值