1、专注。要选择一个平台,一个行业,然后在这个领域内专注一段时间(最少要6年)。我现在应该是linux 上C/C++开发,要专注这一领域。我的一个同事做了三年,后来跳槽到HW后转java了,可惜了。
2、深入。深入的了解我的这个平台,以及语言,行业。比如,我要能掌握linux操作系统,linux内核;深入掌握C/C++;掌握通信行业知识。
3、扩展。“当你开始掌握当前的平台,要开始学习独立于平台的技能,比如模式设计、分布 式系统设计、软件架构和性能等。在你取得进步时,你将要花更多的时间来学习这些技能。这是好事。因为这些技能不受平台限制,更容易转移新的技术平台”。对 我来说,这些技能是和平台学习同步进行的。
4、实践。自己可能会转向技术管理,或者架构师等职位,但是一定要记住,要坚持写代码。
5、如果不知道自己该学习什么,那就查看一下你理想公司理想职位的招聘公告。这一点和我不谋而合。呵呵。
“专家之路”:语言 -> 平台 -> 独立于平台的技能
做IT学习非常重要,但是学习的资料同时又非常多,如何选择资料对学习的效果影响也是相当大的。
选择资料是质量的内容是一方面,何时学习资料也是一个非常重要的方面。
我学习时机最为合适的两本资料是《代码大全》和《Effective c++》。
首先说第一本《代码大全》:
读这本书大概是在09年四五月份,大概用了两个月左右的时间。
首先介绍一下我当时的情况。当时我工作三年不到,两年半多一点,期间一直用c做开发,做 过几个大的项目。对c的熟悉程度尚可,主要的资料是《C专家编程》。对软件设计没有什么概念,主要的资料是华为的一本《编程规范》。编程规范尚可。编程知 识的广度非常有效,技术网站(比如csdn)也不怎么上。
我是在这种情况下接触到《代码大全》。记得当时只是看见同事那里有一本大块头的书,起初以为是什么字典之类的查阅书籍。正好当时空一点,就拿来看了。
我是从序言开始看起,照着里面的说明选择适合自己的章节。我就从第五章开始阅读,没有想到一下子就沉进去了,一口气从第五章读到第二十五章,而且还做了六十来页的笔记。
读完之后感觉特别爽,就像久旱逢甘霖。这本书给我打开了软件设计之门,解决了我当时开发 过程中的很多疑问。他也让我看到了软件设计的本质:管理复杂度——这就好比是软件设计的总纲。以这本书为基础,后来我有扩展学习了《重构》《设计模式》 等,《编程珠玑》《代码之美》《代码整洁之道》《实现模式》等已排入我的学习计划中。
这本书对外的研发生涯非常重要,可以说是我一个技术的转折点,让初步我看到了软件设计的门径。
PS:有一段时间因为工作需要了解SOA,它对我研发生涯也非常重要,主要是扩展了我的 视野,比如:SCA,MDD,TDD,软件架构,流程引擎,敏捷开发等。目前我经常访问的三个技术网站:CSDN,INFOQ,IBM——也是在当时留下 来的习惯,他们让我的技术视野时刻保持开阔。
第二本《Effective C++》:
这是我最近在读的一本书,读了将近一半。
我现在工作四年多一点,前三年基本上用c,最近一年基本上用c++。用C++做了三个项 目。我使用C++基本上就是自学,我们公司以前基本没有人使用,所以很多东西都是自己摸索的。由于我是从C转过来的,所以我做的第一个项目(一个预研项 目)基本上就是使用“C语法 + C++面向对象”。C++语法我没有系统的学习过,基本上是开发上遇到问题就去查资料解决问题。就这样慢慢的对C++熟悉了。
后来用C++做了两个比较大的项目,也主要是使用C++的面向对象特性,像其他的特性比如异常,模板等均未涉及。
最近空闲了,向提高一下C++能力。我这里有几本C++的书:《C++ primer》《C++沉思录》《c++ template》《Effective C++》。
《C++ primer》比较基础,也比较系统,我之前就尝试看过,但是看不下去。我发现现在我对这些基础的系统的资料已经失去了耐心。这可能是大学的学习和工作的 学习有区别的一个地方。大学目的是为了学,而工作目的是为了用。如果没有实际的需求而去系统的学习一个东西,可能动力不足。如果为了解决一个问题去学习, 那效果可能会非常好。
所以我就去找有难度一点的资料,我找的是《c++沉思录》。这本书我从第一章开始看,看了几章,发现书里面说的东西,和自己一点共鸣都没有,自己实在看不下去。读书读不下去,不一定是自己意志力不行,可能是这本书不适合你。
我又找了一个相对简单一点的,就是这个《Effective C++》。它不像《C++ primer》那样系统,只是详细描述了C++开发中的55个设计注意事项;同时他也不像《c++沉思录》那样比较深——总之,它十分适合现在的我,有一 些开发经验,也有一大堆的疑问,它正好可以解答我的这些疑问。在学习的过程中,遇到自己生疏的语法,就查一下《C++ primer》,这样下来不知不觉也补了不少C++基础知识。看到现在,已经将近看了一半,做了二十来页的学习笔记,感觉有一种即将“破门而入的”的感 觉。c++确实很强大!
最后总结一下:
1、那种方式学习最快?一定是有工作需求的,并且能够和实际的开发经验结合起来的时候学习的最快,
2、如果一本书读不下去,不一定是自己的意志力有问题(技术学习是一个IT人的一项基本需求,就像人要吃饭一样,不需要意志力),可能是这本书不适合你,至少是不适合现在的你。
3、实践也是一种学习方式,而且是最重要的一种学习方式。