前段時間因為實習生計劃花了很多時間做了實習生招聘的工作,產生的一些想法,寫在這里。 這次招聘過程中,我發現我們在校的學生有下面的這些特點: 1)NB的項目。當說到自己做過的項目時, 我發現他們做的事都是很NB。要么是研究Linux的底層內核,要么是圖像識別處理,要么是推薦算法,要么做高性能計算,要么做數據挖掘,要么是移動方面的協議,還有一些很高深的課題我聽不太懂的項目。這讓我想起當年我在學校里的實習,對比起我用Java Applet 和 HTML做操作系統的教學課件,或是在公司里用Delphi/PowerBuilder做的那些MIS系統。讓我覺得有些汗顏。 2)OK的解決問題能力。當問到算法題時,我發現他們的問題解決能力還OK。我一般問1到2個中低難度的算法題和1個基本的面向對象設計的題,都不難。我相信只要在學校里好好學習的人都應該答得出來。無非就是一些基本的算法和基本數據結構操作的問題,和比較基礎的面向對象設計的題,說白了就是作業題。可惜的是,只有5%不到的同學能夠在不給提示的情況下答出來,70%的人可以在給一定的提示下答出來,15%左右的同學需要提示到幾乎給出答案才能答出來,還有10%的同學怎么給提示都答不出來。 3)WTF的編碼能力。老實說,對于解算法題,我還是比較可以接受的,因為80%左右的同學在給予提示后都能描述出解題的算法,于是,我讓他們把這個算法用他們最熟悉的語言寫出來。但結果讓我出乎意料,一段在解法很清楚的情況下只需要不到30行代碼的小算法題,只有一個人能在10分鐘幾寫完,其它的人基本所有的需要30分鐘左右(甚至40分鐘),有2、3個人居然寫不出來。有一個比較極端的case是——有個同學花了十分鐘都寫不出從一個整型數組中找到最小的正數的代碼。這個事讓我覺得很驚訝,難道大家在做項目的時候不編程嗎? 對于這種情況,我想給大家以下后一些建議: 我感到我們在校的學生正如“為什么中國的網頁這么爛”中所說的——他們習慣于獲取大量的知識,而從不對這些知識進行思考和總結。問題不是我們知道多少東西,問題是我們在獲取這些知識的時候會不會去思考這些知識后的東西?比如:為什么會有這么多經典的數據結構,數組,鏈表,樹,哈希表,圖這些數據結構主要用來解決什么樣的問題,他們的優勢和劣勢是什么?沒有思考過,就不算真正的懂,沒有思考過,你將無法應對萬變的問題,沒有思考過,你將成為書呆子。 多多實踐而不是研究。編程不是在實驗室做科研搞理論啊,計算機這本就是一個實踐性很強的的學科啊,這不是數學,這需要你多多的實踐啊。我們不要真以為讀的是——計算機科學(Computer Science )就是搞理論的了,這里面需要很多很多的Engineering的工作。(我實在是很難想像,雖然有這么多人寫一般難度的程序,居然會是那么痛苦的事) 我在我的新浪微博(@左耳朵耗子)里說的,我們不要以為做過項目,會寫程序,我們就是程序員了。如果你只是在按部就班地寫代碼,你就是Coder,江湖叫“碼農”,不要把自己當成“碼農”,我們一定要對自己的代碼,自己的設計不停地反思和總結,并精益求精,寫程序本來就是一件有價值的事,這就像寫篇作文人人都會寫,但并不是人人都能把文章寫好。編程和寫作都是一樣的,這都是在搞創作啊。想做“碼農”還是想做“程序員”?自己的決定。 我們的教育的確很“廢柴”,但這不是我們成為“廢柴”的原因。如果我們的學習還停留在“別人給我什么我就學什么”的被動學習階段,那么你真的不懂怎么是學習。雖然,我們的學校里并沒有教你什么是“Version Control”,什么是“Coding Style”,什么是“Refactory”,什么是“Code Review”,什么是“Unit Test”,也沒有告訴你一些經典的設計的和架構,等等,等等,但是這是什么年代了?這個時代不是像我上學那時——學校機房里上機用的電腦連內存和硬盤都沒有,用5寸的低密軟盤面對綠色顯示器的286時代了。我們身邊有很多很多優秀的人,網上有很多優秀的文章,書店里也有很多不錯的書,而且我們的軟件開發日趨成熟,如果我們還學不好的話,那么我們就是在犯罪! 最后,和大家說一下公司的實習生招聘。這個事情其實是畢業生招聘的一個組成部分,也就是說,因為我國教育的問題,再加上學生自己的問題,導致畢業生量多質次的情況很嚴重,對于公司,其很難從學校招到一個比較不錯的畢業生,這種情況已經不是新問題了,所以,也有很多公司都不招剛畢業的學生。因此,通過實習機會了解并招聘畢業生成了很多公司的畢業生招聘的手段。所以,在這里想告訴在校的同學們,千萬不要以為實習計劃就是字面上的實習。其實,這和正式的招聘沒有什么差別,同樣也要看你的能力的。 作者:陳皓 |