程序员的成长经历往往很相似,大部分的人走过了前面相同的一段路,而有的人则走得更远。总结自己这些年来的历程,这也许能让年轻的程序员少走一些弯路,成长得更快;或许更好一些,能让大家从中得到一些启发,早日进入程序员的阶段,实现梦想,释放激情。

  第一阶段 , 初是在学校里学习计算机基础知识,学习经典的程序设计语言,编写测试用的小程序。这个过程可以说是对计算机和程序设计的入门阶段。这个阶段主要是培养了自己对计算机软件的兴趣,打下了良好的计算机基础知识。

  第二阶段 , 而后参加工作,从事计算机软件开发工作。按照工作要求,一边学习,一边编程,终于可以让自己的程序投入运行了。在这个阶段我突然感觉到了自己的价值,感觉到了软件的神奇,并且自己编写的软件成为了实用产品。这个阶段实现了学习到生产的过渡。

  第三阶段 , 随着工作的增加,开始编写各种程序,开发各种系统,这时候忙于编程知识的积累和应用。应该说在这个阶段自我感觉很充实,好像有做不完的事,程序设计水平还处在语言级阶段。

  第四阶段 , 随着积累了一定编程技巧之后,我开始想这样的问题:我是不是好的程序员?我能否编写出好的程序?这个过程是一个反思的阶段。我对自己的要求是:不但要会编程序,而且要编好程序,从关注程序数量开始转向关注程序质量。

  第五阶段 , 开始在提高自己的软件开发水平上做文章。经过各种系统开发,尤其 是大型系统的开发,发现了软件中有许多功能是重复的。因此,有一段时间把精力花在编制各种库函数上,通过不同系统调用相同的函数,以便减少重复开发,实现 功能共享。当时比较得意的是库函数不是我一个人在调用,而是整个项目小组都在调用,甚至不同的系统也能调用,从而体会到编写库函数特别有价值。这个阶段的 标志是库函数,程序员水平上升到库函数那一级。

  第六阶段 , 到了库函数那一级后,很快发现,单单实现程序函数级的调用是远 远不够的。当你做了很多项目,包括大项目和小项目,尤其是做过跨行业的项目之后,你会把库函数的共享思想用于项目开发。你会想这样一个问题:为什么不 同项目不能有相同的架构?如果有相同的架构,那么开发有了相对的标准,我们有可能通过配置的方法实现相同架构的系统。于是我提出了IASG(交互式软 件自动生成器)思想,并在C语言和其他一些语言中实现了IASG实例。记得快的一次是编写一个系统(公安部门的自行车信息管理系统,主要用于丢失自行车 信息登记)只用了3个小时(从需求到安装盘)。这个事情对我影响很大。我在这个阶段上升了一个很大的台阶,从程序上升到软件。核心思想从库函数共享上升 到软件共享。具体过程是建立一个通用的系统架构,架构中有许多共同的功能,例如,参数设置、用户权限管理、库表管理等。另外还提供信息建立查询开发模板, 通过配置和特殊功能的编制能很快完成了一个系统的开发。现在想起来IASG距离我已经有20年了。

  第七阶段 , 到了IASG阶段后,我发现无论技术如何提高,都无法改变开发落 后于需求的现实。通俗地说是:程序员水平再高,仅仅是拉车水平高,但是,应该在什么路上拉车程序员并不知道。如果这条路是一条光明的路,则程序员越拉越 有劲,有前途;如果这是一条死胡同,则程序员白费工夫;如果这是一条漫长的路,前途不明,则程序员可能要累倒在路上。现实中程序员水平低、收入低;系统需 求不明确,系统开发周期一拖再拖;系统重复开发多,信息甚至不能在一个企业内实现共享,更不用说在企业之间、行业之间实现共享了;各种企业级的软件 ERP、CRM、BI层出不穷,也没有哪个能满足中国的市场;各种新技术、新概念不断出现,却没有哪种技术或概念能真正发挥其内在价值,终还是处于被学 习、被运用的阶段。

  这个过程是程序员脱离技术本身,开始思索、开始求源的阶段。在这个阶段的程序员的思想有了质的飞跃。以前光拉车不看路,现在要抬头看路了。

  第八阶段 , 有了抬头看路的想法,于是我踏上寻路征程。我首先弄明白了我们脚 下的路是什么样的,为什么这条路那么不平坦、不宽广。从软件生命周期来看,软件主要由用户需求发起,用户需求是软件生存的根本理由。由于企业、用户的不同 而导致不同的需求——大量的无序的需求,这种需求驱动方式必然造成了我前面介绍的各种现象。这个阶段是寻找根源的阶段。只要我们找到了根源,可以有机会 解决问题。这个过程相对来说比较困难,这不仅需要编程技术,还需要很多方面的知识。若要了解这个根源,迫使你学习和积累更多程序以外的知识。

  第九阶段 , 当我找到软件是需求驱动方式之后,开始考虑什么是用户需求?用 户为什么要提出这些需求?我们可以更深入地分析用户需求产生的根源,我们能否让无序需求变成有序需求呢?当然针对这些问题我们都进行了深入分析,其过程也 很难在这里展开说明。我只能说,后结论是用户的需求来源于企业的经营。很多人思考问题还是需求而论,并没有站在企业经营角度去考虑问题。千万不要小看 这个变化,这个变化终会产生一个理论。于是我们尽可能地站在企业经营角度看待企业经营方式、企业管理、企业信息化等。但是,我们终要解决企业经营这个 概念问题,如果我们都不能明确企业经营这个概念,或者我们不能科学地定义企业经营这个概念,那一切基于企业经营的各种具体现象如同无本之源一样无序泛 滥。像ERP、CRM等所谓企业信息化产品一样,由于没有一个企业经营定义的支撑,只能企业经营的某个方面提出解决方案。这些产品不缺乏需求的支持, 缺乏的是基本的企业经营定义的支持。而这个概念是EOM。