Facebook的工程师不见得将所有时间都花在写代码上面,有很多时间要用于思考、设计和跟产品经理的合作这些事情上。在整个产品开发过程中,工程师和产品经理所起的主导作用是60∶40,而对于后台系统则几乎是100∶0。
既然对工程师的素质要求这么高,那么他们的工作职责也会与一般的理解有所不同。在Facebook,工程师被当作公司发展的驱动力,在产品开发过程中扮演着引导性的角色。我们在很多公司里可以看到,工程师在很大程度上只是被当作一个执行者,由技术经理(EM)和产品经理(PM)来决定他要做什么。这一点,我在雅虎的时候就见识过了。雅虎的产品经理需要工程师在同意一个项目计划表之后在上面签字,工程师更多的是被外界压力驱使着,并非自我驱动去打造产品。Facebook则希望,从刚对某一产品进行方向性讨论、选择的时候,工程师就要尽可能地参与其中,提出自己的想法,工程师会参与从产品的构思、设计到打造的整个过程。在Facebook,很常见的情形是,工程师会花很多时间去思考产品为什么要这样做,既有20%~30%产品经理的心血,又有工程师的能力,可以用代码将想法实现,这种人最适合做产品工程师。
我在做“礼品商店”(Gift Shop)时,这个产品开发小组里,我是工程师,还有一个产品经理,一个设计师,我们三个人就经常在一起讨论究竟做什么功能、做成什么样、可行性有多大、做成这样要多长时间等问题。我们经常吵架,经常在一个小房间内待到晚上八九点。我们最后都会互相妥协,互相认同彼此的专业和强项,达成一个让人兴奋但也有点忐忑不安的方案。Facebook绝大多数产品都让人带有这种矛盾的心情,很少有“这样子一定能成功”的感觉。所有定稿的方案,都是当时我们尽力能想到的最好方案,“我们来试试吧”,然后通过数据的反馈继续改进。进行产品讨论时,每个人关注的侧重点可能不一样:要做成什么样,主导权在设计师,但其他人完全可以自由提意见。我要是不喜欢做出来的样子,我就会提出想改进的地方,让设计师重新修改一个版本;产品经理大多时候在想我们做出来的这些功能有哪些用户可能会用,这个功能究竟有没有意义,对于产品来说是不是最重要的,等等。比如对某个产品,我们可能先设想了十几项功能,但希望能在两周之内先推出最重要的前五个功能,那究竟怎么选优先度,这就需要工程师和产品经理、设计师进行讨论。对于工程师而言,这些讨论的结果会决定他们接下来几周忙活的内容,当然要积极参与并推动。
所以,Facebook的工程师不见得将所有时间都花在写代码上面,有很多时间要用于思考、设计、跟产品经理的合作这些事情上。据我了解,很多中国公司里,在整个产品开发的过程里,产品经理的影响力可能达到80%~90%,剩下部分才是工程师。而在Facebook,产品工程师跟产品经理影响力的比重可能是60∶40,而后台系统方面,由于产品经理绝大多数情况下不需要参与,除非是直接关系到前台系统,两者影响力的比重几乎到达100∶0。要知道,在Facebook很晚才单独设立产品经理这个岗位,大概是在2008年。最初的几位正式的产品经理,大多是从工程师角色转换过去的。公司确实想让工程师来主导产品开发,这样才能真正激起他们的责任感,围绕产品进行全方位思考,才能真正对自己开发的产品负责。
对于工程师主导产品开发的文化还体现在:每月的跨部门 会议上,由工程师来汇报工作进度,产品经理、市场部代表和营运部代表等会出席会议,也鼓励他们做简短的发言,但一般不会说得太多。开发某一产品时,如果想法起源于产品经理,那么产品经理需要去游说工程师,让他们对自己的想法产生兴趣,认同理念以致投入精力。对于产品功能优先度的选择,鼓励由工程师们做出决定,而技术经理和产品经理在了解、理解的前提下一般都会予以尊重。