程序员的历程介绍
程序员的历程介绍
我一直梦想做一个程序员,从大一时写pascal代码开始。现在我的职务是开发工程师--听起来好大呦,其实软件工程本就是比及不了建筑工程的,所以我还算够得上这一称谓。:)
当梦想成为一种职业,要想的问题就不只是兴趣爱好了,而是严肃的职业成长历程。前些年的《程序员》理由一位前辈成说过,做程序员,你要知道自己的goal是什么,这是首要条件。那么你的goal是什么呢?
在启蒙阶段,我的goal是掌握一门语言。那是从我听来delphi一词到写毕业设计之前的时期。期间,我经历了pascal/c这样过程语言的基本语法和编程思维的锻炼,学习了数据结构等基础理论课程,面向对象的思维方式,面向组件的开发方法。这一阶段,迭代,嵌套,递归;排序,查找,二叉树等概念是主角。从编写三角星型,冒泡排序VB和delphi写的HelloWorld,再到MIS系统是脑袋里不断累积的东西。作为被掌握的语言delphi,我对它的了解释螺旋式的。起初看到ObjectPascal,感觉好难,因为它比turbopascal多好多面向对象的东西。直到学java时,我才发现delphi其实比java难很多。因为delphi面向组件的开发中控件好多,每个控件的属性太多,以至没有开发经验的我不知道该用哪一个。而且开发时好多东西并不是我们所了解的,vcl是个溺爱孩子的妈妈。我开发的东西太“高级”了,这不利于学习真正的东西。说了一堆delphi的坏话,大概是那段时间过得太糟了,其实delphi如果不好我又怎么会选择呢?delphi的开发效率和执行效率非常高,对于没有经验的菜鸟,还是能快速掌握面向对象的。
经历了比较感性的开发后,你会了解编程是怎么回事,并能处理一些简单问题。这很好,再让下走你就进入了入门阶段。入门意味着什么?“隔行如隔山”,现在山门你已打开,这是何等让人兴奋的事。从作毕业设计到在工作中参与几个项目,我经历了自己入门的阶段。这时期,我知道了光光懂得每个控件的大致用途,会写写函数是远远不够的。什么是c/s、b/s,什么是多层分布式开发?为什么要广泛使用中间件?学来的封装,继承,多态到底多么有用,有该怎么用?类、结构体和接口到底如何在工程中应用?怎么去完成概要,分析,设计,编写,部署,测试?一个个问题随着时间闪现出来,在解决之前挥之不去。
我在这个阶段之前,对web开发有个“偏见”的认识,认为它根本算不上是真正的程序员该做的事。因为asp,php都是脚本开发,和html,srcipt等小把戏混在一起,高级语言根本不是做这个的。其实,我的偏见并不太偏,因为那时的web开发就是简单的网页设计,不成体系。直到我了解了jsp和asp.net。前者教给我jsp是java这种高级语言开发的,而且它作为前台编码,后台是很有实力的控制层servlet和逻辑层javaBean,数据库更得到了好多大哥级厂商的支持。而asp.net让我看到一个奇迹--webform,高级语言终于向web开发宣战(虽然此前,delphi里也有webform,但它是作为控件存在的,而不是一类开发)。
说对web开发的认识,其实就是我对整个编程领域的认识。入门阶段,我看到了这个领域的发展方向,知道了自己的goal,就是要向分布式转型,学好分布式开发--此前一直在做桌面和c/s。这个时期,我是做了抉择的,从看到com+的威力,从看到delphi8颓废,到为java的广阔前景而暗自惊诧,最终我放弃了delphi,选择了java。其实到了这个阶段,语言只是刀而已,换刀只是用得更顺手,但刀法还需要不断精进,与语言无关。
入门阶段比启蒙时期要短,因为一旦入了门,你就想进去。进阶阶段到了。这个阶段已经没有了编出一点东西就兴奋的不得了的幼稚,也没有了“我已入门”时的喜悦。这个阶段和启蒙时有个共同特点,就是漫长而且痛苦。因为要学的东西很多,而且都必须掌握,不然永远不能走到高手的行列。你已经不甘心就这样没头没脑地写代码了,你要知道没什么我要这么写,要知道用UML从头设计的工程,要知道如何选择模式,要知道怎样设计和编写框架。当然,术业有专攻,走到这个阶段,大家的路已经不同,我就单指j2ee/.net的这条吧。因为这是我要走的路。我正在这个阶段挣扎着、喜悦着,但我知道我的goal是什么,那就是学着去做一个架构师。
当有一天,我发现问题在我的眼里被割解成一系列简单的类时,庖丁解牛的境界就到了,到那时我就走到了程序员的最高境界--高手阶段。到那时我该学点什么呢?哈哈,一想起这些就爽的周身舒坦,因为那时我就是东邪西毒,一览众山小啦…到时候我在华山等着各位,煮酒温茶,分享殊途同归的乐趣。