(转)从“产品经理让程序员买包中华”这个需求说起

产品经理和程序员对于需求理解的思维体系、语言体系完全不同。

比如有个需求: 一包中华45元,产品经理给你50元,让程序员去买包烟把找的5块钱拿回来。 产品经理觉得非常简单,一句话的事。

而对于程序员而言会想很多: 50元是不是假钱? 如果不是假钱,去哪买烟? 如果去报刊亭买烟,报刊亭关门了?是回去给产品报告还是一直找? 如果这里的一包中华是40元,或者一包中华是50元,买不买?不管多少钱都买?还是征求产品经理同意后再买? 怎么判断买的烟不是假烟?还是不管真假买了一包中华就算? 买了之后是邮寄给产品经理?还是自己给带回来?还是让顺道的同事给捎回去? 如果买回来的是50元一包的中华,产品经理嫌贵了怎么办? 如果买回来的是40元一包的中华,是给产品经理退5元钱还是0元? 如果产品一定要45元的中华怎么办? 如果产品经理突然不想要这烟了,让你退回去怎么办?如果卖烟的人不退怎么办? 如果产品经理让你退了,重新在别的地方买一包怎么办? 如果卖烟的老王退了,但是再没有别的卖烟的地方了怎么办! 如果又找到一个卖烟的地方,并且一包中华也是45元,带给产品经理 产品经理听说你是从报刊亭买的,他要抽7-ELEVEn买的烟怎么办? …… 你会发现问题没完没了

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

而程序员天天和计算机打交道,计算机它没有情感,不会理解人类的语言环境,生活习惯,生活常识。程序只会严格按照它的语言规则,编译原理一步一步,老老实实地往下执行。如果没有分歧,一切妥当;如果有分歧,完蛋了。

人类进化形成的随机应变,见机行事等这些本能,计算机及编程语言都不具备,它就认准程序员写的程序,乖乖地听你程序,指哪打哪,这是在需求确定的情况下。

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

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

image

但是正当程序员沿着线路2返回途中,产品经理说再买点零食回来,程序员就傻眼了!!!只能程序重新设计沿线路2再出发去买零食。

有时候这么一想,编程真是一门艺术活