程序员与产品经理的“恩怨情仇”
前一段时间,某互联网金融公司的程序员与产品经理打架的视频在网上广为流传,引发外界的广泛关注和讨论。
程序员与产品经理扭打在一起当视频流出后,公司为了消除不良影响,对两个人各打五十大板,以扰乱公司正常秩序为由将两人开除。
开除通报至于打架的原因未知,但肯定是发生了不可调和的矛盾。基于两人的角色分别是程序员和产品经理,于是有经验的人虚构了一个令程序员们信服的可能场景:
难以实现的需求和不可抗拒的行政命令从上面的场景中可以看出产品经理与程序员在产品的功能定义方面产生严重分歧,产品经理从产品出发坚持自己的创意:“主题颜色随着手机壳颜色变化而变化”, 而对程序员提出的技术无法实现不管不顾;程序员则从技术实现出发,提出无法实现功能定义:“主题颜色随手机壳颜色变化而自动变化” 。当两者发生冲突时,产品经理祭出了“尚方宝剑” - 老板已经拍板了,马上要做 !如果说之前的分歧是工作中的常态, 而这个 “尚方宝剑” 显然成了压死骆驼的最后一根稻草 - 程序员 “炸了” , 两人随即爆发了“战争”。
其实,在 IT 界产品经理与程序员之间的矛盾不是什么秘密,我认为两者之间的矛盾跟产品的流程有很大的关系:
产品流程 产品周期由上图中产品经理 (PM) 与程序员所处的不同层次,导致两者产生诸多矛盾:
产品定义与技术实现脱节
在传统的项目开发中,程序员处在流程最底层。在早期产品定义与可行性分析阶段,如果产品经理不懂技术,又没有架构师或者程序员参与产品定义的可行性分析,很可能导致产品定义无法通过现有技术实现,或者即使能够实现但经济成本比较高,研发周期比较长,导致最终产品无法按期交付,项目最终失败。
而程序员与产品经理两者思维差别更有可能加剧矛盾。程序员往往从技术出发,缺乏产品思维,无法灵活实现技术需求;而产品经理往往从公司的战略,客户需求出发,很少考虑程序员技术实现可行性与实现难度,如果两者不能有效配合,将很容易导致产品失败。而解决方法就是程序员需要一点产品思维,产品经理需要懂点技术,两者相互配合才是项目成功的基础。
需求频繁变更
有一个段子描述项目变更似乎很贴切:
程序猿跟产品经理一起看电视。每个节目看到一半程序猿就换台,看到一半就换台,几次之后产品经理终于忍无可忍的咆哮:老子刚看出点意思你就换、刚看出点意思你就换,到底还让不让人看啦?!程序猿淡定的盯着电视道:你半路[改需求]的时候我可没吱过声!
其实,产品经理的职责除了定义产品核心功能外,还要确定项目的“边界” ,类似一个定义的内涵和外延一样,边界意味着产品具体的实现点。好的产品经理需要控制好产品边界,否则频繁需求变更会影响产品的开发周期,甚至是进度失控,最终导致产品失败。