具体之于抽象——最近的一点感悟
记得刚学编程的时候,还是在大学的时候,当初学的是ASP。当时怎么也不明白明明书上讲的在文本里可以写出来,为啥不能运行呢?当时在网吧上网,根本不明白IIS是个啥东西。买电脑,那是经济所不允许的。那年应该是2001年,刚上大学的时候。后来在myrice上弄了个免费的空间,也只能放点静态的网页,那时候学会了HTML,CSS,JAVASCRIPT。后来,发现我一个同学喜欢弄flash,两个人就一起鼓捣,但是也没弄明白ASP要咋运行。大概过了一年的样子,认识了一朋友,张剑(剑了),他那时候搞江湖程序(记得是一鹤写的天外天江湖程序),从此终于知道了IIS是啥东西。慢慢开始接触到动网论坛,在当时的K666和阳光论坛上到处转悠。在03年终于写出了第一个留言板,而后又写了一个文章管理系统。课基本是不去上的,剩下的时间,疯狂打游戏。(汗~~~~~~~)CS1.3的时候,水平相当高,嘿嘿。
05年离开学校,没有毕业,只是结业而已。03年到05年之间,对ASP越来越熟。甚至一度坚信,我自己也能写一本非常好的书。后来知道有了.Net,但是看不明白究竟是个啥东西。网上的气氛很热烈,但是资料还是比较少的。学习的路是艰难而曲折的。现在想来,最大的原因在于,认为自己对编程很熟了,要写就要写一个很好的东西,结果啥也没弄出来。也就是这个时候,开始接触了博客园,到CSDN上去尝试回答一些问题,水平慢慢提高。当然,提高的和面向对象无关。
06年做私人单子,第一次使用了.Net,按照3层架构的思想写的,但是不明白为什么是三层架构。做的都是很基础的功能,只是对功能的实现。即使是现在,有时都会搞不清楚层与层的划分。06年年底,用面向过程的方式开发.Net已经很熟练了,来到了上海。在新公司,直属领导的水平还是很不错的,才开始对OO有一定的思考,开始研究设计模式。一个很严重的问题是,以前是以面向过程的方式开发的,因此,不能理解模式,白看了好久,还是不明白,也就不看了。
在公司呆了一年,学到了很多东西,感觉水平增长很快。知道了为什么这样效率更高。接下来换了工作,换了新的工作环境,形成了新的思考,越来越感觉到面向对象的优越性,思考问题不再是以功能点来看,而是从整体结构上去把握。自认为,从那时开始,自己进入了一个全新的境界。不在是以具体的思维考虑问题,而是以抽象的方式看待问题。终于完成了具体到抽象的转变,这个转变历经了很多年啊。
今年7月,又离职了,可能离职频率有点高。去了很多公司面试,盛大、携程等等。都没看上我(汗~~~~)。太长时间专注于搜索引擎技术的开发,很多知识点都忘记了。面试人员问的很多问题,让我一度以为我在开发上已经落伍了。于是开始补充理论知识,10月9日,来到了新公司。
进来以后,项目需求已经完成了,数据库设计也出来了。我就非常奇怪,系统架构都没做,数据库结构怎么就会出来了呢?项目主管,开发了个项目的架构,过程式的方式,使用Remoting,通信使用的是报文。啥叫报文?就是个字符串,不是对象。项目组成员都是比较反对的,因此,我设计了新的架构。同时开始做概要设计,就前两天,概要设计部分刚讨论完,这几天刚进入详细设计。
这个详细设计的方法是我所不能接受的,要求我写出非常详细的设计,必须包括数据库结构。我就搞不明白为什么那么关注数据库。按我的想法,这是一个业务扩张项目,明显要领域驱动设计,而用测试驱动开发。业务依赖于概念模型和业务接口,我做完这些,小组成员就可以开发,同时补充概要设计。我怎么会去设计数据库呢?我想我只需要保持与组员的沟通,项目就不会有太大的风险。
主管告诉我,让我朝着架构师发展,我现在思考的问题还是太过抽象,需要更具体一些。需要让组员看到的详细设计,就可以开发出目标产品,换任何人都可以开发。我想这是一个抽象再到具体的过程。从具体走向了抽象,而现在又要从抽象走到具体。从具体到抽象,夸张点说,我走了6年,而从抽象走向具体,路漫漫而修远兮,吾将上下而爬楼梯。