工作的一个最基本要求就是专业分工。依靠程序员懂产品经理的职责,或者反过来都是耍流氓。
双方交恶的更本质的原因一般不在改需求本身,专业程序员不会反对改需求,一般的原因在于不相信程序员的专业性,举个例子,你要改动一个登录页面的流程,程序员告诉你,这个功能要两周才能做完,你说不行,一周必须做完。这样就没办法沟通了,不写程序的人决定一个程序多少时间写完(注意我说的是决定),这是很荒唐的一件事。一般的结果是闹到老大那里去,最后加班(加班从来也不是一种专业的表现)。
专业的产品经理不应该用功能的产生原因来说服程序员,这不是程序员应该关心的事,如果程序员关心这事,很好。但这不能起决定作用。同理,程序员认为产品经理需要懂写程序也是算流氓
产品的功能由产品经理负责,所以产品经理就应该有权利决定做什么功能。功能由程序员实现,所以程序员有权利决定做多少时间。
但是现实中这两者总是存在冲突。靠谱的做法是协商,比如上边那个例子,你应该说明一周做完的原因在哪,比如一周后有客户要看演示,那可能的解决方案就是既然是演示,那么就做一个不对错误进行校验的版本。
在这个产业干了这么多年,真心希望多一些有专业素养的人。可惜总是满满的各种悲剧。实在是有太多不合格的程序员了。
因为我本人是程序员,所以这里可能大部分是程序员视角。
增补一些吧
首先,我从头到尾没有说程序员不能去关心产品的问题,相反,程序员去学习一些产品的问题是非常好的问题。我说的是,程序员不应该以自己对产品的理解去否定产品经理的要求。你可以提意见,但不起决定作用。
程序员和产品经理的问题其实就是,一个要需求,一个要时间来实现。在完美的世界里,需求正好能在需要的时间里实现,那自然皆大欢喜。现实世界中,总会出现两者不相匹配的情况。直面这个问题才有可能和谐相处
有很多所谓的解决方案,都只是转移这个问题,比如老板拍板,加入项目经理,甚至说应该产品经理和程序员是同一个人。就拿最后一个来说,就算你们是同一个人了,这时候你像要一个超酷超炫的功能,然后发现程序实现起来要一年,然后呢,你有两种解决方案,自己跟自己协商,想办法得到一个自己能认可的方案。另一个种方案就是自己不停的和自己吵架,光荣的迈向分裂的道路。
程序员与产品经理也好,程序员与项目经理也好,甚至程序员与老板也好。先明白问题是什么,以及可能的解决方案是什么,这才是和谐相处的唯一可能性。
6楼 @freecunix 哪来的什么视角不同,产品只需要对产品的功能负责,程序员只需要对这个功能能不能实现负责。行就是行,不行就是不行。程序员必须知道一个东西能不能实现,以及实现的成本,如果一个功能必然实现不了,那找谁拍板都没用。不管你多有权势,做不出就是做不出。要做多少时间就是多少时间。不相信这一点的人,就是我里边说的无法相处的根源:不相信对方的专业性。不要以懂为理由,懂和做有十万八千里的距离,请问是不是你写程序,写不出来是不是你负责。
你自己把程序员,产品经理代换成其他专业人士,比如建筑师,医生,律师,再想想自己的想法是不是不靠谱。
如果程序员不知道一个功能能不能做出来,需要多少时间,那是程序员不专业的直接表现。
况且老板拍板怎么就不能协商了。
程序员往往觉得一个功能实现太复杂,而有不带来更好的体验,
这个就超越了程序员的职责了,你可以提意见,但是不重要。程序员只该关心实现这个功能的成本,并给出这个功能的成本,能不能带来好的体验,和程序员的工作没有关系。当然你可以提意见,但是不起决定作用。
如果程序员以不能带来更好的体验去反驳产品经理,这就是不专业的体现。
我们需要专业分工,你可以懂别人领域,提出意见,但是你不能以此来说服对方,因为对方在这个领域才是专业人才,如果搞砸了,是别人要承担责任,不是你。
产品的体验好与否,和程序员无关。(记住,这里说无关并不是鼓励你不去关心这个问题,事实上一个程序员去了解点产品的知识总是有好处的,但是这个不能拿去当论据,这不是你的工作职责)
程序员拒绝一个功能的理由有且只有一个:这个功能程序上无法实现,我说的是绝对无法实现。
他就会觉得这么简单2天就行呀。。
这个就是产品经理越界的表现了。他可以建议可能什么样的做法两天能做完,而不能以此要求你必须两天做完。
明确上下级,官大说了算,只是回避问题,不是解决问题。事情做不完还是做不完,不会因为一个老大出来说了算,事情就很神奇的做完了。
每天卖力10小时,2天还干不完他也不能枪毙你,也算是你对得起大家了。
这是一个程序员没有负责任的直接表现,你作为一个专业人员,要对自己能做的事给出承诺,承诺就是一定要做到,做不到就要承担责任。同时你也有义务在自己不能完成一件事的时候,用一切办法指出来,让所有人明白这样行不通,哪怕意味着你得越级找更高的人说明事情。
阳奉阴违的认为,反正做不出来也不会把我怎么样,产品最后失败了,那就是所有人跟着你倒霉。
我来说说的的想法吧 我是CS本科毕业 在WP和Bing做过PM 现在在Xbox
作为CS专业毕业的PM 我一直以Technical PM自居 大家都知道我跟Dev/Test的关系比我跟PM peers和老板的关系要密切 在日常的工作中 我试图去让自己不光懂product 还懂product code 我会读code review, fix bugs, test, 也经常会写一些小的feature 你可能认为这是PM不务正业 但我看来是我自己学习product的一个很好的方法 同时也让我赢得了dev/test的信任 他们知道我不是对code一窍不通 也愿意跟我一起讨论技术问题 如果我们对时间的估算 计划的规划有不同意见 他们会愿意跟我深入的解释他们为什么这么想 而不是说我什么都不懂也没法跟我解释
结果就是 当我几次换部门的时候 Dev/test都愿意甚至希望跟我一起走 在我看来 这就是一个PM做的最成功的表现之一了