记得以前看过一篇文章,说程序员的几种境界,第一种境界说,起步之初,对什么都不是很明白,所以觉得什么都对.此所谓"看山是山,看水是水".第二种境界说,当你深入一些以后,已经不是停留在入门水平了,开始研究底层及其工作原理的时候,这时候感觉什么都觉得可疑,什么都很模糊.此所谓"看山不是山,看水不是水".第三种境界说,深入编程一段时间后,深知各种编程思想和本质,善于把各种技术的本质找出来并很快掌握.也就是说反璞归真的时候了.此所谓"看山是山,看水是水".
我想我现在的感觉很像第二种境界,当我学习.net一段时间后,入门的东西基本上已经看过了并且已经把它们运用到了实际的开发过程中.以前总是按照别人的模子或者是设计思路,架构去编写代码.所以大部分的工作都是在依葫芦画瓢.而且开发对象都比较简单,像基本的新闻系统.但是现在,我要开发一个中型的web应用程序,感觉到它包含的东西是多么的多.
首先,第一件事情就是架构和设计,UML建模,用例图分析等,就连css,页面布局都需要设计.它不像小型程序系统那样,一上来就开始做,基本不需要架构和设计.架构这东西现在感觉真是难啊,非一日之功.面向对象编程的功力要深.但是,面向对象编程和结构化编程存在相当大的区别,以至于从以前的结构化思想不能很快地过渡到面向对象编程,而且实践要高出理论好多,就是说你能很流利的说出面向对象编程有哪些基本概念及其内容,却不一定能把它用到实际的开发中.
第二件事情,问题求解.当遇到一个现实生活中的问题,怎么样把它变成计算机所能理解和解决的问题.这也是一个思想转换的过程.这个过程也要用到数据结构和算法等知识.
第三件事情,怎么样管理开发过程中的资源和时间,调试程序.这又牵扯到软件工程的知识.
现在这个过程是该了解及本质的时候了,了解其本质然后零活的运用.而且需要把计算机系统的有关知识联系起来,不能孤立地看待技术这个层面上的东西.
第二种境界修炼到第三种境界所花的时间可能是很漫长,路很遥远,但是我有信心,只要坚持下去,就一定会柳暗花明!