经常有人问我:“嗨,费杰你好!请问阿里巴巴的需求文档怎么写?“,但很少听到人谈:“嗨,哥们你好!请问产品经理怎么和程序员打交道?”你回去稍微琢磨了一下,心里就会得到下面三种情况:
1)很多产品经理之前就是程序员,所以非常了解程序员是什么样的一个状态;
2)很多产品经理还停留在关注自己产品规划、设计本身,缺乏对团队配合的思考;
3)很多产品经理,其实是有和程序员打交道的实践技巧 、心得的,但没有重视和分享。
事实上在很多产品研发体系下,产品经理和程序员因为思考方式、关注范围、职能职责的差异,导致了沟通上的困难。如何更好的与程序员建立起一座畅通的桥梁也是每位产品经理需要思考的问题。
一般情况下,产品经理和程序员沟通困难大概的原因:
1、得到信息不对称;
产品经理得到的信息一般集中在:商业需求、商业策略、战略方向、产品规划、运营数据、整体营收、目标任务等方面。产品经理往往在根据公司现阶段的情况,以及市场的竞争情况,做一些产品策略或者一些产品的方案的策划、发起、实施。
所以这个过程中,产品经理扮演的角色是翻译:“市场需求、商业需求”,成为:“产品需求”,所有的信息全部围绕需求本身。为什么要做需求?怎么做需求?先做什么需求、后做什么?基于怎么样一个思路去推送产品进行实施、从一个利益平衡获得空间增长指标后达到另外一个利益平衡。
程序员不一样,很多时候程序员得到的信息是:有一个需求,可能是小需求、产品需求、或大到项目需求,然后得到一系列需求列表,然后产品经理会让程序员看:“需求”哪些通过code改改就可以实现,哪些是需要开发可以实现,哪些是技术或构架或因为成本的原因不能实现。
所以在这个过程中,程序员扮演的角色是翻译:“产品需求”,成为:“技术语言”的评估,所有的信息全部围绕开发需求本身。如何开发这些需求?是沟通数据库增加字段?调用接口?开发新的接口?需要开发组件?重新构架引擎?来实现满足或支撑这些需求?
那这个时候问题来了,很多情况下我们只是把程序员当做一个写代码,通过编程语言来操作计算机完成需求的工具了。
2、沟通语言不对称;
说到两者沟通的语言,这肯定是困扰产品经理本身的。产品经理的语言是:“描述“、”形容“,我也见过很多产品经理,很多人的需求文档就是漫天飞舞的文字,一整段的描述+描述,不要说程序员看不清,可能过段时间连自己都看不清楚。除了书面语言,产品经理的沟通语言也是含糊的,没有太多的逻辑去组织,很多时候总是试图去述说一个需求,被程序员的一个计算机术语而打断。
程序员的语言,更偏向于技术化。很多产品经理做过技术,有技术背景,但是还有很多产品经理不懂得技术。所以在这个时候,程序员在解说或回答一个需求的时候,会把自己习以为常的变量、函数、实现方式说出来。于是很多产品经理听到:“Sdk、webshell、select、api、组件、插件、控件“等等的时候会云里雾里,
那这个时候问题来了,很多情况下我们总站在自己的立场上、自己的世界里认为别人也懂自己在说什么?实际呢?大家都是听得一半一半,沟通没有彻底到位。
3、思考角度不对称
产品经理思考的角度在于产品本身,对技术的细节、技术的性能没有太多的发言权。很多产品经理要是的实现的业务逻辑,不管程序员是采用:c++、java、php、Python、找开源代码改的,还是自己写的都没有关系。
程序员只要在约定的时间里,把约定的业务逻辑开发出来就可以,产品经理不去会考虑目前服务器的配置、程序员手上任务的配置、技术能力的情况,要的是结果。而且很情愿的认为团队中的工程师都是世界上最好的工程师,想做什么都可以做,对因为技术原因而不能支持实现需求不能接受。
程序员思考的角度有点区别,我也看到不到程序员本身对产品追求完美对需求的背景、意义去研究了解;但很多程序员还是停留在自己接单子任务一样来一个做一个的境界,做好了自己玩自己的。程序员考虑程序实现的方式同样的一个请求是get还是post,程序员考虑代码的性能,从而采取不一样的方案去实现需求,考虑请求并发量压力和安全性。但是很多情况下,程序员对技术的理解会导致有一些业务需求满足不了,不是因为不能实现,是因为实现了觉得是废代码,或者构架不完美了。
那这个时候问题来了,很多情况下到底倾斜谁的立场上思考问题?我之前也会碰到很多情况程序员就程序的角度说业务需求不合理,产品经理说程序员消极罢工、霸得蛮。
4、考核标准不对称;
谁也不尿谁,哼!你能把我怎么样。产品经理和程序员有为完全沟通或误会的时候,极端情况下,有一方会罢工。这个时候主要是2个角色的各个考核标准不一样,所以在很多情况下显得非常的无奈。
产品经理很可能考核的是方案和上线的时间、产品上线后的数据;而工程师考核的是程序的性能、很多时候产品经理催的急要的急,但程序员每天的时间有限,还是得慢慢构架慢慢开发,程序员开发时间少了,未知的执行BUG没考虑过是要负责的。
这个时候问题又来了,产品经理天天干着急!咋办?
以上是我结合几年来的工作经验总结出来的,当然这4大因素把很多共性的因素概况进来了。当然过程中还是会因为很多产品经理或程序员本身(个性)的沟通技巧、态度、情商等因素导致的沟通不倡,影响了彼此之间的默契。
其实仔细的分析一下,产品经理和程序员打交道的过程中不管是共性的因素还是个性的因素,也不是想象中那么困难。通过一些努力之后,我们总是会找到一些快速和程序员建立沟通桥梁的办法。我个观点如下:
1、 要看到项目层面,不要只看需求本身。
上面说到的几点不管是:“信息不对称“、”沟通的语言不对称“、”思考角度不对称“还是”考核的标准不对称“是我们常见的几个客观隐私。把几个因素抽取出来剖析,发现还是由于我们站问题的视角的高度不一致造成的。
产品经理只是看到自己得到了商业的需求,策划了产品的需求,接下来会把很多事情抛给程序员做了,那还是站在需求方的角色中。那如果真正的是站在意识层面的项目经理的角度,这个时候看待问题的视眼会广很多。
这个时候你就想着为了做这个项目这个需求,程序员是不是明白了为什么要做?是不是对这哪些需求的优先级有了重要的认识?作为产品经理我用怎么样一种表达方式程序员更明白?是不是需要把时间点等划定?目前程序员的资源和服务器情况允许他们能做的空间是多大?怎么样才能拉动他们的积极性更好的完成这个项目?适当的时候,需要帮助程序员做哪些申请或让步?
对产品经理来说,同样张罗一件事情,同样会了得到一个结果,但是中间的过程很可能是完全不一样的。所以因为思考角度仅仅从做完一个需求死磨硬泡上升到,站在项目的角度去考虑各个关节的风险点、时间点,得到的效果是完全不一样的。
2、从理解程序员开始,换位思考会更好。
一直在问一个问题:“程序员是什么一群人?“就和问自己:”产品经理是什么一群人?“一样,有点好笑、有点幼稚。从小工到专家,从CSDN到Cnblogs,发现很多很多非常优秀的程序员的心声。
程序员是什么样一群人?像切西瓜一样一刀一刀切:
- 写php的
- 写Java的
- 写windows C的
- 写liunx C的
- 写C++的
- 编程水平一般的
- 编程水平还行的
- 编程水平牛逼的
- 编程水平大师级的
- 构架牛的
- 数据库牛的
- 勤奋的
- 懒于思考的
- 不会JavaScript的
- 积极的
- 喜欢钻研的
- ……
好像都不太合适,因为你找不到解决和工程师沟通的好的办法。而且这些很多是外在的条件,随随都在改变。看到很多朋友一年之间经历几个大项目水平突然猛进,态度、一些特点也变得完全不一样。这个时候你需要的是了解和掌握程序员,作为职场的人,和我们一样的人共同需要的一些特点。
如下4点:
1) 是不是特别想被肯定、获得尊重;
理解、肯定、尊重。这3个词或许非常的空但确确实实是一个非常好的方子。静下心来走近程序员,听听他们的心声、他们的抱怨,或许产品经理和程序员的距离将不再是那么遥远。
虽然很多时候我们讲德行说尊重,但真正领悟到心里、落实到行动、表现在态度上的完全不一样的。真正,你是不是一言、一行本真理解、肯定、尊重程序员的,程序员是有感知的。
2) 是不是想给产品提供自己的建议,而不是仅仅做一个编程的机器;
很多程序员对产品非常热爱、对产品有独特的想法,但多数又局限于技术情节对产品的建议常常被忽视。相信很多程序员都希望参与产品,通过自己的专长改变产品,进而打磨出一款完美的产品。
所以产品经理也可以适当的给程序员一点发挥的空间,特别是在技术创新、产品需要技术驱动的方面,在商业可控的层面让程序员发挥排头兵的作用。这样程序员会开足马力投入。
转载:http://www.congci.com/item/chengxuyuangoutong