@seahouse
你好,看到你的留言,我以前有段时间和你的情况有一定的相似度。
我特意去你的博客看了一下。这篇文章已经从宏观上回答了你的问题了---《20-30岁,我拿这十年做什么?》
那么我想我也并不算有多厉害的技术,只是对整体知识有了透彻的理解。下面我针对你的情况给出几个建议吧,希望能帮到你。(如果你觉得有疑问的,我们可以讨论,我也希望我们可以相互学习、交流。)
1.学习编程,一定要接触多个平台,最好是在类似UNIX的平台上做开发,C#思想是很先进的,我也没有系统的学过它,但是我知道他有一部分特性非常优于C++的特性,比如它的事件机制是内置的而C++要用观察者模式做这件事情,但问题在于他是专属与微软公司的,所以不用特别在意语言,如果你能精通C++,那么这几个语言包括C#、JAVA、object-c、c等语言你都会精通,这中间的路很长,0基础的人要5年左右,你的情况。可能还有2~3年。
2.精通C++,一定要在大环境下去精通它,比如跨平台程序框架,比如和其他语言混编,或者openGL、openCV这样的库,以及在项目中做一些综合尝试,不用拘束与语言,你用的多了,自然就精通了,而且不止精通C++一种语言。
你也可以照着我以前的学习方法,去重写一遍STL(参考《STL源码剖析》),这对工作没有特别大的帮助,但是是属于内功,长久看是很有益处的。从STL的代码里面,你能学到内存池管理技术、模版组合技术、几个设计模式、数据结构、常用算法、函数对象的使用技巧以及怎样扩展STL才最合理等内容。
有两本书是学习C++必读的,并且在C++的知识系统中是不可替代的,分别是:《C++程序设计语言》、《深度探索C++对象模型》。另外需要制定自己的编码规范,可以参考google C++ 编码规范、 K&R编码风格。然后是和业务知识相关的实践。还有一本好书我想推荐给你---《C++语言常见99个编程错误》。
3.你最好开始定制自己的编程工具,比如Vim、emacs等,Eclipse也是可以定制的。有一把利器,无往而不利。用IDE熟悉的话自然有好处,但是深入定制一个IDE,你就会知道背后的故事。
4.你需要全面的计算机知识,根据你的博客来看,有一些东西我就不用说了,那么我只说可能你不够重视的。操作系统要加强(大学知识不够用的,可以看这个网站的教程:
http://oss.org.cn/kernel-book/,我现在把它当作参考书用,非常易学易用)、算法(基本算法需要记住根本的原理,能用伪代码实现)、了解编程范式。
如果你用emacs的话,学一下lisp,推荐书籍《on lisp》、《黑客与画家》
5.一定要去UNIX下走一趟,学习正则表达式,UNIX的脚本语言等,推荐Pearl和python。
以上是主流的建议,你可以根据个人喜好做取舍,还有一点:不要灰心,没去500强不算什么损失,除了技术外这里面还有很多人事方面的因素。我以前500强挖我去我不去,后来我想去了,反而去不成了。所以去不去500强并不证明什么。
还有就是,在IT行业,先挣点钱,同时加强技术。这方面我不能很细的告诉你。如果有空了,再看看《编程珠玑》、如果想更深入的,可以翻翻《计算机程序设计艺术》。优先推荐第一本,原因--薄、精!
好了,写太多了,有问题再讨论。