Michael Chen's Blog

World in my view is a word of my view.
随笔 - 74, 评论 - 235 , 引用 - 374

当微操作遇上刺蛇海

StarCraft游戏初期,神族高级玩家一般喜欢在出了一两个狂热者就带上一个农民出发,利用优秀的微操作能力很可能推倒一些心理素质不太好的Player,尤其是对付虫族的小狗,如果操作得当,两个狂热者往往可以消灭掉6~8个小狗。然而这一战略如果用过了头,比如,在刺蛇海面前,再优秀的微操作马上变得可笑。在一次国内的比赛中,我曾经看到过这样一场悲壮的比赛。

有一句话说得很对:先做正确的事,然后正确地做事。如果把大型项目比喻为刺蛇海,那么我们无论如何都不能在这样庞大的攻势面前傻乎乎的用某一两个“设计模式”、“PoEAA”或者“Core J2EE Patterns”这样的微操作。原因很简单,在业务架构尚不清晰的情况下,盲目的用小规模的技术组件来套用是愚蠢的做法。我经常听到不成熟的程序员这么在说:晤,这里可以用状态模式,嗯,那里可以用解释器模式。问问他是否真正明白业务的需求,他一脸茫然。当目标从一开始就错误的时候,再优雅的设计得到的顶多是一堆优雅的垃圾。

那么,正确的事是什么?是正确评估分析你的业务。业务架构是技术架构的基础,业务语义是技术语义存在的前提。这个问题之所以没有被得到重视,是因为我们现在做的大多数系统都还比较简单,我以前做过的项目基本上用事务脚本便可以解决,通过数据库的增删改查从而完成特定功能;在此基础之上建立了一系列技术组件,比如OA, 工作流,CMS。在分析项目的时候,将功能需求往已有的技术组件上套,然后用不太先进的技术完成了一个又一个的项目。因此我说,项目成功的保证一定不是所采用的技术,而是对业务的理解程度。

我们比较不幸。客户越来越成熟,对信息系统所能带来的生产力期望值越来越高(政府项目除外)。大量的旧的系统如电力,金融等,开始被迁移到J2EE平台。J2EE平台技术的成熟并不等同于业务的成熟,当一个系统膨胀到刺蛇海的规模时,当功能需求书堆起来一米多厚、功能错落有致、交叉相连时、就是这样也不足以描述需求时,那么技术方面的某些小小的微操作、模式就像是刺蛇海面前可怜的狂热者,潇洒却凄凉;又如同印尼海啸面前“坚固”的漂亮的海边别墅,不堪一击。在对这样大的项目进行分析的时候,业务是最重要的。将业务分析清楚才是正确的事,而不是上来就往J2EE N层模式上套。放之四海皆准的方案,往往可行性、操作性成问题。只有当业务分析清楚了,业务功能之间的联系也分析清楚了,怎么做就变成了很简单的事情:无论你怎么做,代码写的多么难看,只要完成功能,你做的事情都决不是Dirty work.

然而,业务分析也太艰难:当你面对一个具有十几个子系统、几千种交易、数百种工作流、子系统功能之间纵横交错的时候,没有业务知识和技术知识的双重修炼,这件事情无异于mission impossible. 这方面,我想才是自己需要修炼的一个方向。Raimundo同志正在进行这方面的研究,希望能够有所建树。

稍微有点高兴的是,目前我们接触到的项目大部分并不庞大,大部分都能够进行归类,比如简单的业务逻辑普通的增删改查就能完成,复杂一些的加上工作流支持;大一些的公司有能力对这些操作进行积累,称之为“技术组件”,因此某些以构件为核心的解决方案(公司)抢到了许多订单。从一段时间趋势来看,这种方式也是目前最可行的一种方式。

发表于 2004年12月30日 15:34

评论

# re: 当微操作遇上刺蛇海

excellent article!
2005-1-7 11:32 | gmark

# re: 当微操作遇上刺蛇海

魔兽水平怎么样啊?
2005-1-7 19:50 | coofucoo

# re: 当微操作遇上刺蛇海

照这个思路往下走的话,就应该是领域工程。
我老板的思路就是先做构件库,然后把领域工程的东西应用起来。

不过看起来难度挺大的,
因为构件库首先就没有真正应用起来。
领域工程的难度,最主要的不是技术专家,而是领域专家很难找到。
即时找到,也不一定请得到。

觉得还是要那种在一个领域做的比较多的公司有可能,在某个领域做了足够多的项目之后,对这个领域的需求有了比较完整和详细的理解,然后做构件,做工作流,都比较好做了。
2005-1-10 17:57 | season

# re: 当微操作遇上刺蛇海

有个同学做项目,因为之前在那个行业做了两年的需求,之后产品就比较让别人难以复制。
2005-1-10 17:59 | seasons

# re:当微操作遇上刺蛇海

^_~,pretty good!
2005-4-19 23:59 | 滤纸

# re:当微操作遇上刺蛇海

^_~,pretty good!csharpsseeoo
2005-5-17 10:14 | 温湿度传感器

# re: 当微操作遇上刺蛇海

精辟,发现很多道理都可以从星际中得来:)
现在大多的项目也就如同一场星际中的战争,开始的时候用2个叉叉带一个农民去Rush虫子并没有错,因为虫子并没有多少战斗力,如同在项目开始的阶段,客户并不能提供多少有效的需求。
而如果这个时候你不主动出击,自己在家里死守,那么就会被虫子出来的部队压制在家里,被动挨打。在前期不主动进行侦察,龟缩在家中,只有等死的份,就如同在项目初期,不主动向客户挖掘需求,而是想当然的觉得客户应该会提什么要求,最终发现客户的需求以自己不能接受的程度进行膨胀。这也不全是客户的错,好歹咱们可以拿合同威胁客户说,我们当时是这么说的来着云云...

自己是人族,如果知道对方是人族或神族,免不了要有一场惊心动魄的大战。我会堵住唯一的出口,保证自己安全后按照预定的计划以最快的速度出坦克,获得陆地上的优势。在知道了将要做的是一个大型项目的时候,开始花费一定的时间做需求分析和设计,如同大战前在农民上的投入,可以为后续的工作打好基础,最终的目的还是竟可能早的完成项目,打败敌人。
2005-6-8 1:39 | mimouse

# re:当微操作遇上刺蛇海

当微操作遇上刺蛇海ooeess
2005-6-16 0:17 | 测汞

# re:当微操作遇上刺蛇海

当微操作遇上刺蛇海ooeess
2005-7-16 4:59 | 红外热像仪

Post Comment

主题  
姓名  
主页
校验码  
内容   
京ICP备 05050892号