本人今年接触了几家小软件公司开发的系统,原以为这些小系统同公司开发的系统大体上是相当的,但当我真正看到这些系统时,的确让我大吃一惊,吃惊的不是因为它们规模小(一般是三五台PC机组成,与公司的那些几百、几千台机器组成的系统是无法比的,记得当时看到以一百多台IBM小型机为主体组成的系统时,只能用两个字来形容‘震撼’,当然了量并不能代表质,一万发炮弹的威力也没有一颗×××的威力大),而是在于它们的数据库结构简单,仅有一两百个表、索引、序列等简单的数据库对象,没有函数、存储过程、触发器等高可用性数据库对象,就那些表也是没有什么标准可言,命名一点规范都没有、字段类型凭感觉在定义、表的参数PCTFREE、PCTUSED也是照猫画虎,根本不知道是什么意思,感觉就是在完成差事交任务。
    公司的3.0系统仅是表(不含临时表)就有上千个,整个数据库的对象不会少于5000个,以前写过2007年5月一次处理报表故障时,把一个公共函数编译了,导致300多存储过程失效,当时把我吓得出了一身冷汗,赶紧编译,整整用了20分钟才全部编译完毕,报障电话马上就打来了,当时的压力真是没法形容。现在公司的6.0系统整个数据库对象超过上万个,数据库由2台小型机、1台存储、1台磁带库扩展到7台小型机、3台存储,整个数据库系统花费不会少于2000万。当然了这些不过是些浮云罢了,更重要的是公司有一套完整的集成产品开发流程,各产品、各系统、各模块都有相应的开发流程与规范,所有产品开发都要严格按照规范进行,绝非是那些手工作坊可比的,事实证明作坊里面是搞不出先进产品的。
    今年看到的几个小系统仅有上百个简单的数据库对象,表数据和索引共用一个表空间,更有甚者直接把表建到USERS表空间中,临时表空间用的是TEMP。USERS、TEMP都属于系统自有的表空间,怎么能用来存放用户的数据库对象呢?设计上就是完全错误的,怎么能开发出好的系统呢,其它的什么当前表、历史表、日结表等概念提出来,有些人根本就没有听说过,更不会知道怎么做了。我2004年在学校时学的程序开发用的就是直接在jsp、java中写sql语句,后来到了公司才学到了公司的开发方法,公司产品的访问数据库的方法绝非我博客上写的那样,我写的那个是很落后的。没想到7年过去了,好多公司使用的还是简单的sql语句,好多人连索引都不知是干吗的,反正是人云亦云,别人那样写我也照猫画虎,写出来的程序、建的数据库结构还是7年前的水平,没有一点改进与创新,好多就是在原地踏步,真正有创新意识的估计很少,能做出创新结果的那就更少。难怪中国的软件水平无法和国外相比,与近邻印度比起来都差得很远,更别提西方列强了。按照这个趋势下去,三五年后中国的小软件公司估计还是今天的水平,人数吗还是几十上百人,搞的还是一些所谓的ERP、OA、CRM等产品,技术上也不会有什么大的改变,纯粹的体力活而已,做出的仍然是无文挡,无控制,无注释的“作坊式三无产品”,三五年不远,让我们拭目以待吧。