为何产品与技术沟通起来老是那么痛苦?有时候你以为很简单的一件事,在程序的世界里颇有可能变得纷繁复杂。程序员
编程语言,它终归是一门语言,只是它的使用者是电脑软件和硬件。编程
产品经理和程序员对于需求理解的思惟体系、语言体系、语言上下文环境不一样。编程语言
好比这个需求:一包中华45元,产目经理给你50元,让程序员去买包烟把找的5块钱拿回来。编码
产品经理以为很是简单,一句话的事。人工智能
而对于程序员而言:设计
·50元是否是假钱?3d
·若是不是假钱,去哪买烟?blog
·若是去西安买烟,西安卖烟的地方关门了?是回去给产品经理说卖烟的地方关门了仍是一直找,直到找到一个没有关门的卖烟的地方?开发
·若是这里的一包中华是40元,或者一包中华是50元,买不买?无论多钱都买?仍是征求产品经理赞成后再买?产品
·怎么判断买的烟不是假烟?仍是无论真假买了一包中华就算?
·买了以后是邮寄给项目经理?仍是本身给带回来?仍是让顺道的同事给捎回去?
·若是买回来买的是50元一包的中华,产品经理嫌贵了怎么办?若是买回来的是40元一包的中华,是给产品经理退5元钱仍是给他退10元?
·若是产品经理必定要45元的中华怎么办?
·若是产品经理忽然不想要这烟了,让你退回去怎么办?
·若是卖烟的人不退怎么办?
·若是产品经理让你退了从新在别的地方买一包怎么办?
·若是卖烟的老王退了,可是再没有别的卖烟的地方了怎么办!
·若是又找到一个卖烟的地方,而且一包中华也是45元。带给项目经理。项目经理据说你是从西安买的,他要抽北京买的烟怎么办?
……
你会发现问题没完没了。
你可能会说程序员太死脑筋。错!产品经理所说的,中华45元,给你50元,买完找5元。这句话是创建在一系统上下文语境,人类生活习惯,生活常识当中的。产品经理的潜台词是说找最近的有卖烟的买一包45的不是假烟的中华烟,找的五块钱给我。
而对于程序语言,仍是开头那句话:编程语言是一门语言,它的使用者是软件和硬件。对于计算机而言,它没有情感,不理解人类的这一系统语言环境,生活习惯,生活常识。
它只严格按照它的语言规则,编译原理一步一步,老老实实,丝绝不露地往下执行。
若是没有分歧,一切稳当。
若是有分歧,完蛋了。
人类千百万年来进化造成的临机应变,相机行事等等这些本能,计算机及编程语言一丁点不具有。它就认准程序员写的程序,就乖乖地听你程序,指哪打哪。
所谓的人工智能也只是程序员把每一种可能,人类面对问题所会面对的问题事先写好程序语言录入进计算机。
若是意外在以前所料之中,程序完美执行,若是意外所料不及,那就是BUG,就是错误。而这些BUG和错误都要程序员去一点一点补充产品经理所谓“需求”以外的全部潜台词。
这是在需求肯定的状况下,若是程序员正在买烟的路上,产品经理打电话说,剩下5块钱回来再买瓶水。那以前全部的逻辑程序员又得再执行一遍。若是产品经理过一会又打电话说再买个面包。。。那就折腾死程序员了。
从需求方面说完,再从程序员编码实现方面来讲。
仍是刚才的需求:产品经理给程序员50元,让买一包45元的中华烟,找回来5元钱。
程序员一听,程序里面写死了,从线路1去西大街,买完烟再沿线路2返回。
可是中途产品经理说你再买点零食回来。
程序员傻眼了!!!
得,只能程序从新设计,从线路2出发。
试想,从初中开始学英语,初中三年,高中三年,大学四年,十年下来,有几我的能面对外国人说一口标准的英语?
编程语言也同样,有些程序员大学没好好研究编程,或者根本不是计算机系,上过几天培训班,知道编程是怎么一回事,会写if/else/for,就业所迫,就开始商业编程了。
写程序必然是指哪打哪,别的状况我无论。
这样的程序,脆弱的不敢碰,一有改动就是要性命啊。
最后一方面是:国内软件开发,开发流程不完善。有活就赶忙埋头干,干了不对再说。最终需求理解不到位,项目周期比火车还长,项目成本居高不下。
有时候拖着下巴想一想,编程真是一门艺术活。