今天上午又去招聘了,加上前面一段時(shí)間的招聘經(jīng)驗,有些話(huà)不吐不快。
我們希望找到能干活的人,就是能編程序的人,但是我感覺(jué)現在剛畢業(yè)的人里面,包括名校的,能干活的人比例非常的低,大概不超過(guò)百分之一。
很多人都說(shuō),沒(méi)有參加過(guò)實(shí)際的項目,沒(méi)有經(jīng)驗,希望能夠在工作過(guò)程中學(xué)習等等,開(kāi)始的時(shí)候我也這樣認為,隨著(zhù)面試的人的增多,手下新人的增多,我的看法逐漸變了。
不談個(gè)人主觀(guān)能動(dòng)性方面的種種問(wèn)題,我想談?wù)勎倚哪慨斨械目瓢喑錾砭幊绦蜻x手的及格線(xiàn)。
如果你希望編程序為生的話(huà),那么,大學(xué)才是你最重要的經(jīng)驗積累地點(diǎn),相反,工作單位能夠積累的東西很少,或者說(shuō)絕對是第二位的。
大學(xué)里面,最重要的課程有兩門(mén),一門(mén)是編譯原理,一門(mén)是數據結構,這兩門(mén)課的課程都不重要,重要的是課程設計,也就是老師讓你上機做的題目,就我這段時(shí)間面試的上百人來(lái)說(shuō),我認為其中的九十九個(gè),這兩門(mén)課的課程設計要么是直接復制別人的,要么是蒙混過(guò)關(guān)的[只碰到一個(gè)真刀真槍作過(guò)的],其實(shí),這兩門(mén)課是你大學(xué)里所有學(xué)習內容當中對編程序的能力進(jìn)行訓練的最根本內容,也是你在社會(huì )上永遠碰不到的學(xué)習機會(huì ),任何,不論多貴的培訓機構,也不可能給你提供這兩門(mén)課的訓練深度,我見(jiàn)過(guò)太多的畢業(yè)之后又花一兩萬(wàn)塊參加各種形式的培訓機構培訓一年的選手了,你學(xué)會(huì )一萬(wàn)種框架的配置方法,也不如你大學(xué)的時(shí)候把這兩門(mén)課上好有意義。
編譯原理的課程設計,一般來(lái)說(shuō)要求做一個(gè)詞法分析器或者語(yǔ)法分析器,最屁要你做一個(gè)數學(xué)公式的逆波蘭式解析,我個(gè)人看法詞法分析器或者語(yǔ)法分析器都可以,單作逆波蘭式,則最好能夠做到支持各種類(lèi)型的運算的地步,比如邏輯運算等等,這門(mén)課的課程設計如果能夠獨立完成,可以在你的大腦里面創(chuàng )建一個(gè)整體化的計算機思考方式,最重要的是,這個(gè)過(guò)程能夠讓你學(xué)會(huì )面對一個(gè)復雜問(wèn)題的時(shí)候,如何通過(guò)各種計算機語(yǔ)言來(lái)解決問(wèn)題,、、、,好處不再列舉,其實(shí)你畢業(yè)之后參加的任何培訓,其算法復雜程度都不可能和這門(mén)課程相比。
數據結構的課程設計,關(guān)鍵點(diǎn)在于兩個(gè),一個(gè)是數據結構和算法本身,這里需要理解和學(xué)習的主要內容是循環(huán)和遞歸等等,其實(shí)如果你上面一個(gè)做得好,這些都不是太大問(wèn)題了,學(xué)習一下各種數據結構的應用還有些意義;第二個(gè)最重要的訓練目的,就是如何在計算機當中表達問(wèn)題的問(wèn)題,很多人跟我說(shuō),我的課程設計是二叉樹(shù)排序,輸入就是我自己輸進(jìn)去一堆數字,輸出就是把這些數字排好了再輸出到屏幕上、、、faint,暈倒,講一個(gè)漢諾塔的例子吧:
漢諾塔本身的算法只有二十幾行,不太好理解,但是也不難理解,那么,如果希望做一個(gè)東西,把漢諾塔表達一下,應該考慮什么東西呢?
首先,需要考慮清楚幾個(gè)塔,個(gè)個(gè)盤(pán)子,應該用什么表達,用什么數據結構表達?這個(gè)是一個(gè)關(guān)鍵問(wèn)題,需要能夠把塔和盤(pán)子和數組以及數組里面的元素對應起來(lái)思考問(wèn)題,不要看這一點(diǎn)簡(jiǎn)單,實(shí)際上太多人根本就沒(méi)有辦法在大腦里面完成這個(gè)轉換。
其次,要考慮清楚其中有哪些元素可能發(fā)生變化,盤(pán)子的數目是最簡(jiǎn)單的變化元素了,有沒(méi)有其它的了呢?
有,移動(dòng)的速度,如果你移動(dòng)得太快,那么誰(shuí)也看不清楚,你等于什么也沒(méi)做、、那么,至少兩個(gè)元素要可變,一個(gè)是移動(dòng)速度,一個(gè)是盤(pán)子數目。
好,輪到表達方式了,你要是牛的話(huà),就畫(huà)成棍子上面穿著(zhù)有洞的盤(pán)子,不行的話(huà)就豎線(xiàn)上面穿橫線(xiàn),移動(dòng)的過(guò)程,牛的話(huà)做成動(dòng)畫(huà)??不行的話(huà)就演示每個(gè)步驟地結果既可。
好,該怎么畫(huà)出來(lái)呢,這個(gè)時(shí)候你就要弄明白如何在屏幕上劃線(xiàn),這個(gè)簡(jiǎn)單,重要的是如何擦掉一條線(xiàn),還不能把棍子的那個(gè)點(diǎn)擦掉,這就有點(diǎn)問(wèn)題了。
好了,上面問(wèn)題都解決完畢之后,用什么語(yǔ)言編程序就很次要了,c也好,pascal,java,任何語(yǔ)言,一個(gè)帶兩個(gè)參數的動(dòng)畫(huà)演示漢諾塔的東東就出世了、、、[我花了一個(gè)半小時(shí)]
數據結構的學(xué)習過(guò)程中,如果能夠在四五個(gè)題目上面做到上面的深度,相信你絕對受歡迎。
以上兩個(gè)課程設計,如果都能夠獨立完成,一般來(lái)說(shuō)畢業(yè)后兩三年內收入必然超過(guò)五千,如果在北京上海,應該可以肯定超過(guò)一萬(wàn)。