为什么产品与技术沟通起来总是那么痛苦?

13 评论 8559 浏览 38 收藏 7 分钟

为什么产品与技术沟通起来总是那么痛苦?有时候你觉得很简单的一件事,在程序的世界里很有可能变得纷繁复杂。

编程语言,它终归是一门语言,只是它的使用者是电脑软件和硬件。

产品经理和程序员对于需求理解的思维体系、语言体系、语言上下文环境不同。

比如这个需求:一包中华45元,产目经理给你50元,让程序员去买包烟把找的5块钱拿回来。

产品经理觉得非常简单,一句话的事。

而对于程序员而言:

  • 50元是不是假钱?
  • 如果不是假钱,去哪买烟?
  • 如果去西安买烟,西安卖烟的地方关门了?是回去给产品经理说卖烟的地方关门了还是一直找,直到找到一个没有关门的卖烟的地方?
  • 如果这里的一包中华是40元,或者一包中华是50元,买不买?不管多钱都买?还是征求产品经理同意后再买?
  • 怎么判断买的烟不是假烟?还是不管真假买了一包中华就算?
  • 买了之后是邮寄给项目经理?还是自己给带回来?还是让顺道的同事给捎回去?
  • 如果买回来买的是50元一包的中华,产品经理嫌贵了怎么办?如果买回来的是40元一包的中华,是给产品经理退5元钱还是给他退10元?
  • 如果产品经理一定要45元的中华怎么办?
  • 如果产品经理突然不想要这烟了,让你退回去怎么办?
  • 如果卖烟的人不退怎么办?
  • 如果产品经理让你退了重新在别的地方买一包怎么办?
  • 如果卖烟的老王退了,但是再没有别的卖烟的地方了怎么办!
  • 如果又找到一个卖烟的地方,并且一包中华也是45元。带给项目经理。项目经理听说你是从西安买的,他要抽北京买的烟怎么办?

……

你会发现问题没完没了。

这会你可能会说程序员太死脑筋。错!产品经理所说的,中华45元,给你50元,买完找5元。这句话是建立在一系统上下文语境,人类生活习惯,生活常识当中的。产品经理的潜台词是说找最近的有卖烟的买一包45的不是假烟的中华烟,找的五块钱给我。

而对于程序语言,还是开头那句话:编程语言是一门语言,它的使用者是软件和硬件。对于计算机而言,它没有情感,不理解人类的这一系统语言环境,生活习惯,生活常识。

它只严格按照它的语言规则,编译原理一步一步,老老实实,丝毫不露地往下执行。

如果没有分歧,一切妥当。

如果有分歧,完蛋了。

人类千百万年来进化形成的临机应变,相机行事等等这些本能,计算机及编程语言一丁点不具备。它就认准程序员写的程序,就乖乖地听你程序,指哪打哪。

所谓的人工智能也只是程序员把每一种可能,人类面对问题所会面对的问题事先写好程序语言录入进计算机。

如果意外在之前所料之中,程序完美执行,如果意外所料不及,那就是BUG,就是错误。而这些BUG和错误都要程序员去一点一点补充产品经理所谓“需求”之外的所有潜台词。

这是在需求确定的情况下,如果程序员正在买烟的路上,产品经理打电话说,剩下5块钱回来再买瓶水。那之前所有的逻辑程序员又得再执行一遍。如果产品经理过一会又打电话说再买个面包。。。那就折腾死程序员了。

从需求方面说完,再从程序员编码实现方面来说。

还是刚才的需求:产品经理给程序员50元,让买一包45元的中华烟,找回来5元钱。

程序员一听,程序里面写死了,从线路1去西大街,买完烟再沿线路2返回。

但是中途产品经理说你再买点零食回来。

程序员傻眼了!!!

得,只能程序重新设计,从线路2出发。

试想,从初中开始学英语,初中三年,高中三年,大学四年,十年下来,有几个人能面对外国人说一口标准的英语?

编程语言也一样,有些程序员大学没好好研究编程,或者根本不是计算机系,上过几天培训班,知道编程是怎么一回事,会写if/else/for,就业所迫,就开始商业编程了。

写程序必然是指哪打哪,别的情况我不管。

这样的程序,脆弱的不敢碰,一有改动就是要性命啊。

最后一方面是:国内软件开发,开发流程不完善。有活就赶紧埋头干,干了不对再说。最终需求理解不到位,项目周期比火车还长,项目成本居高不下。

有时候拖着下巴想想,编程真是一门艺术活。

 

作者:莫西儿

来源:知乎

链接:https://www.zhihu.com/question/40712955/answer/88072793

本文为作者@莫西儿 在知乎《如何向外行解释产品经理频繁更改需求为什么会令程序员烦恼?》问题下的回答,本文已获作者授权。

题图来自PEXELS,基于CC0协议

更多精彩内容,请关注人人都是产品经理微信公众号或下载App
评论
评论请登录
  1. 怪不得大多数程序员叫码农,一点没告诉到就大喊大叫;要原型的时候,恨不得当天就要给他;急急忙忙画完了原型和ui,该他们写代码了,自己在那划水,还有借口说产品设计的不合理,老板也会觉得是产品的锅;我tm1天做的原型,能想的多周全!我把要实现的效果已经告诉你,怎么建表需要什么字段一个不落全都要告诉你?干脆我自己写得了。

    来自江苏 回复
  2. 产品最好是有一年的技术经验

    回复
    1. 这一年的技术经验都能了解到什么呢?

      来自北京 回复
    2. 你觉得要几年的技术经验呢?还是不要技术经验?

      来自四川 回复
    3. 我认为需要技术经验,不知道这个时间长短,时间短了也不能了解到多少呀,完了心态还不一样了,觉着自己做过研发写起需求来更肆无忌惮了

      来自北京 回复
  3. 这就是异常场景分析处理了,这些我一般在搞业务流程图的时候考虑到方方面面,我一般是参照友商产品对比分析,以及想尽办法还原场景给出对应的处理,但是即使是这样还是会漏掉一些,程序员能提出来问题我觉得很好可以查漏补缺。

    来自广东 回复
  4. 如果产品和技术这么简单描述的话,肯定会被打死的;很多情景和异常情景都得提前想好了······

    来自北京 回复
  5. 举例不恰当。正向流程、逆向流程、异常处理机制……等等,这些东西都是产品经理需求去设计的,而不是直接扔给开发。
    感觉你举例子是典型的一句话需求,经常遇到的是业务口提给产品的需求。别说开发了,产品听了都想打人 😮

    来自广东 回复
    1. 业务提给产品的需求总是这么简单明了,不管不顾的

      来自北京 回复
    2. 产品的工作就是梳理需求,业务方可以直接告诉研发一句话。研发就去做的话,还要你这个传话的产品做什么捏。 🙂

      来自四川 回复
    3. 嘿嘿 说的有道理,之前看到一句话,好的产品就是抗领导层的压力然后传给研发一个完善的可执行方案,一看就是经历过什么才能说的出来

      来自北京 回复
    4. 业务提需求,产品来理需求,再把有疑虑的地方跟业务核实,难道不是产品价值的体现吗?如果业务都能把需求提清楚了,产品早就沦为文职工作了

      来自四川 回复
    5. 来自上海 回复