一個在讀學生的疑問及我的回覆--陳志武的建議

http://zwchen.iteye.com/blog/1103516 原文鏈接地址

我經常收到類似的站內信,然後花上半個來小時回覆(我擺文字真的非常非常慢)。
這個郵件的回覆只是我的一點體會,我承認任何人都有思維定勢,我也不例外,所以僅供參考。
如果有人還有類似的疑問,就在這篇文章後提問吧(因爲我總是重複寫一遍類似的文字)。如果沒有ITEye賬號,可以通過微博私信(zwchen),然後我copy到這兒。

引用

博主,您好,首先非常感謝您能抽空看看這條短信,第一次就給您發這樣的短信,覺得有點不好意思或者說是愧疚,我時不時的看過您的博文,感覺很實在很中肯,希望能從前輩那裏得到一點指導。
小弟目前是一所二流本科大學軟件工程的學生,目前大二了,因爲學校不是很好所以有考研的打算,準備考MSE,而不是計算機科學(這個難度大點)。考研是希望學到更多的東西,也希望能找到更好的工作。
目前有些不太清楚的地方,想問問:
1、算法,由於我選的是j2ee方向,目前感覺算法在平時的項目練習(大多是web應用)中運用的很少,但是有時候又覺得算法是很重要的東西,也聽學長說做那麼多項目還不如去積累有用的算法,所以很想知道對於以後工作中需要用到的算法,應該如何去學習和掌握(曾經試過做ACM,不過發現上面的題都比較難,再由於練習的很少,所以設計算法的能力也不是很好。數據結構這門課,雖然是也學了點,不過感覺能用上的很少)
2、英語,這個一直是比較頭疼的問題,久了不去複習就會很快的遺忘,但是複習又要花很多時間(語法,單詞,短語....),不是因爲考試或者做題,也基本是不會去看的。閱讀對我來說雖然問題不大,但是否工作中就真的需要口語能力?
3、對於技術的學習,就目前只學習了java基礎,struts1.3,jsp這些課程,感覺自己除了會用點之外,其他的什麼都不知道。後面還會學習hibernate,spring,ajax。其實就是覺得,老師就只是教會了我們如何使用工具,但是沒告訴我們爲什麼,雖然我認爲要成爲一個優秀的 java程序員就會這些還遠遠不夠,但是自己也不知道該怎樣學習來讓自己更加透徹的瞭解自己所學的東西。
博主,您好,首先非常感謝您能抽空看看這條短信,第一次就給您發這樣的短信,覺得有點不好意思或者說是愧疚,我時不時的看過您的博文,感覺很實在很中肯,希望能從前輩那裏得到一點指導。

XXX同學:
一個大二的學生,會思考這些問題,本身已經超越於很多同齡人了。
我有如下建議:
1、堅決不要讀研,計算機是一門應用學科,強調實踐(化學、醫學、歷史可以考慮讀研)。再說,你聽說過多少IT技術是在實驗室發明的?讀研學習三年,不如工作一年,而且對你找工作並不利(碩士畢業上海一般6/7k,但實際上還不如本科工作兩年的),我很少見到讀研是因爲對計算機感興趣,而不是延遲就業。
2、工作後,看你進入研發還是開發。研發一般非常細分,比如視頻解碼,開發一般都沒有多少技術含量,特別是軟件外包(可能貢獻了中國軟件產業60%以上的GDP)。工作中需要的技術,如果有大學的理論功底,學起來非常快,像Hibernate、Spring這類框架其實很簡單,如果你理解背後的思想。但理論功底不是看書學來的,而是做項目,然後回過頭來思考那些理論,如數據庫的索引原理及實現。
你可以,多讀框架源碼
你可以,用Sniffer hack、分析網絡數據包
你可以,多看書,一年看上二三十本
當然了,興趣是一切成功的鑰匙,如果你喜歡鑽技術,我所說的都是廢話,因爲你都會悟出來。
如果你想學習一門技術,一定要反覆問自己一個問題:這門技術是解決什麼問題的?或者說,爲什麼會產生這種技術?
我先提幾個問:爲什麼會出現Hibernate?Thread是解決什麼問題?EJB的本質是什麼?
大家可以花幾個月來思考。
3、算法,不一定是排序和查找,大學只是以此作爲算法的入口,你想,如果不這樣,還有其它更好的題材教授算法嗎?數據結構永遠優先於算法,垃圾結構,最好的算法都要打折扣,就如同房子建歪了,再好的鋼筋水泥有什麼用呢?
絕大部分規範都是以數據結構形式展現的,如TCP、BT、MP3、JPG、SOAP,甚至flash通訊的AMF二進制流...
你不一定要精通大學教程的算法,不過它對你畢業面試很有用,工作基本上用不着(屬於基礎類庫),但是你必須精通一些。你可以瞭解一下圖片格式或文本格式,如pdf規範,可能對算法和數據接口更宏觀些,也有趣些。
學習只能在有樂趣時才能深入、持久。


有幾門大學課程務必學好:操作系統原理和實現、數據庫原理、TCP/IP協議、離散數學、計算機組織與結構等,同時精通一門語言及用該語言實現的算法,這些我曾經都是自學的。但最好的學習是實踐,你可以參加一些開源項目,以它爲線索,帶動你的學習。


孤立去考高分,效率是非常低的。
4、英語,你要是沒興趣就別學算了。不過,英語是計算機的母語,深入的計算機知識,需要查wikipedia和英文幫助文檔,而這是英文的。
你瞭解Event Driven Architecture嗎?有深入的中文文檔嗎?,不瞭解它就不瞭解GUI編程。
沒興趣,基本上英語學不好,有人讀整個大學,70%時間都是考CET-4,可惜啊。
5、學習任何時髦的框架,都必須在項目中實踐,當然看書也是必須的。邊做項目邊看書。讀書和工作那幾年,我幾乎把Java和IT領域所有知名書籍都翻過了(我買過好幾千塊的IT書)。
最後,重複一點:單純看教程、然後做習題,這類中學六年延續的學習方法,非常枯燥、低效,必須改進。嘗試自己動手做項目,比如做一個媒體播放器。

 

 

總結一下:

1.計算機需要實踐+閱讀,單純的看書沒任何效果。

2.英語如果能掌握專業英語就很好了。

3.邊看書邊做項目

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