“横看成岭侧成峰,远近高低各不同。——苏轼”

在产品经理的日常工作中,开发工程师可能是我们打交道最多的角色,可是,这两个角色之间却有很多难以调和的矛盾,网上开发工程师怒怼产品经理的艺术作品很多,各种吐槽图片和文章俯拾即是 。

今年的 QCon 会议我也听一个段子,据说在大会的中午自助餐厅里,不同公司相互陌生的工程师,都靠吐槽自己公司产品经理迅速建立了友谊。

我自己写过程序,又成为产品经理,对这个问题有一些自己的理解,今天我就根据这个话题来谈谈产品经理如何同开发打交道。

为什么与怎么做

首先,我们来一起想想是什么原因导致了这两个角色之间的对立。

在面对产品或者特性时,产品经理和开发脑子里的东西是不同的。对于产品经理来说,他想的可能是客户、市场、盈利、竞争优势、政策风险、从哪里获客等等,这些东西想清楚之后,他的产出可能是 PRD,对产品功能需求的描述。开发一看,你折腾半天就这么一个东西,三页纸,没什么难度嘛。

开发脑子里关注的是什么呢?开发会关注手头的系统是不是遗留系统、系统架构有没有限制、公司的技术栈是什么样的、整个链路架构有没有问题、需不需要重构等等。这些东西产品经理可能不关注或者不懂,所以就看着一个挺大的开发团队做了很长时间,推出了一个特性,好像也没什么难度。

作为产品经理,有时我们会低估一个特性背后的技术成本。看什么都觉得简单,人家淘宝也有这个特性,为什么工程师说做不了呢?

尤其是通常在业务初期的时候,为了快速推进,工程师在实现上会做一些比较临时的东西,后期逐渐流量和复杂度提高,即便功能没变,也要花费大量的精力去调整技术架构。

所以你可以看到,产品经理脑子里的东西偏向“为什么”,而工程师脑子的思维方式会比较偏向于“怎么做”,两者的交集在“做什么”上面。也就是说刚才说到的,工程师看到好像产品经理背着手写了三页纸的 PRD,产品经理觉得工程师忙活半天就是一个简单的小特性。

久而久之,就会由不理解变成不信任,越不信任就越缺乏交流,演变成对立。

甲方乙方

关于这个话题我采访过我媳妇,她是做运营的,我说:“开发和产品之间矛盾这么激烈,你怎么看这个问题?”我媳妇觉得很奇怪,问我,你们不是一伙儿的吗?搞不懂为什么天天吵。

其实大部分公司中,最初设计组织的时候都会把产品和开发放到一起来看,希望这两个角色能够合力完成产品的设计和实现;但是在这个团队内部,随着人越来越多,就会有角色的分化,进而有了流程的分化,慢慢形成了甲乙方,或上下游。

如何去分辨团队从合作关系变成甲方乙方的关系呢?

有几个非常明显的信号,第一个是留证据,就是说了什么不算数,要发一个邮件签字画押;第二个是开小会,也就是在跟工程师开会之前,先自己角色内部开个小会,商量怎么对付对方,准备好对策之后再开大会;第三个是用词的方式,当你发现大家的用词越来越谨慎,并且开始在闲聊的时候区分我们和他们,设置大家开始试着从第三方了解彼此在干什么,了解对方对自己的评价等等。

类似的信号如果反复不断地出现,通常就意味着双方开始逐渐走向了对立,如果不加干涉,合作氛围就会出问题,一定要及时发现、及时处理。

加强沟通,互通有无

接下来我们要说怎么去克服双方可能出现的矛盾和对立,第一个要提到的,也是最重要的方法就是沟通。刚才我们说到产品经理脑子里是“为什么”和“做什么”,工程师脑子里是“做什么”和“怎么做”,过去产品经理和工程师的沟通通常会集中在做什么这里;更好的沟通就是要让产品经理把为什么告诉开发,让开发把怎么做告诉产品经理。

彼此说清楚自己的顾虑和困难,英文里有个说法叫做“ on the same page”,就是指产品经理和开发能看到彼此可以看到的东西,互诉衷肠,互相温暖。

专程交代业务规划和产品价值

对于产品经理来说,一定要专程交代产品价值。所谓专程交代,是指不要只在需求评审和需求沟通的时候才去介绍产品的来龙去脉。这是不够的,一定要拿出时间和精力去做专程沟通。

比如平时闲聊的时候,下午茶的时候,一起吃饭的时候,我之前经常会跟合作的工程师在吸烟室里聊,不说项目和需求,而是讲目前产品的状态,为什么要做现在的东西,之前做的东西的近况如何,业务目前是什么状态,接下来可能会向什么方向发展等等。

如果你在做项目的时候去沟通这些,工程师会本能地有所防备,因为你是有企图心的,你想说服工程师投入时间和精力做项目嘛。但当你专程去讲的时候,这个企图心就被放下来了,讲得多了,就会慢慢开始有共鸣。

一开始这么讲的时候会看起来像个神经病,但久而久之,工程师会理解你是真的在沟通,在共享信息。最后达到什么效果呢?就是当你真的开始提需求和项目的时候,工程师会非常理解,有种心照不宣的默契感觉。

掌握技术概念和技术语言

产品经理要掌握技术的概念和语言,这个蛮有意思的,每个公司都有技术栈,技术栈有不同的特点,我刚开始做产品经理的时候,主管知道我有写程序的经验,就让我去看代码,甚至让我去写代码,给我代码库的权限。他的目的就是要我知道,当时的技术栈是什么,基础的架构是什么。

看代码是个效率不太高但非常扎实的办法,还有个办法是去写非功能需求。因为工程师的“怎么做”有很多是在水面下的,比如他要保证可用性,保证安全,比如做一个简单的文本框让大家写东西为什么要花那么多时间?可能就是为了保证不要被黑客利用它做注入攻击。

如果产品经理把这些非功能性需求一条一条写下来,比如浏览器适配,做一个功能可能很快,但要保证在各种各样的浏览器下都表现稳定,就需要花费额外的时间,可能比做出这个功能花费的时间还要多。这些东西写下来,产品经理就可以大致了解真实的开发工作量。

另外就是作为产品经理要跟工程师多接触,让他们多给自己讲一些技术,优秀的工程师提到技术通常会滔滔不绝,如数家珍。当你了解基本的技术常识之后,就会理解技术成本和技术的局限性,知道哪里是技术的边界,如何跟产品更好地做搭配。

总结

我们从产品经理和工程师矛盾的原因开始说起,提到产品经理会更多地关注为什么和做什么,而开发会关注做什么和怎么做,可能彼此之间并不尽然理解对方的思维方式,另外角色的分化又会导致双方逐渐成为上下游的对立关系。

接下来介绍了一些加强沟通,促进相互理解的办法,建议产品经理多向工程师解释产品的来龙去脉,也要多去了解技术领域和技术语言,下一篇分享还会继续聊这个话题。

如果你是产品经理,你在工作中是如何与工程师保持合作的?如果你是工程师,你会反感产品经理的哪些行为?你心目中理想的产品经理是什么样子的?欢迎在留言中分享讨论,我们下次分享再见。

评论