做个懂产品的程序员

程序员和产品经理之间的关系

在很多公司里,程序员和产品经理是“铁路公安各管一段”,程序员只管实施,根本不关心也不用关心产品给谁用,怎么用;而产品经理只管规划,根本不关心技术上能不能实现,实现代价多大。

程序员就像瞎子,只会走路不会看路;产品经理就像跛子,只会看路不会走路。所谓分工协作,就是跛子指挥瞎子,大家一起逃命。


但产品是个有机的整体,而“逃命”只是个简单的、目的明确的短期行为,跛子-瞎子这种的配合,即便真能逃命,也不适合做产品。

如何做出好的产品

程序员和产品经理对于最终目标的认识必须相当一致,而且必须打破“井水不犯河水”的分工局面。

在最终目标认识一致的前提下,产品经理必须有技术思维,必须了解哪些能实现,哪些不能实现,怎样实现起来困难,怎样实现起来容易;程序员也必须有产品思维,能超越单纯的实现,从更广阔的角度去理解和看待自己的工作。

程序员为什么要有产品意识

第一,优秀的产品经理是非常少的。

当产品经理既需要天赋,也需要训练,他起码应当具备严密的思维,在产品尚未开发出来之前,可以在大脑里全面地推敲;具备良好的沟通能力,能将关于产品的设想和规划准确传达给相关各方;具备一定的数据分析能力,以便客观判断用户的反馈;如果再加上一点技术背景,就更好了。不幸的是,目前这样的产品经理少之又少,相当部分的产品经理都是拍脑袋派(我想到了,这个应该这么办)、唯上派(不管有没有道理,这是老板的要求),甚至就干脆就是“功能经理”。

如果程序员没有产品意识,又不幸与这样的产品经理搭配工作,结果往往稀里糊涂就掉到坑里,更重要的是,连反思提高的余地都没有。

第二,产品经理是不能面面俱到的。

一款产品必然有许多个层面和方面,最终都是由程序员(开发人员)一点点完成的,产品经理即便涉及了实现过程,也不可能事无巨细、处处负责。而用户对产品的体验是全方位的,许多细节可能产品经理注意不到、想不到,用户却可能非常在意。如果负责实现的工程师在这些方面多一点思考,通常可以起到锦上添花甚至更重要的作用。

第三,开发工作其实是更广义的“产品”的一部分。

好的产品离不开好的开发,局限于好的开发却不能保证有好的产品。这里不妨对大家都熟悉“三个工匠”的故事做个变通:城市由设计师规划,工匠只负责砌砖,但是只甘心于自己干活对外不闻不问的工匠,与知道“这是美丽城市一部分”而思考的工匠相比,后者营造出美丽城市的可能性显然更高,工作所创造的价值也更大。

所以,如果程序员想做出一款用户满意的产品,与其期待遇到巨细靡遗的靠谱的产品经理,还不如培养自己的产品意识,超越单纯的实现去思考问题。

如何培养产品意识

多思考“谁会在什么情况下怎么使用我的产品”,都会有不小的进步。