VCL已死,RAD已死(2)

<< 第一节:从UI的变革到系统的复杂性

二、分层,真的改变了你的思想了吗?

分层思想提出来了——这在操作系统的设计上可以上溯到上个世纪50年代,但在应用软件开发上却并不太久。一个比较稳定的分层系统是“交互、业务和数据”三层,当然,与实际需要相关的还有更多层、更多更多层。

分层没有什么不好。正如我说WIMP没有什么不好一样。但是,厂商们开始掺合了。为了让我们的程序员成为RAD中的SuperMan,以及表明我们这些厂商直接就是超人学校,并提供超人道具。所以我们的开发工具加上了各种各样的RAD工具:数据库可以拖、网络接口可以拖、应用框架可以拖、设计模板可以拖。厂商们宣传:只要往界面上一拖,我们的开发人员就可以回家睡大觉了,三天后系统就可以Build出来。

老板们相信了这样的鬼话,并且认为那些没有按这样的方式为客户“生产”出产品的程序员都是笨蛋,应该立即开掉并招聘另一批RAD的SuperMan进来。按照RAD对时间节省的功率来看,客户给出的时间富富有余,重复开发三五回都没问题。

但是,结论是:我们失败了。在所有的分层上,由同一个厂商,在同一个工具,使用同一个或一类开发人员来完成产品的理论和实践,通通的倒掉,死掉,一个不留。

没有人是超人,没有人能象孙猴子那样从天上打到地下,从龙宫打到阎罗殿。我们是在写软件,不是在制造神话。相信这一点,你就知道在各个分层上由同一方案来解决是不合理的。分层是伟大的思想,只是工具产商们胃口大到了极点,因而无视于这伟大思想背后的深意。

纵向的切分带来了模块与模块间的隔离,可以将系统由大而化小,从而分解了“系统的复杂性”,这与把一个住宅小区分成几十橦大楼,以及无数的生活设施是一个道理。同样的,横向的切分带来了专业领域,以及领域间的界面,这与把楼房看成砖瓦等构件是一样的。但砖瓦等构件带来的,是砖头工、瓦匠,以及木工、电工。无视于领域存在的人,只配去建猪舍,在那样规模的建筑上,不需要“术业有专攻”,而且项目失败成本的边界无过于:

压死一头猪,或一群猪。

大厂商们以牺牲一头或一群猪的风险成本与战略眼光,以及战术思想,要让我们——开发人员去建设一橦大楼,或一片小区。这就是现实。

分层,带来模块的分解,以及领域的切分。而你的求职简历上还写着:熟悉二十种语言、各种开发工具、设计工具、调试环境、性能分析测试以及服务器端部署……

开玩笑啊,如果你的工作经验未能超过150年,而你的老板还敢雇佣你,那么活该他项目做死掉。

第三节:RAD之死与系统的复杂性 >>