IT,大一,這裏我有點建議

(2013.12.12 發佈於我的博客 phodal.com)

在論壇上看到同學院的學弟問的,就回答了一下。打的字挺多的,所以就發到博客上了。

原文是這樣子的:

我上大一,西安二本里墊底的大學。在學校C語言學一學期感覺啥也沒學到。想補補自己的編程技術,開始找培訓機構。北大青鳥,西嵌,達內,歐朋蘭博,尚學堂都去了。黑馬和傳智播客在西安木有的~ 看了一圈更糾結了,本來只想着拓展一下知識面,把C學好點。現在是,被他們說了一堆後,我感覺在大學裏學的東西以後工作根本不夠用,計算機科學與技術專業學的東西本來又多又淺。所以我現在決定上培訓班了。然後。。。 然後就是,各種複雜的培訓項目,我看的頭都大了。北大青鳥的學士後,JAVA,安卓,嵌入式,網絡管理,虛擬化,Linux,c c++,操作系統。。。每個課程都還死貴!我瞬時無語了。

(補充一句,西安的二本不多了,西安的同學一看就知道了。)

學習建議

C語言

學好C可能不會讓你找到個好工作,不知道你們用的是什麼書,如果是清華大學的那本就直接丟垃圾桶吧。圖書館負一層的好書(ps:我們學校的計算機書都在負一層,看的人少。。)多得是,還有C語言作者寫的,首選國外的書,然後是國內的。C的重要就是指針+數據結構。有一本不錯的書,如《C和指針》及《C專家編程》。不過,如果不是搞嵌入式的話,C可能會用得很少,多數都是Java的面向對象。圖書館有很多,很不錯的書。。這是我們學校的一個不算是優點的優點,我不知道你們系的老師怎樣,但是請相信多數情況下只有混得不好的纔來當老師(ps:很一般的二本院校)。只是少部分老師也很優秀,至少在我們專業中——電子信息工程是這樣的。在我們專業領域,C纔是神器相比於彙編語言,只是這個時代彙編語言用於提升運行效率顯得有點。。。

如果想學得全的話,建議不要在C上面花太多時間,學得精就需要在上面花費一定的時間,不過可以試着用閱讀源碼的方式來解決。C很重要,但是有時候不是很重要,就如同你對數學一樣,重要的時候纔會體現出來。以後,你會知道我們學校的考試是怎樣的,不要按照老師的思維來學習,要有自己的學習習慣和方法。

面向對象

面向對象,一個比較好的起點就是Java,這個印象中經常看到計算機系的孩子拿着這些的書,然後你可能需要《Head First設計模式》,接着是四人班GoF的經典之作《設計模式》,還有很多,如果覺得Java麻煩。可以試着用Ruby或者Python,Ruby有一本《Ruby設計模式》,學設計模式的優點是如果你面向對象的思維不是很強的時候可以用到。用Ruby可能會使學習快些,在學習設計模式的時候,問題是國內用這種語言可能會比較少。需要考慮一下,Python會比Ruby多一點,如果有所謂的愛國情節,就從Python開始,國外的孩子好像都是。

C++算是一門不錯的語言,只是現在用得比較多的好像是在遊戲領域。這門領域太複雜了,所以不要以爲你的教科書上面的東西那麼簡單,請相信教科書是給考試準備的,而不是給實戰準備的。所以,除非有好的發展(比如,有親戚等在這方面工作,而且現在主要是在遊戲中用得比較多),要不請暫時放棄C++。Java提煉了一些C++的精華,比較面向對象而且和專業課相關,算是一個很好的起點。簡化面向對象的學習就是上面說的設計模式。

操作系統

開始使用Linux。開始可以考慮用Ubuntu或者Mint,國內用得比較多。我比較喜歡使用openSUSE。如果你有臺MAC 就再好不過了。試着從底層去了解一個程序是怎麼運行的。從開機到一個程序的運行,其中你可能需要了解的是《Linux內核原理與實現》。以及你們專業自帶的《操作系統原理》,如果用的還是國內的書的話,請換成圖書館的國外的書。Unix的有些東西和Linux上面是類似的,所以可以試着在上面寫C程序,附上一本書《unix環境高級編程》。

Windows很好很強大,但是如果你想提高你的技術試着用Linux。 每個人的看法可能不同的,但是如果要學得相對全一點,請到Linux。當然也可以選擇成爲Windows的高手。Windows要成爲高手有點難,Linux的學習曲線可能會有點陡。

所以有這樣一本書《鳥哥的Linux私房菜:基礎學習篇》,在我們實驗室512(ps:很受程序員歡迎的數)中幾個都是以此爲基礎學的。所以,請不要相信計算機學得好的都在計算機專業。魯迅學的也不是中文,你說是吧?

專業課

學好你們專業的課,比如《數據結構與算法》、《操作系統原理》、《編譯原理》之類的,這類的書首先考慮國外的,再考慮國內的。如果看不懂所謂的數學,可以考慮一下《具體數學》。

雖然我不是計算機專業的,但是我開始學計算機比較早,其中可能走過一些彎路。數學在有些時候也是很重要的,不過我覺得國內的教育太坑人了。所以可能需要一些國外的計算機數學方面的建議。

我可能是沒寫好本專業的課,但是我達到了本專業的要求,可以做出想要的東西。所以,要對自己的大學有一個好好的規劃。

發展建議

代碼閱讀

看別人寫的代碼。這是一個很省力的成長方式,有一本書叫做《代碼閱讀》。可以試着用這個當起點去學習,其中也提到了C的很多用法,所以那本書是一個很好的起點去學習。

更多的開源程序在Linux上面,所以這部分可能需要有Linux系統作爲基礎,所以儘快換成Linux,雙系統切換。如果實在有Windows強迫症那就單Linux運行。

編程+項目

更多的編程+項目。試着用做一些東西來學編程,而不是按照書上說的一步步的來。國內的書可能更多的按步就班的來。所以,用實現功能來學習編程,再慢慢來。

私活有時候是一種很不錯的成長方式,在大學中做了幾個網站,成長得很快,也有收入。雖然大部分都是源自網站前端的,但是請相信前端也很複雜。可能你們上的課和現在的不一樣了,現在的前端的位置比課堂上的那些老師說的重要得多。服務器的配置再高也會有個限制,但是將一些計算放在用戶的瀏覽器裏,是一種很划算的方式。

至於有些編程經驗嘛,可以由比賽中獲得,印象中計算機系會有很多比賽。

閱讀書籍

如果有一天你覺得自己寫的代碼不行的話,請試着用《重構》這本書來改善你的代碼。

如果有一天你覺得面向對象的思想不夠的話,請試着閱讀《設計模式》來提升。

如果有一天你覺得沒學好C語言的時候,請試着閱讀《C和指針》。

。。。

所以,當你覺得不足的時候,請閱讀。

(PS:大一到大四看了500左右的計算機書,因爲想了解全一點,所以看得有點多,習慣於像福爾摩斯一樣的作法。剛那些東西當成書庫一樣存儲,以使自己找到更合理的解決方案,但是後來發現有時候是不可取的。現在的結果是編程經驗遠遠不足,好在未來的東家看好我。)

多寫博客

至於爲什麼,請參考一下我寫的上一篇文章。

《REWORK》啓示錄 招聘筆桿子——程序員爲什麼值得寫博客

我的大學目標

僅做參考,大學做了一個簡單的目標規劃,但是都實現了。

  • 找個女朋友(很好的一個妹子,希望能一直在一起。)
  • 400+的書籍閱讀(實際500+,書架上70+)
  • 能做想做的東西(硬件+軟件)

ThoughtWorks的offer讓我的大學更圓滿了。

大一請好好加油,路還很長。我和你一樣周圍的人都是如此不思上進,問題在於要讓自己更自律、自覺,有一天你會發現自己技能上強大了,心理上強大了。還有的話試着找個女朋友,考慮在以後,而不是在大一大二。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章