@seahouse
你好,看到你的留言,我以前有段時(shí)間和你的情況有一定的相似度。
我特意去你的博客看了一下。這篇文章已經(jīng)從宏觀上回答了你的問題了---《20-30歲,我拿這十年做什么?》
那么我想我也并不算有多厲害的技術(shù),只是對整體知識(shí)有了透徹的理解。下面我針對你的情況給出幾個(gè)建議吧,希望能幫到你。(如果你覺得有疑問的,我們可以討論,我也希望我們可以相互學(xué)習(xí)、交流。)
1.學(xué)習(xí)編程,一定要接觸多個(gè)平臺(tái),最好是在類似UNIX的平臺(tái)上做開發(fā),C#思想是很先進(jìn)的,我也沒有系統(tǒng)的學(xué)過它,但是我知道他有一部分特性非常優(yōu)于C++的特性,比如它的事件機(jī)制是內(nèi)置的而C++要用觀察者模式做這件事情,但問題在于他是專屬與微軟公司的,所以不用特別在意語言,如果你能精通C++,那么這幾個(gè)語言包括C#、JAVA、object-c、c等語言你都會(huì)精通,這中間的路很長,0基礎(chǔ)的人要5年左右,你的情況。可能還有2~3年。
2.精通C++,一定要在大環(huán)境下去精通它,比如跨平臺(tái)程序框架,比如和其他語言混編,或者openGL、openCV這樣的庫,以及在項(xiàng)目中做一些綜合嘗試,不用拘束與語言,你用的多了,自然就精通了,而且不止精通C++一種語言。
你也可以照著我以前的學(xué)習(xí)方法,去重寫一遍STL(參考《STL源碼剖析》),這對工作沒有特別大的幫助,但是是屬于內(nèi)功,長久看是很有益處的。從STL的代碼里面,你能學(xué)到內(nèi)存池管理技術(shù)、模版組合技術(shù)、幾個(gè)設(shè)計(jì)模式、數(shù)據(jù)結(jié)構(gòu)、常用算法、函數(shù)對象的使用技巧以及怎樣擴(kuò)展STL才最合理等內(nèi)容。
有兩本書是學(xué)習(xí)C++必讀的,并且在C++的知識(shí)系統(tǒng)中是不可替代的,分別是:《C++程序設(shè)計(jì)語言》、《深度探索C++對象模型》。另外需要制定自己的編碼規(guī)范,可以參考google C++ 編碼規(guī)范、 K&R編碼風(fēng)格。然后是和業(yè)務(wù)知識(shí)相關(guān)的實(shí)踐。還有一本好書我想推薦給你---《C++語言常見99個(gè)編程錯(cuò)誤》。
3.你最好開始定制自己的編程工具,比如Vim、emacs等,Eclipse也是可以定制的。有一把利器,無往而不利。用IDE熟悉的話自然有好處,但是深入定制一個(gè)IDE,你就會(huì)知道背后的故事。
4.你需要全面的計(jì)算機(jī)知識(shí),根據(jù)你的博客來看,有一些東西我就不用說了,那么我只說可能你不夠重視的。操作系統(tǒng)要加強(qiáng)(大學(xué)知識(shí)不夠用的,可以看這個(gè)網(wǎng)站的教程:
http://oss.org.cn/kernel-book/,我現(xiàn)在把它當(dāng)作參考書用,非常易學(xué)易用)、算法(基本算法需要記住根本的原理,能用偽代碼實(shí)現(xiàn))、了解編程范式。
如果你用emacs的話,學(xué)一下lisp,推薦書籍《on lisp》、《黑客與畫家》
5.一定要去UNIX下走一趟,學(xué)習(xí)正則表達(dá)式,UNIX的腳本語言等,推薦Pearl和python。
以上是主流的建議,你可以根據(jù)個(gè)人喜好做取舍,還有一點(diǎn):不要灰心,沒去500強(qiáng)不算什么損失,除了技術(shù)外這里面還有很多人事方面的因素。我以前500強(qiáng)挖我去我不去,后來我想去了,反而去不成了。所以去不去500強(qiáng)并不證明什么。
還有就是,在IT行業(yè),先掙點(diǎn)錢,同時(shí)加強(qiáng)技術(shù)。這方面我不能很細(xì)的告訴你。如果有空了,再看看《編程珠璣》、如果想更深入的,可以翻翻《計(jì)算機(jī)程序設(shè)計(jì)藝術(shù)》。優(yōu)先推薦第一本,原因--薄、精!
好了,寫太多了,有問題再討論。