做为开发人员(在IBM叫IT Specialist),面对浩如烟海的信息,有效的学习和提高技术能力的路径在哪里?
这是一个经常出现在我脑海中的问题。关于这个问题,或许没有唯一的答案,这里我只谈自己的看法。
我认为,应该在3个方向上下功夫。
前提: 兴趣,求知欲。
方向1 -- 内功: 学习能使自己成为优秀开发者的基础知识。
下面是一些基础知识的子集: 算法知识,面向对象思想,设计模式,高质量编码,软件测试,UML,C/C++/Java 语言,关系数据库,Unix/Linux基本命令,Shell编程等等。
这些方面都不乏各种经典的书籍供我们学习,拿算法而言,Donald E. Knuth.的《The Art of Computer Programming (TAOCP) 》太专业,我们可以选择《Introduction to Algorithms》(算法导论)
设计模式方面除了GOF的开山作品《Design Patterns: Elements of Reusable Object-Oriented Software》,还有许多派生类书籍。
高质量编码可以看Steve McConnell的《code complete》(代码大全),Andrew Hunt and David Thomas的《The Pragmatic Programmer》等等。
总之,Thanks internet....
方向2 -- 本门武学:指工作中使用的技术。
这个不需要太多讨论,项目做的好,才能体现出价值,才会获得更多的提升机会。
比如在IBM属于Web competency的ITS,那自然需要练就Web 开发的本领,尤其是使用IBM的产品线。包括J2EE, WebSphere, DB2, AIX, Rational Tools 等等技能。
而Mainframe competency则需要掌握COBOL, PL1, JCL, CICS 等等。(我认为,做Web 应用,需要比做大机掌握更多东西....)
方向3 -- 流行武学:跟踪技术趋势,不要让自己落伍了。
这里多罗嗦几句。探讨当前的技术趋势,先从Herb Sutter 2005年的论文《The Free Lunch Is Over: A Fundamental Turn Toward Concurrency in Software》说起。 //link=> http://www.gotw.ca/publications/concurrency-ddj.htm
文中论述了摩尔定律的失效,CPU速度的无限提升到达了瓶颈,而相应的解决方案势必为并行计算(Concurrency Programming),因此预见并行计算的时代或将到来。
(这篇文章属于重量级中的重量级,内容即使在今天仍被大量引用。叶天正博士来大连给我们讲天下大势的时候,也引用了。)
由此应运而生的是一个宽泛的技术集,包括分布式计算,分布式存储,云计算,虚拟,SOA等相关子集。新编程模式也会改变现今我们的编程习惯。
我认为,这就是当前的"流行武学"。 (google 有个 MapReduce, 可以作为学习的入口。)
对于Web 应用来说,RIA最近渐热,比如Flex,Ajax,Silverlight等等,我认为他们和并行计算不是一个重量级的。
对于Mainframe来说,好像很久没有变化。不知道是做MF的ITS的大幸还是不幸。。。
3个方向中,内功是基础,内功深厚,problem solving 能力强,学其他武功也事半功倍。
作为一个IT Specialist, 除了技术能力以外,有很多能力需要提升,比如communication Skill, leadership 等等。在某些情况下,这些能力会比技术更重要。
这是一个经常出现在我脑海中的问题。关于这个问题,或许没有唯一的答案,这里我只谈自己的看法。
我认为,应该在3个方向上下功夫。
前提: 兴趣,求知欲。
方向1 -- 内功: 学习能使自己成为优秀开发者的基础知识。
下面是一些基础知识的子集: 算法知识,面向对象思想,设计模式,高质量编码,软件测试,UML,C/C++/Java 语言,关系数据库,Unix/Linux基本命令,Shell编程等等。
这些方面都不乏各种经典的书籍供我们学习,拿算法而言,Donald E. Knuth.的《The Art of Computer Programming (TAOCP) 》太专业,我们可以选择《Introduction to Algorithms》(算法导论)
设计模式方面除了GOF的开山作品《Design Patterns: Elements of Reusable Object-Oriented Software》,还有许多派生类书籍。
高质量编码可以看Steve McConnell的《code complete》(代码大全),Andrew Hunt and David Thomas的《The Pragmatic Programmer》等等。
总之,Thanks internet....
方向2 -- 本门武学:指工作中使用的技术。
这个不需要太多讨论,项目做的好,才能体现出价值,才会获得更多的提升机会。
比如在IBM属于Web competency的ITS,那自然需要练就Web 开发的本领,尤其是使用IBM的产品线。包括J2EE, WebSphere, DB2, AIX, Rational Tools 等等技能。
而Mainframe competency则需要掌握COBOL, PL1, JCL, CICS 等等。(我认为,做Web 应用,需要比做大机掌握更多东西....)
方向3 -- 流行武学:跟踪技术趋势,不要让自己落伍了。
这里多罗嗦几句。探讨当前的技术趋势,先从Herb Sutter 2005年的论文《The Free Lunch Is Over: A Fundamental Turn Toward Concurrency in Software》说起。 //link=> http://www.gotw.ca/publications/concurrency-ddj.htm
文中论述了摩尔定律的失效,CPU速度的无限提升到达了瓶颈,而相应的解决方案势必为并行计算(Concurrency Programming),因此预见并行计算的时代或将到来。
(这篇文章属于重量级中的重量级,内容即使在今天仍被大量引用。叶天正博士来大连给我们讲天下大势的时候,也引用了。)
由此应运而生的是一个宽泛的技术集,包括分布式计算,分布式存储,云计算,虚拟,SOA等相关子集。新编程模式也会改变现今我们的编程习惯。
我认为,这就是当前的"流行武学"。 (google 有个 MapReduce, 可以作为学习的入口。)
对于Web 应用来说,RIA最近渐热,比如Flex,Ajax,Silverlight等等,我认为他们和并行计算不是一个重量级的。
对于Mainframe来说,好像很久没有变化。不知道是做MF的ITS的大幸还是不幸。。。
3个方向中,内功是基础,内功深厚,problem solving 能力强,学其他武功也事半功倍。
作为一个IT Specialist, 除了技术能力以外,有很多能力需要提升,比如communication Skill, leadership 等等。在某些情况下,这些能力会比技术更重要。