道德经解道之二:有之以为利 无之以为用
道德经其实真是大道至简的一门哲学,如何追随自然规律,并顺势而为,我们设计企业软件也是这样,Martin Fowler曾经对企业软件说得很透彻:企业软件就是一个跟踪Tracing系统.
既然企业软件是一个跟踪系统,那就不能跟错,那么它跟的是什么?如果跟踪钱money,就是财务金融系统;如果跟踪货物就是采购物流销售仓储系统;如果跟踪人就是管理信息系统。总结一句:它跟踪的是我们现实生活中的流程规律,关于这一点,其实为我们明确了企业软件的领域范围,领域范围决定办法和措施,问题决定工具,你不能拿老虎钳当做锤子用。
其次,企业软件就不能跟丢,现实规律是不断变化,只不过周期不象股票周期那么短暂剧烈,但是变化是其本质,那么企业软件跟着变化走,就很容易跟丢,老子说:善抱者不脱,善于抱紧跟随的就不能脱离,这对企业软件更加重要。
通过以上简单分析,可以明了中国古老的哲学对于我们开发现代企业软件依然有借鉴作用。这也说明中国先秦古人的智慧。
老子的道德经哲学告诉我们看待分析事物的方式,有助于我们和规律中美妙之旋共振(Evans DDD引言),例如:
三十辐共一毂,当其无,有车之用。埏埴以为器,当其无,有器之用。凿户牖以为室,当其无,有室之用。故有之以为利,无之以为用
看看网上通用解释(http://muyuya.lingd.net/article-474720-1.html):三十根辐条汇集到一根毂[GU第三声]中的孔洞当中,有了车毂中空的地方,才有车的作用。揉和陶土做成器皿,有了器具中空的地方,才有器皿的作用。开凿门窗建造房屋,有了门窗四壁内的空虚部分,才有房屋的作用。所以,“有”给人便利,“无”发挥了它的作用。
这个解释对于“当其无”这一句有些牵强附会。更有甚者,将它向修身养性方向引导,这是道教的阴谋,见这个解释:http://zhidao.baidu.com/question/2384641.html
其实,我们搞面向对象分析设计的,看这一句很好理解:基本是只身庐山中,不识庐山真面貌以及横看成岭,侧成峰的意思,对象取决你关注什么?
下面是我的理解:三十根辐条合起来是一根毂[GU第三声],但是当你不再关注这个车轱辘时,你才会如何使用车,换句话说:你成天只看到车轮,只和车轮打交道,怎么会开车呢?这也是盲人摸象的意思。揉和陶土做成器皿,如果你成天在做陶器这个事情,你怎么会用器皿呢?或者说,当做完陶器,你才会用到陶器;开凿门窗建造房屋,当你完成了房屋建造,才会有房屋的作用。
所以,有之以为利,无之以为用,也就是说:当你身处其中有之的时候,它对你是有好处的,你有一技之长啊,你会做车轮,会做陶器,会盖房子,当你没有它的时候,虽然利失去了,但你可以用它,享受用它的乐趣啊。
比如我们的工作事业,当你有工作时,你可以赚钱(这是利),但是当你失业的时候,你就可以用钱(这是用之)。只有这样才顺经济规律而动,渡过经济危机啊。
总得来说:老子这句说明我们思维动态缩放的重要性,就象看地图,当你仔细看一个地方时候,需要放大镜,关注它,但是当你纵观全球地图时,你原来的关注点就没有了,这个感觉我们在用google Map时最有体会,需要不断缩放,其实这种方法对于任何事情都是这样的。
用我们企业软件术语来讲:就是领域范围(Domain)不一样,这就是Domain的意思,真理也是有范围,只在这个Domain区域内,你的道理是对的,但是如果到其他范围或更广阔的范围,你的真理就变成小不点,微小足道,我们通常称之为“正确的废话”,平时生活中,说说正确废话没有关系,但是如果我们的软件都是正确的废话,那就没用了,真正的无以为用了。
所以,我们企业软件建模特别讲究Domain Model,在一定范围内的模型,“三十根幅条”在“车轮”这个范围内是正确的模型,但是对于整个“车子”来讲,它就变成无了,“车子”只由“车轮”这个高聚合子对象组成。
如果不懂老子这个哲学,那么你就经常在分析“车子”时,将“三十根辐”直接作为“车子”一个聚合子对象,这就是眉毛胡子一把抓,这是我们经常范的错误,比如,“订单”中有多个“采购商品”和“数量”,那么你建模时,会将“采购商品”和“数量”直接作为“采购单”对象的子对象,你没有看到其实存在一个“采购单条目”来封装采“购商品”和“数量”,正确的应该是:“采购单”、 多个“采购条目”、 “采购商品”和“数量”。这就和“车”、 “车轮” 、“三十根辐”一样的层次。
所以,企业软件就是一门哲学,哲学能够帮助更加认清世界本质,给你一双慧眼,让你明,如果你不但明,而且能够顺势而为直至无为,那么你就是一个真正有道德的人,玄德之人,厚德之人。
谁说程序员和道德无关呢?关键在于我们要还清道德的本义并掌握它。
[该贴被banq于2008-12-31 10:39修改过]