考研與就業——答學弟學妹問

iamzxf發表於2014-08-10
考研與就業——答學弟學妹問
    文章作者:孫金田,魯東大學軟體工程2010級學生,在校期曾負責ACM競賽的相關組織工作。在校期曾多次參加省ACM競賽,藍橋杯程式設計大賽,曾獲山東省ACM程式設計大賽三等獎,藍橋杯程式設計大賽山東省一等獎,2013年參加在北京大學舉行的藍橋杯程式設計大賽全國總決賽,獲全國三等獎。   

    我該考研還是就業?考研或者就業之後做什麼?很多學弟學妹們會問我這兩個問題。我當初也曾有過和他們同樣的疑問,作為一個過來人,我覺得有必要寫篇文章把我的心得感受告訴他們,以幫助他們儘量少走彎路。當然,以下內容只是我的個人觀點,敘述中難免有偏頗不當或者眼界狹隘之處,僅作參考。(此文只針對計算機專業)

 首先,你需要有這樣一個覺悟,雖然考研和就業這兩條道路完全不同,但是你的目的地始終只有一個,那就是享受更高的待遇和受到更多的尊敬。我可以負責任的告訴你,這兩條道路都可以到達這個目的地,所以你不用擔心選錯道路自毀前程,關鍵是你喜歡走哪一條,兩條道路各有什麼特色,以及你該分別怎樣去走。

如果你沒有深刻領悟到我上一段話的意思,建議你不妨多讀幾遍,不過最有效的是看完全篇文章之後再回來讀一遍。我先解釋一下,是這樣的,一般人遇到這種選擇問題,會首先分別羅列出兩者的優點,然後比較哪個優點多,可惜的是,兩者的優點往往都同樣多,以至於難於比較,最後比來比去比的自己頭都大了也比不出結果。最後就算勉強選擇了一個結果,卻還總是心存懷疑。所以,你若想真的得出一個確定的讓自己信服的結果,首先要幫助自己跳出上述這個思維的漩渦。這樣一來,一個選擇問題就變成了一個興趣問題。

 那麼這兩條道路分別是怎樣通往目的地的呢?首先說一下考研,考研的人一定要有這樣的覺悟:我已經具備了一定的開發能力,而且在開發過程中我深刻感悟到了理論學習對於實際開發的重要性,因此,我要通過在校的三年,潛心鑽研,用深層次的知識全面武裝自己,從本質上拉開自己與一般人的差距,從而增強自己的核心競爭力。

 上面段話可以概括為“兩個條件,一個目標”。讀研的兩個條件,一是已經具備了一定的開發能力,二是已經深刻領悟到了理論學習對於實際開發中的重要性。兩者缺一不可。假如你沒有同時具備這兩點但又決定考研,我建議你在考上研究生之後迅速讓自己具備這兩點,否則你讀研只不過是瞎混一通,在學習過程中會非常盲目,讀研價值幾乎為0,不如直接工作。

 這兩點看似簡單其實不然,就我身邊來說已經深刻領悟到理論學習對於實際開發重要性的人屈指可數。我不知聽到過多少人說學習數學和演算法感覺對於工作沒什麼用。是的,假如你甘心一輩子只做資訊管理系統這樣的簡單軟體,並且不想去做整個系統的架構師,永遠只想負責專案的一小塊程式碼就滿足了。這樣的話,學習數學和演算法的確沒什麼用,不過,你的待遇應該不會特別的高。像模式識別,圖像壓縮,網路爬蟲,巨量資料檢索,計算機圖形學這些領域,假如你不懂數學不懂演算法,那麼想要踏足其中無異於天方夜譚,而這些領域,正是待遇高受尊敬的領域。不用說那些3D大型遊戲,就拿一個簡單的推箱子游戲來說,假如你不懂啟發式搜尋演算法,你拿什麼去實現這個遊戲?再簡單點,就拿本科畢業生現在用到的資料庫的增刪查改來說。舉個例子,你將一到十萬的值依次插入到一個表中,總共需要插入十萬條記錄,有的寫法需要幾十秒才能完成,而有的寫法一秒都不用。資料庫中有很多這樣的優化演算法,假如你沒有花時間去學過,那麼以後碰到這樣的效率問題該怎麼辦呢?如果資料規模再大一點,SQL函式也不能幫你解決,那麼所有的問題都得由你自己去編寫演算法解決。所以,讀研的話,可以給你三年的時間去充分研究這些學問,但是如果你從來就沒有意識到這些知識在實際開發中的重要性,不知道學來有什麼用,沒有意識到像線性代數、概率論這些東西在程式設計中的重要性,那麼你就根本不知道該怎麼讀研。讀研主要靠自學,如果連你自己都找不到方向,那麼誰還能幫你?

上面還提到過“一個目的”,這個目的是指你讀研後要從本質上拉開自己與一般人的差距。試想一下,一個不是很優秀的大學計算機專業畢業生乾的工作,如果讓一個高中生來做,我相信只要經過三個月的集中培訓,他幾乎同樣可以勝任。那麼,你的競爭力在哪裡?沒有競爭力的人待遇又會如何呢?這些可想而知。一個讀完研究生的人,如果還是不能拉開其中的差距,讓前面兩種人無論如何都追趕不上,那麼選擇讀研就是失敗的,錯誤的。

 然後再說一下工作這條道路。如果你選擇了工作,不代表你就可以放棄理論研究這條道路。我從一開始就說過,這兩個看似完全不同的道路,其實它們的目的地都是相同的。既然目標相同,那麼這兩者所要做的事情以及所要具備的能力應該也是差不多的。早早參加工作的優點是,你能夠在領取工資的同時,又能積累豐富的實戰經驗,瞭解行業的規範,使自己的付出早日收到回報。雖然你沒有踏足一個深奧的領域,但是即使在簡單的領域裡面,一個元老級的人物,一個對各種技術都應用自如駕輕就熟的人,作用同樣是不可小覷的,待遇一樣會很高。你讓一個理論功底深厚的人來做和你同樣的工作,他也未必能做到和你同樣好,這便是競爭力。不過,你千萬不要滿足於此。一個再熟練的建築工人,他也始終是建築工人,即使他同時具備瓦工、泥工、電焊工的本領,他也始終無法跟一個真正的建築大師相比。建築工人想要成為建築大師,如果你沒有在學校中經過系統的理論學習,那麼一切就都要靠你在實際工作中利用閒暇時間去自學。資訊時代,你需要學習的任何東西都可以從網路或者書店裡買到。如果你很盲目,我可以給你舉些例子,但是因為自身水準有限,給出的建議只是基礎性的。比如說你畢業後從事的開發是跟C++有關的,那麼你可以首先系統的學習和完善C++方面的知識,買一本《C++ primer ,看完之後再看《effective C++ ,在日後工作中反覆鑽研。有關描寫C++框架的書,我感覺《深入淺出MFC》這本書不錯,因為這本書不僅讓你知其然,更讓你知其所以然,滿分推薦。如果你從事的是java方面的工作,那我推薦你讀《java程式設計思想》這本書。主流框架當然是SSH,不過我學得不好,不知道哪本書比較好,你既可以看書也可以看視訊學習。然後是資料庫,這方面的書我知道的不多,但是有一本我不得不推薦一下——《收穫,不止Oracle》,因為讀完你會發現:收穫,真的不止Oracle!然後是資料結構和演算法的學習,這方面的書首推《演算法導論》,在學習的過程希望你要不斷親手去敲程式碼,去一些OJ網站做上面的習題。然後你可以根據自己所喜歡的領域再進行細緻性的深入研究。比如你喜歡計算機圖形學,就要更多的去研究數學方面的東西。如果你喜歡人工智慧,那麼你學習的就不光是計算機軟體方面的知識了,計算機硬體,甚至哲學、心理學、自然科學,也都是你該探究的領域。我說這些的目的,是讓你明白要在工作中帶目的性的深入某一塊的東西。因為人的精力是有限的,你只能選擇將某一塊做到最好。要在工作中自學其實是很難的,全憑自制力,不像讀研那樣有個安穩的環境。就我自己而言,上面提到過的這些書,沒有一本是我從頭到尾能耐心讀下來的。不夠以後我還是會繼續認真去讀的。走得慢總比不會走要好。

 介紹完這兩條道路,總結一下就是:前者是先重點進行理論學習,然後再在實戰經驗中慢慢將理論運用進去。後者是先進行實戰訓練,然後在工作中想往哪塊發展再通過自己的努力去學習需要的理論。兩條不同的道路,如果你比較有雄心,建議前者;如果你圖個安穩,建議後者。我個人比較傾向於前者,有句話叫做“磨刀不誤砍柴工”。還有一個學歷問題我沒提到,現在的社會比較重視學歷,一個研究生找工作肯定要比本科生容易,而且工資起薪也會高點。不過,你千萬不要天真的以為一個學歷就能幫你解決一切,如果你研究生階段沒有學到真東西,那麼別人三年的工作經驗足以把你拉下一大截,反而得不償失。

 現在越來越不敢寫東西了,因為每隔半年就會感覺自己半年前寫下的東西可吐槽點很多。此文若有見識粗淺鄙薄之處望請各位見諒!

相關文章