1. 程式人生 > >IT學生解惑真經 轉 (真的好經典 )

IT學生解惑真經 轉 (真的好經典 )

                生而知之者,孰能無惑?惑而不從師,其為惑也,終不解矣。

--------韓愈《師說》

在校的IT學生有幾百萬

都在為如何如何學習才能找到工作、融入社會而迷惑

我們需要的不是靈丹妙藥

而是一本讓你少走幾年彎路的

IT學生解惑真經

肖舸  楊中科 左飛  著

這是一部寫給在校計算機專業學生的書

如果沒有看到這本書

你可能會茫然無措的度過學習階段

把這本書推薦給你的同學

你會得到更多朋友

中國IT領域的發展速度之快令世界矚目,但是中國的計算機教育卻沒有能夠跟上。因此,在各大高校擴招的同時,IT培訓機構同樣發展的很快。

然而,學習IT的學生卻仍然面臨著其他專業不一樣的困惑。因為IT技術發展很快,而課程體系並不能很快跟上,因此學生在學校並不瞭解企業需要什麼,自己需要學習什麼。

正是在這種情況下,CSDN作為最大的IT技術社群,我們看到了IT學生所面臨的困惑。於是專門推出了學生大本營(http://student.csdn.net),邀請了上百位在企業一線的技術高手和專家,IT培訓機構的精英老師加入進來,針對IT學生所面臨的通用問題進行解答。這些老師是站在過來人的角度,耐心的分析現在的市場、同學的心理,以及面臨的機會和挑戰,更重要的是,每位老師都給出了具體的建議。只要認真的讀取這些老師的回信和總結,你總能從中獲得自己想要的答案。

韓愈的《師說》中寫道:“非生而知之者,孰能無惑?惑而不從師,其為惑也,終不解矣。”有了這些困惑並不可怕,可怕的是不知道如何尋找答案和解決問題的方法。

現在,就開始在這些老師的文章中尋找答案吧。

CSDN創始人 蔣濤

IT學生解惑真經

目    錄

如果你是一個計算機相關專業大學低年級學生,那麼這篇文章就是為你寫的。我之前曾經發過一篇博文《大學計算機專業那些課》來談論大學中各門課程的意義和重要性。那是針對更寬泛的範圍來說的,這篇文章則更加精要和簡約。

有很多同學發出過這樣的疑問“到底應不應該考研?”,很多同學都被這樣的問題困擾著。“考研”這個詞圍繞在我們每個人周圍,學校海報欄中最大的廣告一定是考研培訓班的,學校書店裡賣的最火的書一定是考研的輔導書;同學們之間經常聊的也是“你考不考研,想考哪兒的研?”,彷彿不想考研就是沒追求的表現。

我到學生大本營半年,發現大家都沒有討論過。那就是,做什麼最賺錢?無可否認,軟體可以實現各方面應用,不過,就我的觀察,在現實生活中,有兩種軟體最賺錢,一種是資料庫,一種就是嵌入式底層的東東,嗯,隨著網際網路的發展,目前做網路程式也很賺錢。

目前在學生大本營裡,我也觀察到,很多二本,三本的同學,在心裡上有種自卑感,總覺得考分低了,出來就低人一頭。這點,我是萬萬不贊同的。人一生是很複雜的,和鄧大爺一樣,三起三落不到頭,關鍵是,你現在準備做什麼?你能堅持多久?

目前,感覺很多同學,在雙選會簽約,工作地點的選擇上,有一定的盲目性。很少有人能主動地去選擇合適自己的城市,因此,這裡提出一點討論。一家之言哈,歡迎拍磚。

目前大學裡面有句話:“幹得好不如嫁得好!”,我想大家都聽說過。其實是人就有惰性,也有一些劣根性,都想找一些活少拿錢多的工作,舒舒服服地賺錢,這種思想,其實不管男人女人都有。我自己也有,呵呵。關鍵是,社會是公平的,一分貢獻,一分收穫,哪有那麼多不勞而獲的事情。

被很多同學問,怎麼才能知道用人單位的需求。這個給個建議哈:去CSDN或者其他什麼網站的專案外包欄目看看,裡面的需求,就是別人肯付錢的需求,自己試著實現一下,比較練技術。如果能賣出去,就表示技術練差不多了,可以憑這個專案經驗找工作了。個人感覺,這個專案經驗在找工作的時候,有時候比學歷證書管用。

什麼叫程式設計的內功?我的理解,就是對這個世界的抽象化理解能力以及描述能力。一個工作,能迅速從中提煉出下次可以重複的套路,並且能以一定的規則,就是計算機語言規範,描述出來,擁有這兩個能力,就能保證遇到任何問題,都有辦法寫出程式來。所以,大家學校中學了很多數學,語言,演算法,資料結構,甚至編譯原理,作業系統,其實這些統統是工具,不是寫程式的目的。

大家不妨捫心自問一下,學培訓班,是為了找工作,還是為了跟風,還是為了學到真本事?自己有沒有決心,讓這7k物有所值?如果大家能像這樣有割肉的感覺去學習,把自己往死裡逼,這7k就花的值得,該學,如果沒有這個勁頭,學了和沒學一碼事,建議還是省省吧,替你爸爸媽媽省點錢。

我問過很多年輕的朋友,他們在找工作的時候,最看重什麼?答案很多啦,公司要夠大,薪水要夠高,要有足夠的挑戰性,要有成就感。。。等等,當然,也有一臉茫然的,那是還沒有想好的。其實後來我考慮了一下,這個話題可以換個方式問,就是大家為什麼需要找工作?其實人生活在社會上,公司裡,最關注的,還是安全感。

總是被同學們問到,如何學習C和C++才不茫然,才不是亂學,想了一下,這裡給出一個總的回覆。一家之言,歡迎拍磚哈。

在大本營看到很多同學討論以後的出路,感覺到大家對IT業職業的細分還不是很瞭解,這裡就我的經驗,給大家一點參考,希望能幫到大家。一家之言哈,歡迎拍磚和補充。我在IT業很多年,也仔細分析過IT業的職業構成,就我的瞭解,其實IT業也在細分,大致分為如下幾種……

我看了你的信,你說大學沒有學習好,虛度了光陰,現在培訓班,覺得自己缺乏鑽研(注意,不是專研)精神,不想做技術了,想做業務,我根據你的文字,理解這個業務就是銷售工作。但是又覺得自己這麼多年在技術上投入過多,捨不得。

什麼都想學。恨不得把所有的知識統統都塞到肚子裡去。看到什麼,想學什麼!這是幾乎所有在校大學生的通病。但是,這不是壞事,甚至可以說是好事。說明了你“求知慾”高!總比那些,生活沒有激情,整天知道泡妞、上網、打遊戲、混日子的強。

在你的問題中,你有一個大前提,就是金融危機,導致就業機會偏少,我個人認為,其實沒有必要這麼悲觀的。你的問題讓我想起了十年前,98年到2000年的經歷,估計你那時候還沒有考慮到就業問題,不過當時我可是身歷其中,現在想想,其實當時有很多想法也不是很正確。

在罈子裡混了這麼久,看了很多同學的程式碼,感覺到大家的程式碼,學校裡面的書生氣有點重,對於細節考慮不夠,有時候,感覺和吃了顆蒼蠅一樣,確實很不舒服。這裡根據我個人的經驗,給大家簡述一下,工程化程式碼,以及簡單程式碼,不容易出錯的程式碼的一些基本寫法。

左飛老師

如果你是一個計算機相關專業大學低年級學生,那麼這篇文章就是為你寫的。

我之前曾經發過一篇博文《大學計算機專業那些課》來談論大學中各門課程的意義和重要性。那是針對更寬泛的範圍來說的,這篇文章則更加精要和簡約。因為這裡研究的僅僅是核心計算機課程,更重要的是,這裡要說的是這些課程之間的關係,以及它到底講得是些什麼東西。我想這些課程最終是要組成一個體系的。

請注意我這裡所說的是通常情況下的核心課程,每個學校在課程設定是可能是存在差異的,但總體上框架應該是不變的。

最開始的第一門課應該是“C語言程式設計”,這基本上屬於你日後一切學習的開始,簡單說這門課程的主要目的和內容就是介紹一種計算機語言的語法內容,至於怎麼學好它,之前的文章都談過了,這裡就不羅嗦了。

之後的課程會分為三條線,第一條線的第一門課程是“資料結構與演算法”。這很簡單,一些有了語言基礎之後,為了更好的使用語言去解決問題,就必須學習結構知識和演算法。至於怎麼學好它,之前的文章也談過了——請注意,如何學都不是本文的重點。本文的重點在於告訴你你將來都會學些什麼以及該學些什麼。

“資料結構與演算法”的後續課程是什麼?答案應該是《編譯原理》。很奇怪吧?課程就是這樣設計的,其實這個路線也不是我發明的,國外大學的CS Course的體系也是這麼設計的。編譯原理說白了就是介紹編譯器如何工作的,是讓計算機理解計算機語言的一種方法和理論。這個工作過程之中蘊含了大量的演算法,而且是非常複雜的演算法,很多人甚至認為編譯原理是計算機專業本科階段最難的一門課程。主要就是因為這裡面的演算法太複雜,當然也會用到很多結構,樹可能是用得最多的。當然,這就是相當於是資料結構與演算法課程的一個後續性課程,類似一道附加題。最近聽一個學生說有些學校本科已經取消這門課了,我想應該是較少一部分學校的做法吧。不過,中國的學習並不太重視這門課倒是真的。一般課程設定就是一個學期左右的課時。但是一般的國外學校這門課都要學上1年,甚至兩年之久。這條線路到編譯這裡就應該是終點了。

下面我們來談談大學計算機課程學習的第二條路線。

在你具有了一定C語言基礎之後,除了前面講的第一條路線以外,你已經可以開始下面這條路線的學習了。

為了更好地探究計算機系統的研究機制,在學習了C語言之後,下面一門需要學習的課程是“組合語言和微機介面技術”,這門課程包含兩部分的內容,一部分就是組合語言,彙編是一種更底層的語言(相對於C而言),說白了它就是一種“用助記符描述的機器語言”。很多人剛學彙編的時候都覺得很複雜,因為它跟硬體緊密相關,就是那些個暫存器也夠初學者糊塗一陣子的。這門課程的另外一部分內容是微機介面技術,目前國內高校這部分內容都是基於80X86系列晶片的。已經可以看到這門課其實涉及到了很多硬體的知識,其實還不止,關於I/O控制,暫存器,中斷,這門課裡都有體現的。

接下來要學習的內容就是《計算機組成原理與體系結構》。其實我特別奇怪,我在寫學習路線1(也就是前一篇文章)的時候,有讀者認為在學習C語言之前,或者在學習其他專業課程之前,最先要學的就是這個東西。我不知道大家是不是覺得大學第一門專業課就是這個,我覺得這麼想的人是不且實際,信口開河的。這門課程還是比較深的一門課程,在彙編和介面之後安排這門課程是比較的。不過國外的一些先進的計算機教育體系確實也有在較開始的時候開設一門概論課來作為導引,有時候叫Computer System Introduction,有時候叫Computer Culture,其實內容差不多,但作為計算機專業課程的導引課程,這些課程的設定裡面已經設計到組原和OS的初步內容了。但這和Computer Structrue & Architecture還是有區別的。

接下來的一門課程是《計算機作業系統》,如果外行聽起來可能覺得這個課應該是學如何使用作業系統的吧,就像“WindowsXP 速成”?非也!這門課程是講OS是如何設計的,或者說是如何實現一個OS(當然做要比說起來難多了)。之所以這門課程被安排在組原之後,那是因為這反映了一種自底向上的學習路線。作業系統當然是在計算機系統之上來搭建的。向排程啊、虛擬記憶體啊這些問題都是由作業系統來控制的。我最近所寫的《程式碼揭祕》基本上是屬於這條路線上的內容的,不同的是我採用了一種更貼合讀者理解方式的描述,因為在講述這些原理之前,我都是採用C語言例項來作為引子的。有空也推薦大家看看,應該學校裡的圖書館是可以借到的。前一陣子一位四川大學的計算機青年教師給我寫信談起我這本書時,我才知道高校的圖書館裡原理已經可以借到了。以上就是大學計算機課程學習的第2條路線,下面我們來講最後一條路線。

最後一條路線屬於應用型的,也就是說當你學完了基本的原理之後,一方面為了日後更好的工作,另一方面如果從事研究工作也可擇其一而繼續深入探究,那麼最好總之要上升到一定應用層面的東西。

在你有了一定的C基礎之後,學校可能會開一些面向物件程式設計方面的課程,可能是C++或者Java,因為面向物件的語言在實際開發中正廣泛的被使用。無論是C++還是Java,跟C來說本質上都是語言,只不過他們多了一些OOP方面的特性。如何學好它們,我前面的文章中已經談過,這裡就不多言了。

接下來的一門課程應該是“資料庫系統”,這門課不是教你怎麼使用SQL SERVER或者DB2的,學校裡的課程遠沒這麼前沿。資料庫系統這門課依然偏重更多理論,儘管資料庫相比於組原和OS來說已經是上層建築了。這門課講的多是些資料庫系統設計方面的原則,例如如何解決關係問題或者SQL語言等等。

再之後可能會學的課程是“計算機網路”,這門課裡會更加系統的向你介紹網路方面的知識,TCP、UDP,HTTP這些名詞會粉末登場。注意這門課一般不是教授你如何佈網的,例如如何配置路由器這種東西一般是CCNA裡面的內容了。這門課裡講的更多的是上層原理與協議。

以上就是一般的大學計算機課程學習的幾條路線。他們彼此聯絡,共同作用。注意我這裡講的內容不是給你推薦學習方向,而是告訴你大學裡會學什麼,之間聯絡如何。從之前的文章評論裡不難看出,有的同學好像根本沒理解文章的意思,說自己好像更適合哪條路線的樣子,其實適不適合哪條線的問題根本不存在,這些東西你都得學,既然學就要學好。本身就是一個體系的,怎麼能做瞎子摸象的事情呢?現在CSDN學生大本營搞得不錯,資源很多,訪問量很大,但也能客觀的看出瀏覽的人真的是分好多等的,有的是謙遜而好學的,有的則是蜻蜓點水的過客。浮躁之氣甚囂塵上,胸中無物自然談吐輕浮,看什麼都不求甚解,淺嘗輒止,多少有些自以為是、妄自尊大了。這也是我在此開博四個月餘來的感受吧。希望大家都能保持一顆平常心,戒驕戒躁,平和的埋頭學習吧。

學生評論:

陳俊強(C/C++學生) :

感謝老師抽空寫出這3條線路,我是一名大二的學生,之前在大一的時候參加過思科的CCNA培訓,真的那個時候很開心,能自己把實驗做出來,但是事後深深的思考後,我究竟懂得了什麼呀?難道我只會操作嗎?我深入的問一下那為什麼這個實驗能實現呢?深入到原理性的東西就發現不懂了。跟現在大多數人一下,我也在學習J2EE,但是我已經能從更高的高度去看待這個J2EE體系了,我要求達到的目標是:不僅是懂得操作,而且要懂得原理性的東西。真的,我越來越發現大本營的優點了。

曹秋枝(C/C++學生) :

受教了,很明確的路線。大學裡確實是應基礎為重,為應用奠定雄厚的基礎

河北科技師範學院 劉勤(C/C++學生) :

期待!這個問題從我開始學程式設計起一直在想,我想很多初學者都很需要老師們這樣的指點的...

楊中科老師

有很多同學發出過這樣的疑問“到底應不應該考研?”,很多同學都被這樣的問題困擾著。我今天在這裡向同學們統一解答一下,因為內容比較多,我是一邊寫一邊發表,因此這篇文章會分幾期貼在學生大本營

“考研”這個詞圍繞在我們每個人周圍,學校海報欄中最大的廣告一定是考研培訓班的,不僅很霸道的貼滿所有區域,而且“野火燒不盡,春風吹又生”;學校書店裡賣的最火的書一定是考研的輔導書;每到臨近考研,學校裡的自習室、圖書館一定被考研的同學長期“佔座”;同學們之間經常聊的也是“你考不考研,想考哪兒的研?”,彷彿不想考研就是沒追求的表現。

到考研報名的時候每個班都有相當一部分同學報了名,問到選擇考研的原因,回答一般都是:“大家都考研”、“上大學就是為了上研究生”、“工作不好找,只能讀研爭取好的發展”、“讀研能找到更好的工作”、“想讀研進一步深造,研究專業知識”、“我一直成績很好,不讀研可惜了”、“我父母讓我考研”。

首先我對一些同學的誤解進行一一破解。

誤解一、“大家都考研,我也考”

“從眾心理”是大部分人的心理特點,就像葛優在廣告裡說的那樣“哪兒人多我去哪兒,我就是相信群眾”。在大街上大家都愛往扎堆兒的地方走;在火車站裡哪怕不知道哪兒是進站口,只要跟著大流走,一般都不會走錯;組織班級活動的時候,也經常選擇其他班級去過的地方玩兒。因為“跟著大夥走,一定不會有錯”。在很多情況下“哪兒人多我去哪兒”是非常合理的一種“選擇”方式,因為根據概率來講,大部分人選擇的道路有非常大的概率是正確的道路。好像根據這種說法,“大家都考研,我也就考研”是非常合理的一種想法,可是實際並非如此,因為考研和上邊舉的這些例子有太多的不同。

首先,目的性不一樣。逛街的時候大部分人的目的就是“看熱鬧”,人越多的地方肯定越熱鬧;在火車站裡,幾乎所有人的目標都是“進站”,因此跟著大家走也肯定沒錯;班級活動,大家的目的都是“玩兒好”,其他班級都選擇的地方肯定都挺好玩。可是考研卻不一樣,考研的目的是什麼呢?有人說是“考研成功讀研”,注意“讀研”只是過程,而不是目的,因為你不可能一輩子“讀研”,因此“讀研”的目的才是“考研”的目的。很顯然,不同的同學考研的目的是不一樣的:有的同學是為了考更高的學位,增光耀祖、顯耀門庭;有的同學是為了讀研、讀博,繼續深入學習專業知識;有的同學是為了逃避就業壓力,拿更高的文憑,找更好的工作;有的同學是為了跨專業考研,去學自己感興趣的專業;有的同學是為了能從普通大學考入名校,圓自己的“名校夢”。看似大家的共同目標都是“考研”,但是其實每個人都有自己不同的目標,如果沒有自己明確的目標就加入考研大軍的話,無疑是成為了“群體性盲動”大軍中的一員。

其次,選擇錯誤路線後的後果是不一樣的。大街上有利用大家的從眾心理專門找托兒撐場面的,如果被托兒吸引到這裡,卻發現沒什麼意思的話,大不了再去其他的地方;火車站中偶爾也會有臨時性的排程,你隨大流到了目的地以後卻發現,其實那些人是出站,大不了再走回頭路重新找進站口;選其他班級都選擇活動線路的後才發現其他班的同學太低階趣味了,不符合你們的喜好,大不了這次玩兒的不開心,沒有太大的損失。但是考研就不一樣了,考研失敗了的話,就業的黃金時間已經過去了,再找合適的工作非常難;即使考研成功了,上研以後才發現研究生生活不像自己想像的那樣,各種原因導致研究生畢業以後發展還不如那些沒上研的同學。一旦考研這條路選擇錯了,你是沒法走回頭路的。

從眾最大的好處是不用擔責任,不用擔心選錯了道路造成的後果,因為“大不了大家一起死” 。“死亡率”只是一個統計學上的概念,對於我們每個個體來說,死亡率只有0%和100%,因此在決定從眾之前,需要掂量一下是否這件事情是否“值得”。

在決定是否考研的問題上,千萬不能有“大家都考,我也考”的想法,考研還是不考研,都請“給我一個理由先!”,找到了理由,再往下看。

誤解二、“上大學就是為了上研究生”

很多同學從上大一開始就定下了考研的目標,理由很簡單“上小學的目的是上初中,上初中的目的是上高中,上高中的目的是上大學,上了大學當然要讀研了”,“我一直成績很好,不讀研可惜了”,在這些同學心中,人的前進就是不停的考,有一個網路上流傳很廣的笑話就很能反映這個現象:“學士上面是碩士,碩士上面是博士,博士上面是博士後,那博士後上面呢? 如果你夠勇敢再讀2年是勇士,再讀5年是壯士,再讀7年是烈士,烈士以後呢? 教育部會推出聖鬥士,讀滿2年是青銅聖鬥士,5年是白銀聖鬥士,7年是黃金聖鬥士。畢業以後願意再讀上去的女孩子有機會考出--雅典娜”。

如鵬網的朱老師講過一個真實的故事,他認識的一個人,學習非常厲害,上大學、考碩士、考博士,都是一路順風,畢業後又考過了司法考試(難度非常高的考試),能考得試都讓他考過了,然後發現自己“沒得可考”了,失去了奮鬥的目標。最後只好進入法院工作,發現自己無法適應實際的工作,找不到以前那種考試時春風得意的感覺,每天都要處理很多自己不願意處理的事情,最後竟然精神分裂進入了精神病院。

上大學的目標不只有“考研”這一條所謂的“出路”。按照嚴格的區分,研究生是為有志於從事本專業深層次理論知識鑽研而設定的,其培養的目的是“研究員”甚至“科學家”。但是,由於大學擴招、國家產業結果不合理等原因造成大學生就業率和就業質量嚴重下降,而“研究生擴招”則可以暫時“飲鴆止渴”性質的提升所謂的“就業率”,同時,有些人出於不同的目的也想利用“研究生擴招”大撈一把,因此他們利用在社會上、媒體上的話語權,大肆鼓吹“本科畢業以後還是考研好”,這更是使得很多同學認為“上大學就是為了上研究生”。

同學們可能已經看到了我在上邊給“出路”兩個字加了雙引號,的確,考研不是本科生的“出路”,因為“考研、讀研”只是過程,不是出路,除非你想一輩子考呀考,以死前考上“雅典娜研究生學位”為目標,否則一切過程的真正的目標都是“工作、賺錢、娶媳婦、生孩子、養二老、買房、買車、買油、買面……買墳”,你所做的一些事情都應該圍繞這個最終目標而進行規劃。

不要把“考研”當成唯一的出路,考慮自己的情況,考慮“工作、賺錢”這一終極目標,做出自己的決定。

誤解三、“現在工作不好找,只能讀研爭取好的發展”

這是相當一部分同學決定考研的理由,因為聽說畢業工作不好找,害怕“畢業即失業”,因此把希望寄託於通過讀研進一步提升自己的實力;有的同學則是到了大四才發現自己沒有工作所需要的本領,害怕面對找工作,“考上研究生就能多爭取兩三年學習時間,上了研一定好好學”。

現在的工作真那麼不好找嗎?就業機會真的那麼少嗎?別的專業我不敢妄加評論,看這篇文章的同學大部分都是可能畢業以後要從事IT相關工作的,根據我工作這些年接觸的來看,很多IT企業有“人才荒”的現象,也就是很多職位長期缺人,招不到人。有同學聽到這裡疑惑了“怎麼可能缺人呢?每年畢業這麼多學生?”,有一句話很傷人、也很找罵,但是我又不得不說“企業不是招要飯的,不是隨便招一個阿貓阿狗湊數就行;企業要招的是能幫它賺錢的能人”。

難道是企業裡對學生們的要求太高了嗎?來聽聽企業招聘人員的評論吧:

“招聘啟事發出去了,郵箱很快就被簡歷撐爆了,但是大部分簡歷都是隻有個人資訊、專業課程設定、從小學到大學的考學履歷,最後跟著一封熱情洋溢、廢話連篇,卻空無一物的求職信,好像這幾千份簡歷都像是一個人的簡歷一樣,沒有絲毫自己的特色。真不知道除了他滿足我們在招聘啟事中說的‘2010屆應屆生’以外還有什麼其他條件滿足。”

“一個學生來應聘網路管理員,我問他一臺計算機連不上網了,有可能有哪些問題,你會怎麼進行故障排除。那個同學竟然支支吾吾半天,一句完整的話都沒說出來,哪怕說一句‘可能是網線斷了’都行呀!”

“一個學生來應聘軟體工程師,我問讓他寫一個列印菱形的控制檯程式,這是C語言教材上前幾頁的最簡單的程式,竟然愣了半天一行程式碼都寫不出來,問他當時C語言考試是怎麼過的,他回答的很乾脆‘就那麼過的’!”

其實企業裡對應屆生要求並不高。比如對於軟體開發職位的學生來說,企業裡的要求就是“有程式設計的感覺、動手能力強、好學”,不需要你懂這個工具、那個工具,不需要你會這個語言、那個語言,不需要你懂這個框架、那個框架,只要“有程式設計的感覺、動手能力強、好學”,那些工具、語言、框架公司只要培訓一下就可以掌握,“有程式設計的感覺、動手能力強、好學”也不是隻有聰明的學生才能具備的品質,只要智商正常,平時多動手、多寫程式,成為“有程式設計的感覺、動手能力強、好學”一點都不困難。可是實際情況是,縱觀一個有50個學生的班級,有10個人對學習完全不感興趣,有10個人對本專業完全不感興趣,有10個人迷迷糊糊,有10個人只會死讀書,還有5個人今天學兩頁C語言、明天學兩頁Java、後天學兩招黑客技術,真正能踏實下心來多動手、多寫程式的能有兩三個就相當不錯了。

有一個笑話大家都聽說過: 有兩個人在森林裡散步,忽然出現了一隻大老虎,一個人忙伏下身去繫鞋帶。

另一個人問:“你係什麼鞋帶啊?你難道還能跑得過老虎嗎?”

這個人說:“我那能跑得過老虎啊。不過我只要跑的過你就行了!”

在班級裡學習成績名列前三名是比較困難的事情,但是成為被企業相中的兩三個人卻是非常輕鬆的事情,因為大部分人不會“多動手、多寫程式”,而你只要“多動手、多寫程式”就足夠了。有同學會問“我們班的同學都看了這篇文章,那豈不是他們都和我一起努力競爭了,我又沒有優勢了?”,同學們太高看我了,我沒那麼大的能量,我不比遊戲更能吸引同學,很多你的同學根本不會看到我這篇文章,哪怕有人看到也只會隨便瞄一眼,而能認真看完這篇文章的則又少之又少,認真看完這篇文章並且相信我講的這些道理並且長期堅持照著做的能多一個我就很欣慰了。

因此那些害怕工作不好找而想考研逃避的同學大可不必擔心,只要你能比身邊的同學多努力一小點兒,就可以很輕鬆達到企業對應屆生的要求。及時那些大一、大二、大三都玩兒過來的同學也不必擔心,踏實下心來,用剩下的半年到一年的時間集中強化一下自己,想搞程式設計的吃準自己最熟悉的語言多練、多寫,想搞網路管理的同學報一個思科培訓班苦練實際的技能,想搞嵌入式開發的同學弄個開發板把常用的嵌入式功能實現……,相信半年之後達到企業的要求輕而易舉。

如果你只是怕工作不好找而考研的同學到這裡就不用往下看了,關了這個網頁抓緊“繫鞋帶”去吧。

誤解四“我父母讓我考研”

現在有一些大學生讓人感覺很可憐,從小就被家長安排著,早餐吃什麼、買什麼衣服、放學了去哪兒玩、週末做什麼、上哪所小學、上哪所中學、學文科還是學理科、報哪所大學、考哪個專業……一切一切都聽父母的。

在我們小時候,父母在我們心中就是超人,什麼都懂、什麼都能幹,可是你在茁壯成長,父母卻在慢慢老去,總有一天在知識、閱歷、判斷力上會不如你。父母永遠是愛孩子的,做的一切的決定的初衷也是會孩子好的,可是有時候他們的好心會辦成壞事的。

我認識的一個在讀碩士的朋友說,他父母在規劃他未來的時候,說他家裡幾代人沒出一個“有文化”的人,希望他好好努力,能考多高就考多高,“碩士上完了,考博士,博士考完人考博士後,無論你考多高我和你媽都全力供你上學,咱們要增光耀祖!”,可憐天下父母心呀,希望孩子成為地位高的人,這樣以後就可以說“我們家孩子是博士後!”,他們連“博士後其實是找不到工作的博士,不是比博士更高的學位”這樣的事情都不知道,他們的安排我們怎麼能聽呢?

父母給了我們生命,供養我們長大、上學,是永遠值得我們去尊重和孝敬的,但是他們的想法並不總是對的,如果不自己分辨只是一味聽他們的話,早晚有一點會被他們的好心害慘的。

有一個很老的紀錄片叫做《狐狸的故事》,它講述了一個自然界的生存法則:一窩小狐狸出生了,在老狐狸的呵護下成長,小狐狸漸漸長大了,外形已經顯得跟父母一樣高大。老狐狸一朝突然變臉,驅趕小狐狸出門。被趕出家門的小狐狸好生可憐傷悲,不願離開,一次次回家門口,但是老狐狸不僅不讓小狐狸進門,反而以“瘋狂地嘶咬”的方式,生把小狐狸攆走。從此,小狐狸一個個無依無靠,形單影隻,在飢惡、天敵和獵人的脅迫下到處流浪。經過重重考驗,小狐狸終於獲得了在惡劣的條件下頑強的生存的能力。狐狸尚且懂得這個道理,那我們人呢?

有的家長是懂得這個道理的,從很小就培養孩子獨立做事、獨立思考的能力,家長不對孩子輕易做干涉,最大程度的尊重他們自己的意願,這樣環境中成長的孩子往往能成為社會中的強者。但是不幸的是,大部分的家長是不懂得這個道理的,只要他們還能動,就盡他們的一絲力為孩子創造條件、選擇道路、掃清障礙,慢慢的培養了一批離了父母就無所適從、沒有任何生存能力的孩子。

如果你的父母還在盡力為你做著決定,那麼請你很尊敬的告訴你的父母:“爸!媽!謝謝你從小到大為我做的一切。現在我長大了,我要學著自己做決定了。我會向著進步的方向前進的,不要擔心我。是不是考研我會自己決定的,我會認真考慮你們給予我的建議的。我會找到自己的路,無論做什麼決定,我都會做一個好孩子。我要成長為一個有能耐的孩子,然後有能力孝順你們,贍養你們!”。

無論是在是否考研這件事情上,還是在以後的其他事情上,把父母的建議當成一個朋友、一個長者的參考,然後最終自己決定吧!

誤解五“很多工作都要求碩士學歷,找工作的時候滿地都是碩士”

    很多同學聽說過類似的傳言:現在找工作的時候大部分公司都要求碩士以上學歷,哪怕只要求本科學歷的門前也會有好多碩士生來求職,我們“小本”在他們面前沒有任何的自信,不讀研怎麼行。

“大部分公司都要求碩士以上學歷”這是明顯帶著偏見得出來的結論,很多同學看到如鵬網的“就業資訊”貼出的招聘資訊以後就感嘆“怎麼這些公司都要求碩士學歷呀!”,但是其實理性的統計一下,要求碩士以上學歷的職位不足10%。經過分析可以很容易的發現,要求碩士以上學習的公司或者職位一般都有如下的特點:國字頭、中字頭的單位,比如中國移動、國家電網、中國工商銀行;國家機關、事業單位,比如省公安廳、紅十字會;高校、科研機構。由於眾所周知而在這裡又不方便說明(害怕被河蟹)的原因,國字頭、中字頭、國家機關、事業單位中人才的浪費現象非常嚴重,招博士生去看大門的事情都是屢見不鮮的,但是這是事實,他們招聘的時候就要儘可能招高學歷的人,這樣才能達到他們的某些目的;高校、科研機構由於特殊的原因,招聘的人員也必須是高學歷的。如果想去國字頭、中字頭、國家機關、事業單位、高校、科研機構任職的話,必須有高學歷,否則哪怕你能力再強也沒用,沒有那張文憑一切都是白搭。

其實還有另外一些職位也是經常標明“碩士學歷”的,那就是一些公司的“研究院”,比如微軟亞洲研究院、IBM研究院等,這些職位通常都是進行一些前沿領域理論、技術的研究,由於大部分本科生的知識深度沒有達到這些職位的要求,因此這些公司要求碩士博士學歷也是非常合理的,同時這些職位中也一般都是被一些名校的碩士、博士佔據著。但是凡事無絕對,比如微軟亞洲研究院也不乏優秀的本專科學歷的人員。

    除了這一小部分要求碩士以上學歷的職位以外,大部分職位都是隻要求本科或者專科學歷的,道理很簡單,企業招聘員工的目的是讓員工去幫著企業賺錢,因此本科還是碩士對於企業來說並不是重要,哪怕公司所有人都是博士,只要沒賺到錢,公司照樣倒閉。公司招聘一部分高學歷人士的的初衷也是希望他們幹一些其他人“很可能”幹不了的事情,僅此而已。只要你有能力,能給企業帶來收入,人家才不管你什麼學歷呢。

“要求本科學歷的門前也會有好多碩士生來求職”,這是事實,也是很多同學在招聘會上底氣不足的原因。道理也很簡單,為了提升本科生所謂的“就業率”、緩解就業壓力,研究生一再擴招,這批研究生畢業以後早晚還是要流入就業市場,因此就與當時畢業的本科生產生的撞車。有同學會說了:“我一個本科生和一堆研究生掙一個職位我肯定被淘汰呀”,這個擔心完全沒有必要。理由如下:首先,企業招聘的時候都會控制不同學歷人員的比例的,比如招聘20%的碩士生,招聘70%的本科生,招聘10%的專科生,因此不同學歷人員並沒有直接的競爭,和你競爭的還是那些本科生;其次,現在很多碩士畢業生的質量也大大下降,我面試過很多碩士畢業的人,問他做過什麼專案,最後支支吾吾說出來的是做碩士論文的所謂專案,而且明顯是抄別人的,問他計算機的一些基礎知識,竟然連“佇列和堆疊的區別”這樣簡單的問題都回答不出來,問了問他對讀研的感受,他說“我和很多我同學感覺都一樣,後悔讀研了”,聽了這些你還害怕和這些碩士生們競爭嗎?

    因此,如果你是想去國字頭、中字頭、國家機關、事業單位、高校、科研機構熬日子的話,還是去考一個高學歷吧,而且還要把其他的方面也補足一下;如果你是想去國際性大公司的研究院工作的話,也儘可能的去考高一點的學歷,並且不要光有學歷,在研究能力、動手能力方面更要努力,這些公司是靠一分錢一分錢的賺活命的,你沒有能力給他們帶來符合你職位的收入的話,即使你成為“黃金聖鬥士”他們也不會要你。

誤解六、“研究生就業的起點更高”

    聽到有同學說“研究生就業的起點更高,畢業後就能進入高一個層次的崗位,不用從基層還是熬。”這肯定是同學們臆想出來的,或者說是聽那些去國字頭、中字頭、國家機關、事業單位等單位的人說出來的。對於大部分企業來說,其實不同學歷人員的起點並沒有實質的差別。如果非要說差別的話,也是有的,那就是“基本工資”,每個公司都有自己的薪資架構標準,比如新入職本科生的基本工資是3500、新入職雙學士的基本工資是3800、新入職碩士生的基本工資是4000,一般新入職本科生和新入職碩士生的基本工資起點的差超不過1000元。為什麼企業裡會給新入職碩士生的基本工資高一點呢?決定一個員工工資的唯一標準就是這個員工對公司的貢獻度,雖然新員工通過了公司的筆試、面試,但是企業仍然無法分辨出不同員工對公司的貢獻度,只有實際工作中真刀真槍的實幹才能分辨出來,但是在入職定基本工資的時候必須對不同的人進行分別待遇,既然碩士生有實際經驗、學過更深入的知識,那麼就有更大的概率進行更高的貢獻,因此給他們稍微多一點的基本工資也是合理的,但是一個員工的工資不是固定不變的,通常入職後根據貢獻不同都會給予調薪的,這時候學歷就靠邊站了,誰貢獻大誰就拿錢多。

    有同學說“不對呀,聽師兄說,和他一起進公司的碩士生工資漲的比他快呀!”,大家忽略了一個事實,那就是“年齡差”、“加速度”!這位和碩士生比較的本科生師兄年齡估計也比碩士生小三歲吧?碩士學習了三年,知識、經驗都會肯定比和他一起入職的本科生更高一些。因此不要和與你一起入職的研究生比,和那些比你晚三年進入公司的研究生比。就像下面的這張圖一樣:

黑色的線是新入職研究生的能力變化曲線,那麼你究竟是深紅色的線還是藍色的線則取決於你自己的努力了。

三年的研究生學習和三年在企業中實際工作的經驗也是不對等的,在學校裡讀研要學公共課、準備論文、搞烏七八糟的事情,其對人工作能力的鍛鍊絕對和在企業中真刀真槍乾的鍛鍊強度不一樣。因此那些想利用研究生階段積累工作經驗的同學也要仔細考慮一下了,是去企業裡積累三年的工作經驗(賺錢)更重要還是去讀研積累三年(花錢)更重要,每個人的價值觀不一樣,請根據自己的情況判斷。

有一些同學認為的“畢業後就能進入高一個層次的崗位,不用從基層還是熬”也是錯誤的,任何腦子正常的企業都不可能會讓你一個剛畢業的學生當領導,因為人家根本不瞭解你,怎麼能讓你當領導?任何人剛進入公司都要從基層幹起,然後根據不同人的能力才得到一步步的提升。

說了上面幾個誤解,還有一些同學們的關於考研的想法也需要梳理一下。

想法一“想讀研進一步深造,研究專業知識”

這樣的同學是中國未來的希望,中國在基礎理論方面太差了,需要這樣有抱負的同學。但是有這樣想法的同學一定要做好心理準備。在國內的很多大學裡,研究生每天做的工作已經不是“做研究”了,而是在“亂七八糟”。如果你問問很多讀碩士的同學,他們評價導師好壞的標準就是“是不是有活兒幹”,好的導師可以攬到很多專案,然後分給研究生幹,這些研究生都管導師叫“老闆”;壞的導師則是什麼專案也沒有,學生研一去老老實實上一年課,和在本科的時候一樣,研二上半年稀裡糊塗的,有門路的自己出去找兼職,沒門路的則像本科一樣繼續在宿舍裡魔獸、睡覺、上網,研二下半年就開始準備論文開題,開始了東抄西抄的生活,然後很快研究生三年就過去了,進來時候是0,出去還是0,唯一的區別就是多了一張碩士學位證和老了三歲。

因此如果你的夢想是“進一步深造,研究專業知識”,那麼在選學校、選導師的時候一定要多注意,最好選在這個領域有名的學校和導師,如果有可能的話能去美國等發達國家留學最好,因為在很多領域特別是計算機領域這些國家都是處在前沿,而且他們的科研氣氛也更濃一些。

想法二“想通過讀研實現轉專業、進名校的願望”

有的同學由於高考時的種種原因,在本科期間沒有讀自己滿意的專業、大學,想通過跨專業或者跨校考研來圓自己的夢。

我的習慣還是先潑冷水:企業裡是招聘人去幫它賺錢的,因此專業、學校都不是他們關注的物件,根據我工作這麼多年的經驗來看,企業裡同事之間根本不知道彼此的專業、學校、學歷是什麼,甚至連領導都不清楚。無論是你決定考研還是直接就業,那麼都應該把提升個人實力作為首先考慮的因素。

如果你還是決定跨專業、跨學校考研的話,需要做好心理準備,首先導師對於跨專業、跨學校考研的人通常是有歧視的,因為考研錄取的時候導師有很大的自主性,因此經常會出現有些同學考試成績非常高,但是最後仍然落選的情況;其次有的企業裡也對跨專業、跨學校的碩士畢業生有一定的歧視,很多企業招聘裡都註明“要求本科和碩士期間的專業基本一致,本科期間院校必須是211院校”等。雖然這些都是一些軟性的門檻,只要有能力,這些都不是問題,但是同學們仍然必須做好比別人努力更多、受更多打擊的心理準備。

想法三:“不想找工作,考一考看,萬一考上呢”

有一部分同學是懷著“撞大運”的想法考研的,他們的想法就是“萬一能考上呢?就省得找工作了”,這些同學通常都是用“我準備考研,不去找工作”為理由逃避就業,但是平時不看書,連考研的輔導資料都是從圖書館借的,看兩頁就扔到一邊兒去了。用腦子想想看,那些每天都沒白天沒黑夜備考的同學都不一定能考上,這樣的大運怎麼可能讓你撞上呢?

每年研究生考試的時候都有相當數量的考生根本沒去參加考試或者考了一兩門就再也沒去考,理由很簡單,他們根本沒任何準備,怎麼可能考上?

因此那些只是“撞大運”、“借考研逃避就業”的同學還是醒醒吧,面對現實,想一想下一步該怎麼辦才是實際的事情。

想法四:“考研很難,一個名額有好幾十個人報考”

很多同學描述一個研究生名額難考的證據就是“有100個人報那個導師,那個導師只招10個”,其實還是我在這個系列的文章一開始提到的那樣大部分報名的同學都不努力,一部分是撞大運去了,一部分是自我約束力不強沒有認真備考,真正用心準備的沒有幾個人。高考和研究生考試的最大區別就是所有的同班同學都是參加高考的,大家有統一的目標、統一的時間點、統一的學習計劃,而研究生考試則不一樣,不是所有的同學都考、時間進度靠自己安排,因此能從始至終堅持下來,學習方法得到的人沒有幾個,因此只要你能堅持下來,並且學習方法得當的話考試取得好成績並不是非常困難。

想法五:“從大一開始就準備考研”

有一部分同學是從大一就開始準備考研的,大一就開始做考研題、看考研書,這可能是從高中帶過來的學習習慣,這也是很多人管大一叫做“高四”的原因。其實也完全沒有這個必要。在決定考研之前,先把假定自己不考研,然後自己給自己考研的理由,如果決定了考研再想後面的事情。剛才我說了,考研並沒有想像中的那麼難,沒必要這麼過早準備。如果你們學校有保研的機會,並且保研的專業、導師也比較滿意的話,只要把高數、英語等考研公共課以及主幹專業課學好,然後在期末考試中儘可能的拿到好成績、拿獎學金就可以,這樣能爭取到保送名額的機會的話就輕鬆了,可以利用剩下的一年大四的時間繼續充實自己,即使沒有保研成功的話,因為之前高數、英語以及主幹專業課等考研課程學的都不錯,只要花上半年複習一下考研成功的機率也是非常高的。剩下的時間還是要用來多動手、多參與實踐,如果自己在大學前三年把動手能力鍛鍊的很好了,那麼如果考研成功,你在導師眼中也是紅人(考研成功並不是最終的成功,如果在研究生期間是失敗的人的話你最終仍然是失敗的),也就贏得更多的機會;如果考研失敗,憑著自己很強的動手能力和紮實的專業知識、基礎知識,找到一份好工作也並不是很困難的事情。

無論是否考研,大學前三年都應該是以學好專業知識,提高自己動手能力為主。

說了這麼多,很多同學看到我很多時候都是在說研究生的壞話,“是不是因為楊中科老師沒有讀研,而吃不到葡萄說葡萄酸呢?”。說實話研究生教育本不應該像我說的那樣不好,但是這是現實。任何事情都有兩面性,我相信質量過關的研究生學習的利還是大於弊的,只不過現在很多同學被矇蔽了眼睛,只看到它好的一面,而沒有看到他壞的一面,我在這裡把壞的一面講出來,同學們自己根據這些進行判斷自己是否應該考研。

也許你認為我的這篇長達九頁的“解惑”系列文章是我在學生大本營、如鵬網裡發表的最沒意思的文章,因為這篇文章根本沒有告訴你是否應該考研。考研與其他事情不一樣,如果你問我是不是應該喝農藥,我肯定告訴你不應該,因為誰喝農藥誰都會死;如果你問我你中了一百萬,是不是應該去兌獎,我肯定告訴你應該去,因為誰不去誰是傻子。但是考研則不一樣,考研對不同的人、不同的環境有不同的取捨,你只能根據自己的情況進行選擇。我不可能給你答案,因為每個人都不一樣,如果非要一個答案的話,我建議你拋硬幣,正面朝上就考研,背面就不考,這樣你就不用選擇了,可是你願意把自己的命運交給硬幣嗎?

我這裡列出了考研的好處與壞處,請根據自己的情況來決定。很多同學害怕做決定、害怕自己選擇道路,因為習慣了家長為你選擇道路,但是大家要知道做選擇的權利是一個人最應該珍惜的權利,別人可以給你講不同的路的差異,但是不同的人走一條路會有不同的結果,最後走路的是你,究竟走哪條路沒有人可以代替你,希望大家珍惜選擇的機會,選擇好自己的路,然後勇往直前的走下去,不要停止!

The End!

學生評論:

鄧可(C/C++學生) :

長者的智慧。大家都想做的好一點,但是很多人都像這位同學一樣 “為什麼我老是靜不下心來專心做一件事呢”? 問別人是沒用的,關鍵在自己。

華東交大 李鵬(C/C++學生) :

我現在大一,看了這篇文章真是受益匪淺。我明白看了一個道理:只要你有才,不怕找不到工作!

重慶大學 史蘇明(3G/移動開發學生) :

以前還比較懵懂,不知道到底是考研還是工作,看了之後目標基本明朗了。謝謝指導。

學什麼樣的知識才能賺錢?

肖舸老師

這是發在我的郵箱裡面的一封信,這裡做個統一回答。一家之言,歡迎拍磚哈。

(原信篇幅過長,請大家到原帖去看)

我的回答:

這位同學你好,從這封信看得出來你的心情還是很急迫的,你這種心情我完全能夠理解。我把問題分幾點說,儘量說細一點,希望能對你有所幫助。

首先,你說你是09年畢業的大學生,那麼算下來,你應該上班才幾個月而已,就這一點,你能在新的單位幾個月時間就把工作拿上手,首先恭喜你,這說明你是真的很有實力,當年我轉行遊戲程式設計,用了差不多兩年才真正想清楚程式設計的真意,我覺得你比我強。呵呵。

你說Java基本上都是做B/S資料庫,覺得沒有意思,其實這個我也很理解,不過,我覺得你可能不是很瞭解實際情況。這裡我需要給你講清楚,其實不僅僅是Java程式設計師,只要到企業中做應用開發,或多或少都和資料庫沾點邊。當年我用VC還寫報表系統呢,你能說這不是資料庫?

其實有個問題可能大家都沒有關注到,至少,我到學生大本營半年,發現大家都沒有討論過。那就是,做什麼最賺錢?無可否認,軟體可以實現各方面應用,不過,就我的觀察,在現實生活中,有兩種軟體最賺錢,一種是資料庫,一種就是嵌入式底層的東東,嗯,隨著網際網路的發展,目前做網路程式也很賺錢。

其實原因很簡單,就是因為軟體的盜版問題。我想看到我這篇文章的每個人,或多或少都用過盜版軟體,包括我自己,呵呵,咱們中國人窮啊,動輒幾百上千的軟體費用,咱們買不起的,所以電腦城的光碟市場才這麼火爆。

但是,這帶來了另外一個問題,就是當有一天,我們自己成為軟體開發者的時候,才發現,盜版導致我們自己的收入降低,無法維繫生活。這時候,恐怕再來大聲疾呼,杜絕盜版,已經晚了,你說是不?

其實我們可能對市場不敏感,反正每個月發薪水,收入基本上旱澇保收,但是公司的老總們對這個很敏感,軟體賣不出錢,公司就虧本,虧多了,就垮掉了,最終程式設計師還是沒有收入。

因此,公司裡面做軟體,一般都做上面的軟體,即資料庫應用,嵌入式應用,控制類應用,網路服務應用較多。因為這幾種應用,不容易被盜版,能賣到錢。通用性的應用,比如作業系統,比如很多工具軟體,比如PC遊戲,其實很難賣錢的。

資料庫應用,一般資料庫本身是使用成熟的商用系統,如MySQL,SQL Server,Oracle等,我們小公司拿來,再根據具體應用需求,做二次定製開發,這是一大類市場,其實這個市場的真正名字叫做“企業資料應用定製市場”。由於是定製的,自然沒有通用性,也就不會有盜版了。

控制類,嵌入式類,很多都和具體硬體裝置相關,換個硬體平臺就不通用了,大家知道,中國的東東,要防盜版,最好和硬體相關,只要繫結硬體,軟體一般不好到,以前出的防病毒卡,漢卡什麼的,其實利用的就是這個市場規律。

服務應用呢,就更好說了,由於主要程式邏輯都在伺服器端,基於B/S的模型,客戶端連個軟體都沒有,伺服器的管理自然比賣出去的軟體好管理,不容易盜版。因此,這類企業也活得長,比如各個網站,各種網遊什麼的。所以我一直覺得,以後雲計算髮展起來後,很多軟體可能會把零售制改為租用制,比如photoshop,大家買套軟體幾千,但一般人就是處理一下自家照片,自然不划算,因此盜版很多,但以後假如軟體公司把它做成伺服器版,大家把照片上傳,處理,最後再存回來,這個過程每次租金1毛錢,每個人都花得起的話,我看以後就沒那麼多盜版了。另外,伺服器應用其實大多數也是資料庫應用。

所以,我首先要說,不管你是不是換工作,以後你恐怕會一直遇到資料庫類的應用,不管你喜歡不喜歡,但這是社會的現實,你必須承認。你說對吧?

在這個共識下,我們再來看,其實我們會發現,三大主流應用中,只有嵌入式不適合Java,其他的資料庫和伺服器應用,其實Java比C和C++方便得多,因此,我建議你就在Java這條路上走下去,不一定非要轉C和C++。本來你的強項就是Java,而且這也是主流的可以賣錢的市場,為啥不堅持呢?

從另外一個角度說,我也認為你應該堅持,你畢竟畢業不到半年,對社會,對公司,對本職工作其實瞭解並不深入,你認為Java就那麼幾個設計模式,沒有挑戰性,這個我能理解,但是,我覺得你說的不全面。起碼我做程式做了這麼多年,到底有多少種設計模式,我也說不清楚,我相信很多人都說不清楚。需要具體應用具體分析。

我不是Java程式設計師,不過我覺得,如果要做一個合格的程式設計師,首先不應該是程式設計的大師,而應該是理解客戶需求,並迅速拿出解決方案的專家,這個,不管用什麼語言,不管在哪裡工作,都是必須的,同時,這也需要很長時間的積累。

準確的講,我認為,一個人不在一門語言,一種業務領域努力3年、5年乃至10年,是很難成為專家的。因此,我建議你完全沒有必要這山望著那山高,輕易就決定跳槽,建議你就這個環境,先鍛鍊自己,我這裡放句話,你可以試著驗證一下,兩三年以後,你再看Java語言和資料庫開發,都還是會找到自己不會,值得學習和鑽研的東西的。因為最起碼,客戶的需求是千變萬化,永無止境的。

當然,話分兩說,如果你真的喜歡C,很想做嵌入式應用,就是不想做Java,那也無可厚非,因為畢竟每個人都有選擇的權利。

不過,我仍然不建議你辭職回家學習。我以前有句話,大學畢業,才是學習的開始,不過,這個大學畢業後的學習,和學校中的學習,有很大差別,突出的幾點:沒有老師,沒有教材,都是自己主動學,針對自己的需求來學習,學技巧多,學原理少,並且一般都是幹中學,而不是學完了再幹,我總結就是“用以致學”,而不是“學以致用”,這是我總結的學習經驗。

同時,畢業了,總不好意思再向家裡面父母要錢,總得自己賺錢養活自己。你說是吧?你說辭職半年,專心學習,那你沒有收入吃啥?還不是吃父母的?這樣不是很好。

C語言沒有那麼神聖的,也沒有太高的門檻的,不要想太複雜了。另外,指標,記憶體什麼的,學習C語言確實能接觸到,但是,我還是要說,C語言並不是因為有了指標和記憶體的直接訪問,才牛叉,C語言是因為大量的程式設計師用它解決了很多具體應用,才牛叉的。請你注意不要學偏了,不要為學指標而學指標。指標就是指標,僅僅是個訪問工具而已,不是用來顯得很酷的,需要了才用它。

Java語言用個數組,其實也能模擬指標的大部分功能的。其實我作為C程式設計師,我們平時工作時對指標是很謹慎的,能不用都不用,儘量用引用來代替,為啥,因為危險,容易出錯。

資料結構,計算機組成原理,演算法語言,編譯原理,嗯,還有個圖論,這幾門應該算最經典的計算機理論了,但是,也沒那麼神祕的,書店裡面有,自己沒事買幾本回來看看就好了,生活是沒有考試的,不需要你必須考夠100分才能找到工作,瞭解,理解就好了,背書是背不出好程式設計師的。你說對吧?

其實這幾門,不用C和C++語言,用Java語言一樣可以學習的。嗯,編譯原理可能夠嗆,需要理解一點C。

另外,我再給你透露一點點,其實真正實際應用中,我們對於上述基礎知識用得很少,用得最多的,其實就是資料結構裡面的隊列了,其他,包括棧都很少用,C程式設計師也不是每天都從底層,從0做起的,還是有很多工具套用的。這和Java語言從框架開發是一個道理。

反而有一門課程建議你好好學,就是概率和統計學,這門知識是我現在應用最多的,很多時候,我們評估軟體系統效能,瓶頸優化,都是在用這個學問。程式設計師做久了,可能大多數時候都是和這個在打交道,建議買本好好看。

總結一下吧,建議你目前暫時不要辭職,既然選擇了Java和資料庫應用開發,選擇了B/S模型,你耐心做3年再看,也許3年後,你自己的想法就變了。

C可以學,你說的課程都可以學,不過,不要辭職專門學,先賺錢養活自己,再利用時間學習,你這麼大的決心,每天晚上就不要看電視了,那你每天晚上,19:00~24:00,至少有5個小時來學習,利用好了,我敢說比你在大學裡面效率高。

看書學習不是什麼神祕,神聖的事情的,也不需要什麼齋戒沐浴,念幾天經才能學習,我覺得就和我們吃飯喝水一樣,隨時都可以學的,找幾本書,就在床頭放著,每天晚上看看,幾個月也就看完了,又有多難嘛?

關鍵是,養成習慣。

       你說對不?呵呵,先說到這裡,有問題再問哈。

最後補充一點,如果學習C,並且有一定基礎的話,等我書出來看看吧,裡面的跨平臺開發工程庫,可以幫助你迅速掌握嵌入式底層的一些技巧。不過,要有基礎哈,一點不會C看不明白的。

(該位同學繼續來信諮詢並表示了決心,原信過長,這裡不轉貼了,請大家到原帖來看吧

我的回覆:

這位同學你好,我昨天其實已經說明了我的一個觀點,雖然我建議你繼續努力學習Java,不過,每個人都有選擇的自由,因此,如果你還是堅持要學習C的話,我也不反對。

你在兩封信裡面,都強調你原來是個差生,但最後半年知道發奮學習,最終過五關斬六將,成功拿到offer,超過了很多同學,也讓老師的眼鏡掉了一地,呵呵,我真心恭喜你,也很佩服你。

其實我以前有筆記說過,人要發奮,什麼時候都不晚,蘇東坡的爸爸是這樣,小時候我們學的《周處除三害》也是將這個道理的。你能把計算機裡面200G的遊戲和電影刪掉,換成學習資料,嗯,了不起,比我強。

不過,如果我們要討論C的學習路徑,恐怕要讓你失望了。因為C和Java語言並不一樣。並沒有前人規劃好的必然成功之路。

Java語言由於面向應用面相對狹窄,框架模板眾多,最重要的,其主要工作方向比較確定,就是做基於網路的跨平臺資料應用為主,因此,其發展方向很容易確定,學習路線也比較好規劃。

但C顯然不是這樣,C應用面太廣,可以說,彙編能做的事情,C就能做,甚至做得更好,也就是說,我們能想出來的計算機軟體應用,其實都可以由C來實現,僅僅是成本高低而已。

而不同的應用,除了計算機軟體程式設計知識之外,還需要很多應用相關的知識,這就造成了C程式設計師往往也需要成為自己應用方向