网上程序员和产品经理的段子很多,现实工作中程序员和产品经理吵架也成了家常便饭。时常听到程序员抱怨产品经理如何不靠谱,提的需求稀奇古怪,实现成本巨大;产品经理也经常抱怨这么简单的需求为什么程序员就一个劲的提问题,实现难度那么大,明显就是不配合,更有甚者会认为程序员是群傻子。

我还记得有次去面试,一个技术总监问我遇到产品和技术争执不下,就是要上一个需求,这时候该听谁的。问题问的比较觉得,但这也反映了很多技术的心理,在这种时候就是想有个当家作主的人。

但经过我的观察,将近90%(经验估计)情况下产品和技术的矛盾并不是不可调和的,甚至大家吵的都不是一件事情。

技术和产品到底该怎么吵架,才能既解决了问题又能不上和气。

吵架的checklist

讨论的是一件事情吗

产品经理:“我要是做一个用户两个账号合并的功能,期望一个星期后上线。“
程序员:”这个功能太复杂了,我要重构很多代码,用户登录也变得很难做?“
产品经理:”为啥难做“
程序员:”xxx代码写的比较复杂“
…………

再继续聊下去,真的要吵起来,相互之间都会觉得在和一个SB说话。
所以我们吵起来的时候,可以先冷静下来想想我们是在沟通一件事情吗,各自的关注点是相同的吗。

目标一致吗

还拿上面的对话来看,程序员在考虑技术复杂度的时候,还没有明确是不是要做这么复杂;举例来说,做个读QPS=10000的系统,和做一个QPS = 1的系统复杂度是完全不同的,技术上实现成本也会有很大不同。回头来看这段对话,产品经理做这个产品的背景是什么,要解决什么问题,解决问题的意义是什么。这些需求背后的东西,产品经理如果能跟开发讲清楚,开发也认同的话,讨论起来更有效率。

再如,产品经理提出的功能只是面向email注册和手机注册的用户,而且有特殊的申请入口,分析下来也许只有10000个用户账号需要合并,那技术实现也许就不用考虑用户登录,要重构很多功能了。

是在就事论事吗

吵架最怕的就是相互人身攻击,相互说对方是SB,这样吵起来已经超过了工作。

吵架无论吵的再凶,底线都是就事论事,而不能直接人身攻击。

我们现在怎么讨论

现在团队内技术在产品review的时候一般会依次这样问:

  • 产品(各个产品模块)的目标、要解决的问题
  • 产品逻辑的整体流程
  • 产品对已有产品逻辑的影响,针对这种影响在产品层如何处理
  • 产品中各个功能的优先级
  • 产品的期望上线时间

每个问题只要回答有问题,技术上都会指出,也会从技术角度建议更合理的解决方案。