又要到考试的时候了,整个五一长假都泡在咖啡屋里面头晕脑花的复习功课。总的来说,课程还是挺难过的,闭卷考试,英文做答,:(。期间一直在想,这么辛苦,是否值得?
突然之间联想到技术人员的知识结构来上,也许能回答这个问题。单就技术方面,(管理方面的知识也不谈),我是这么想的,知识结构分为3个层次。
先说middle level,我把java、c、unix/linux操作、oracle/sqlserver等等我在工作中用于谋取薪水的技术技能都划到这一类。middle level专注于应用层次,同时此类知识最好学,市场上的大多数公司也迫切需要此类技术技能。如何提升?个人感觉,看书是一部分,建议还是多关注技术热门站点,或者是工作中的经验积累。
low level,包括数据结构/算法,网络,数据库原理(呵呵,原理一定要加上),组成原理,编译原理,数理逻辑等。经常有人推荐《计算机程序设计艺术》,《算法导论》等等名师著作。呵呵,名师当然写的好了。其实,如果这些课程以前学过,没有必要再买来阅读了。象我这样,不努力学习的,有些课程还真没有看过的,还是有必要买来阅读一下的。推荐买学校的教材,有习题,有标准答案的那种,适合自学。(注:有些课程还真不适合自学)
high level,涉足于体系架构和软件过程方面。first,经验积累,包括看书,学习新技术,掌握新的工具等等;second,行业知识积累最重要,有的时候,从技术角度出现,两种解决方案都是等效的,此时就看那种最适合行业领域了。呵呵,可以将行业解决方案的共性抽取处理,形成一个有效的解决方案库,粒度不能太粗(太粗了,就有点象IBM的保险行业的IAA框架了)。《Software Architecture In Practice》这本书不错,里面的Quality Attributes,Tactics都是一个很好的思路。此层次涉及的基础知识最好掌握这个几个:UML,MDA(我觉的不错),业务建模概念,软件过程(对过程的了解,有足于理解软件开发。)
分析自己的知识框架,还是有需要补充之处。不断在应用中学习,在学习中归纳,在归纳中应用。