IT阅读——关于“业务”
本文转自http://www.cnblogs.com/beijiguangyong/archive/2012/11/12/2767054.html
开发当中常常听说“业务”这个词,什么“业务为王”之类的词不绝于耳,那么什么是业务?
百度上的解释是:“‘业务’更白话一些来说,就是各行业中需要处理的事务……”。软件开发的目的就是利用计算机帮助人们完成自己工作中的事务,可见业务对于软件开发来说多么的重要,也就是说只有把业务搞清楚了才能进行软件开发,否则一切都是空中楼阁。
那么到底什么是业务,怎样才能搞清楚业务?
听到的故事
一个农民出钱请科学家帮一忙,农民的要求很简单,请科学家让自己家耕地的牛吃的是平时的十分之一,干的活是平时的十倍。然后科学家开始想办法,最终得到的结论是:要满足农民朋友的需求就必须改变牛的基因,于是科学家们开始了这个宏大的生物工程……
随着时间的推移最终的结果大家一定能猜到,科学家硬着头皮做了几天的转基因实验,最终这个工程因为经费不足而告终,农民也没有实现自己提高生产率的愿望。
真实的一面:从表面看来农民朋友想要的是一头基因优秀的牛,这头牛吃的少干的多,但是实际上呢,农民想要的只是一台拖拉机而已。但是起初的时候农民不知道有拖拉机这么个东西,也就是说他自己也不知道自己要的什么,他知道的仅仅是非根源性的需求(让牛吃的少干的多),于是非根源性的需求就把科学家带到了迷途当中。
反思:类比到项目开发中,我们就是科学家,客户就是农民,项目就是牛或者拖拉机。我们要站在客户的角度,要知道客户需要的到底是什么,是一头基因优秀的牛还是一个普通的拖拉机。
什么是业务
到这里我们就应该好好的思考一下什么是业务了,是农民那高不可攀的需求算业务,还是转换思路给农民一台拖拉机算业务。
我们的客户可能常常要求我们在开发中完成一些不可能的事情,(笔者就遇到很多,比如有的客户竟然提出将页面上的复选框改变颜色,甚至于将复选框的选中样式变为打钩、打叉、画圈等等。)其实客户这么说是没有问题的,毕竟他们是客户,他们没有计算机知识。他们提出这样的要求一定有他们的理由,但是如果开发者不问缘由,跟着客户的思路走下去,那就和上面的例子没有区别了,最终的项目只能以失败而告终。
关于什么是业务,笔者自己的理解是:某个行业中的事务抽象到计算机中才叫业务,没有抽象那只能叫事务或者一系列操作。回到上面的例子当中,帮助农民朋友研究转基因牛不能叫业务,从农民的需求当中抽象出他真正想要的(这里指拖拉机)才是业务。
怎样搞清楚业务
客户懂“业务”么?严格的说客户们其实不懂业务,客户知道的只是应该怎样干活而已。所以这就解释了为什么任何人经过培训之后都可以胜任自己的工作(这里指任何行业),只不过有人干的快,有人干的慢,这取决于熟练程度、天赋等等各种因素。比如银行的收纳人员,比如公务员等等,除了那些高端的工作,比如航天事业,其他的行业经过一段时间的培训或者磨练人人都可以(老实说从事高端的工作也是可以经过培训上手的,只不过高端的工作需要花费更长的时间培训而已)。
客户知道自己工作的一系列操作流程,用百度百科里面的话说就是:客户知道自己行业当中的各个事务。但是客户不知道具体应该怎样用计算机帮助自己处理这些事务(就像农民朋友不知道拖拉机一样,他根本不知道有这么一回事)。所以当客户提出我们理解不了的需求的时候我们应该好好去研究客户为什么要提出这样的需求,而不是对客户的要求听之、任之、从之……。
所以说
作为项目经理或者开发者要从客户的需求当中抽象出客户到底需要什么,并不是客户要什么就直接给什么,只有做到了这一点这才算是一个懂业务的开发者,一个高级开发者,一个非纯粹的开发者,一个脱离了低级趣味的开发者:)。
IT阅读——关于“业务”的更多相关文章
- Serverless架构详解:开发者如何专注于业务代码本身?
本文来自腾讯云技术沙龙,本次沙龙主题为Serverless架构开发与SCF部署实践 演讲嘉宾:黄文俊,曾负责企业级存储.企业级容器平台等产品的架构与开发,目前主要负责SCF腾讯无服务器云函数产品相关. ...
- DDD 领域驱动设计-在动手之前,先把你的脑袋清理干净
惨不忍睹的翻译 英文原文:http://www.codeproject.com/Articles/339725/Domain-Driven-Design-Clear-Your-Concepts-Bef ...
- Monad 在实际开发中的应用
版权归作者所有,任何形式转载请联系作者. 作者:tison(来自豆瓣) 来源:https://www.douban.com/note/733279598/ Monad 在实际开发中的应用 不同的人会从 ...
- 如何运用DDD - 实体
目录 如何运用DDD - 实体 概述 何为实体 似曾相识 你确定它真的需要ID吗 运用实体 结合值对象 为实体赋予它的行为 尝试转移一部分行为给值对象 愿景是美好的 现实是残酷的 总结 如何运用DDD ...
- 用c#开发微信 (12) 微统计 - 阅读分享统计系统 2 业务逻辑实现
微信平台自带的统计功能太简单,有时我们需要统计有哪些微信个人用户阅读.分享了微信公众号的手机网页,以及微信个人用户访问手机网页的来源:朋友圈分享访问.好友分享消息访问等.本系统实现了手机网页阅读.分享 ...
- Netty 源码阅读的思考------耗时业务到底该如何处理
目录大纲: 前言 处理耗时业务的第一种方式-------handler 种加入线程池 处理耗时业务的第二种方式-------Context 中添加线程池 总结:两种方式的对比和思考 前言 熟悉 Net ...
- 《京东B2B业务架构演变》阅读笔记
一.京东 B2B 业务的定位 让各类型的企业都可以在京东的 B 平台上进行采购.建立采购关系. 京东 B2B 的用户群体主要分为 2 类: 一类是大 B 用户.另一类是小 B 用户.京东 B 平台需要 ...
- 《京东B2B业务架构演变》阅读
转载:https://mp.weixin.qq.com/s/5xmmuw8O-I_Fi5bzE-_baA?tdsourcetag=s_pcqq_aiomsg 京东 B2B 业务的定位是让各类型的企业都 ...
- DDD 领域驱动设计-看我如何应对业务需求变化,愚蠢的应对?
写在前面 阅读目录: 具体业务场景 业务需求变化 "愚蠢"的应对 消息列表实现 消息详情页实现 消息发送.回复.销毁等实现 回到原点的一些思考 业务需求变化,领域模型变化了吗? 对 ...
随机推荐
- QA
QA:Quality Assurance,品质保证 IDQA:Individual Document Quality Assurance 设计品质保证 QE:Quantitative Easing 质 ...
- codeforces500B
New Year Permutation CodeForces - 500B User ainta has a permutation p1, p2, ..., pn. As the New Year ...
- codeforces278A
Circle Line CodeForces - 278A 郑州地铁的圆线有n个车站. 我们知道所有邻近站点之间的距离: d[1]是第1站和第2站之间的距离;d[2]是第2站和第3站之间的距离;… d ...
- java 获取 T.class
转载:http://www.hankcs.com/program/t-class.html @Test public void Test() throws Exception{ Foo<User ...
- ef 仓储模式
构建一个仓储模式. Model 大家自己创建就行了,上个图,就不多说了(我是code first) IDAL namespace IDAL { public interface IBaseReposi ...
- Hibernate表关系03
一. 一对多映射 1.基本应用 1.1 准备项目 创建项目:hibernate-02-relation 引入jar,同前一个项目 复制实体(客户).映射.配置.工具类 1.2 创建订单表 表名: t_ ...
- day31 configparser 配置文件模块
#__author__: Administrator #__date__: 2018/8/8 # configparse 生成配置文件,配置文会以件.ini结尾 # 对于格式有要求 # 创建配置文档 ...
- 删除linux下的指定文件
要求:删除linux下2天前的指定文件 find 文件问题:在 tmp 目录下有大量包含 picture_* 的临时文件,每天晚上 2:00 对一天前的文件进行清理.之前在 crontab 下跑如下脚 ...
- Leetcode 26.删除排序数组中的重复项 By Python
给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成. 示例 1 ...
- cf1000C Covered Points Count (差分+map)
考虑如果数字范围没有这么大的话,直接做一个差分数组就可以了 但现在变大了 所以要用一个map来维护 #include<bits/stdc++.h> #define pa pair<i ...