本文转自http://www.cnblogs.com/beijiguangyong/archive/2012/11/12/2767054.html
开发当中常常听说“业务”这个词,什么“业务为王”之类的词不绝于耳,那么什么是业务?
百度上的解释是:“‘业务’更白话一些来说,就是各行业中需要处理的事务……”。软件开发的目的就是利用计算机帮助人们完成自己工作中的事务,可见业务对于软件开发来说多么的重要,也就是说只有把业务搞清楚了才能进行软件开发,否则一切都是空中楼阁。
那么到底什么是业务,怎样才能搞清楚业务?
听到的故事
一个农民出钱请科学家帮一忙,农民的要求很简单,请科学家让自己家耕地的牛吃的是平时的十分之一,干的活是平时的十倍。然后科学家开始想办法,最终得到的结论是:要满足农民朋友的需求就必须改变牛的基因,于是科学家们开始了这个宏大的生物工程……
随着时间的推移最终的结果大家一定能猜到,科学家硬着头皮做了几天的转基因实验,最终这个工程因为经费不足而告终,农民也没有实现自己提高生产率的愿望。
真实的一面:从表面看来农民朋友想要的是一头基因优秀的牛,这头牛吃的少干的多,但是实际上呢,农民想要的只是一台拖拉机而已。但是起初的时候农民不知道有拖拉机这么个东西,也就是说他自己也不知道自己要的什么,他知道的仅仅是非根源性的需求(让牛吃的少干的多),于是非根源性的需求就把科学家带到了迷途当中。
反思:类比到项目开发中,我们就是科学家,客户就是农民,项目就是牛或者拖拉机。我们要站在客户的角度,要知道客户需要的到底是什么,是一头基因优秀的牛还是一个普通的拖拉机。
什么是业务
到这里我们就应该好好的思考一下什么是业务了,是农民那高不可攀的需求算业务,还是转换思路给农民一台拖拉机算业务。
我们的客户可能常常要求我们在开发中完成一些不可能的事情,(笔者就遇到很多,比如有的客户竟然提出将页面上的复选框改变颜色,甚至于将复选框的选中样式变为打钩、打叉、画圈等等。)其实客户这么说是没有问题的,毕竟他们是客户,他们没有计算机知识。他们提出这样的要求一定有他们的理由,但是如果开发者不问缘由,跟着客户的思路走下去,那就和上面的例子没有区别了,最终的项目只能以失败而告终。
关于什么是业务,笔者自己的理解是:某个行业中的事务抽象到计算机中才叫业务,没有抽象那只能叫事务或者一系列操作。回到上面的例子当中,帮助农民朋友研究转基因牛不能叫业务,从农民的需求当中抽象出他真正想要的(这里指拖拉机)才是业务。
怎样搞清楚业务
客户懂“业务”么?严格的说客户们其实不懂业务,客户知道的只是应该怎样干活而已。所以这就解释了为什么任何人经过培训之后都可以胜任自己的工作(这里指任何行业),只不过有人干的快,有人干的慢,这取决于熟练程度、天赋等等各种因素。比如银行的收纳人员,比如公务员等等,除了那些高端的工作,比如航天事业,其他的行业经过一段时间的培训或者磨练人人都可以(老实说从事高端的工作也是可以经过培训上手的,只不过高端的工作需要花费更长的时间培训而已)。
客户知道自己工作的一系列操作流程,用百度百科里面的话说就是:客户知道自己行业当中的各个事务。但是客户不知道具体应该怎样用计算机帮助自己处理这些事务(就像农民朋友不知道拖拉机一样,他根本不知道有这么一回事)。所以当客户提出我们理解不了的需求的时候我们应该好好去研究客户为什么要提出这样的需求,而不是对客户的要求听之、任之、从之……。
所以说
作为项目经理或者开发者要从客户的需求当中抽象出客户到底需要什么,并不是客户要什么就直接给什么,只有做到了这一点这才算是一个懂业务的开发者,一个高级开发者,一个非纯粹的开发者,一个脱离了低级趣味的开发者:)。