作者/ 徐凱強(qiáng)
很多同學(xué)問(wèn)過(guò)我顾瞻,畢業(yè)后想去騰訊憔购、阿里等一些知名互聯(lián)網(wǎng)公司工作宫峦,應(yīng)該如何努力;另外一些行動(dòng)比較早的同學(xué)玫鸟,通過(guò)競(jìng)賽(ACM-ICPC)导绷、實(shí)驗(yàn)室、實(shí)習(xí)接觸到了計(jì)算機(jī)行業(yè)中的一部分領(lǐng)域屎飘,對(duì)下一步的發(fā)展又產(chǎn)生了更多的疑問(wèn)诵次。
今天這篇文章,我想為在IT行業(yè)發(fā)展的計(jì)算機(jī)專業(yè)學(xué)生枚碗,解決以下三個(gè)困惑[1]:
1逾一、學(xué)了計(jì)算機(jī)專業(yè),怎么還是做不出網(wǎng)站肮雨、軟件遵堵、APP?
2、如果我想搞技術(shù)陌宿,那么學(xué)習(xí)計(jì)算機(jī)理論部分還有沒(méi)有必要锡足?
3、我現(xiàn)在應(yīng)該如何提高技術(shù)水平壳坪?
1舶得、學(xué)了計(jì)算機(jī)專業(yè),怎么還是做不出網(wǎng)站爽蝴、軟件沐批、APP?
小李想成為想成為一名開(kāi)挖掘機(jī)的高手蝎亚,有人告訴他九孩,要先學(xué)習(xí)《機(jī)械動(dòng)力學(xué)》才能開(kāi)好挖掘機(jī)《柴油發(fā)動(dòng)機(jī)原理》;還有人告訴他发框,深刻理解了“燃?xì)鉁u輪發(fā)動(dòng)機(jī)”的原理躺彬,對(duì)成為挖掘機(jī)高手有很大幫助。
初學(xué)者被高大上的名詞擊倒是一件很正常的事情梅惯,所以我們首先搞清楚宪拥,計(jì)算機(jī)專業(yè)學(xué)的究竟是什么。計(jì)算機(jī)專業(yè)的必修課有這么幾個(gè):
數(shù)據(jù)結(jié)構(gòu)铣减、計(jì)算機(jī)網(wǎng)絡(luò)江解、計(jì)算機(jī)組成原理、算法分析與設(shè)計(jì)徙歼、數(shù)據(jù)庫(kù)原理犁河、軟件工程
做網(wǎng)站、做APP是哪個(gè)課程教的呢魄梯?答案是桨螺,哪個(gè)也不是。計(jì)算機(jī)科學(xué)研究的都是非衬鸾眨基礎(chǔ)的東西灭翔。即使有些名稱看著和開(kāi)發(fā)有關(guān),教授的內(nèi)容也不是開(kāi)發(fā)軟件辣苏,比如這里所說(shuō)的“軟件工程”肝箱,不是教你開(kāi)發(fā)網(wǎng)站、App的稀蟋,而是研究如何系統(tǒng)煌张、規(guī)范化的開(kāi)發(fā)和維護(hù)軟件,以及結(jié)合管理技術(shù)和技術(shù)方法來(lái)管理項(xiàng)目的學(xué)科退客。
實(shí)際上骏融,國(guó)內(nèi)大學(xué)的計(jì)算機(jī)專業(yè)的名稱往往是“計(jì)算機(jī)科學(xué)與技術(shù)”链嘀,包括了計(jì)算機(jī)科學(xué)、計(jì)算機(jī)技術(shù)兩部分档玻。做網(wǎng)站怀泊、做APP,就屬于那個(gè)“與技術(shù)”误趴。在學(xué)校里霹琼,“與技術(shù)”的部分往往只開(kāi)設(shè)幾門(mén)技術(shù)早已過(guò)時(shí)的課程,開(kāi)發(fā)App當(dāng)然不在其中凉当,這也跟IT業(yè)界發(fā)展速度快有很大關(guān)系枣申。
2、如果我想搞技術(shù)纤怒,那么學(xué)習(xí)計(jì)算機(jī)理論部分還有沒(méi)有必要?
你選擇學(xué)習(xí)內(nèi)容的標(biāo)準(zhǔn)天通,就看它能否顯著提高你的生產(chǎn)力泊窘。科學(xué)和技術(shù)的區(qū)別在于像寒,科學(xué)追求盡量深入烘豹,探索原理;而技術(shù)追求盡量封裝诺祸,提高效率携悯。
當(dāng)技術(shù)遇到效率瓶頸時(shí),往往是因?yàn)橐蕾嚨讓永碚摷?xì)節(jié)或原理筷笨,這時(shí)就應(yīng)該嘗試去透徹地理解它們憔鬼。比如說(shuō)如果你開(kāi)發(fā)了一個(gè)網(wǎng)站,十分火爆胃夏,每分鐘有幾千個(gè)人訪問(wèn)你的網(wǎng)站轴或,這時(shí)數(shù)據(jù)庫(kù)沒(méi)有辦法同時(shí)響應(yīng)這么多人請(qǐng)求,網(wǎng)站卡住了仰禀。數(shù)據(jù)庫(kù)原理課上教給你的知識(shí)照雁,舉個(gè)例子說(shuō)‘索引’,就是你解決的數(shù)據(jù)庫(kù)性能問(wèn)題的利器答恶。
但具體到Web饺蚊、APP開(kāi)發(fā),最能提高你生產(chǎn)力的悬嗓,不是《編譯原理》污呼,而是那些前/后端框架和腳本,學(xué)完了你馬上就能做產(chǎn)品包竹。當(dāng)然曙求,上邊說(shuō)了,你要學(xué)挖掘機(jī),一定要先學(xué)《機(jī)械動(dòng)力學(xué)》悟狱,否則你就沒(méi)有內(nèi)功静浴,永遠(yuǎn)不可能成為挖掘機(jī)高手,我并不反對(duì)這種說(shuō)法挤渐,但是理論和技術(shù)沒(méi)有高低貴賤之分苹享,技術(shù)中也有很多理念需要學(xué)習(xí),經(jīng)驗(yàn)也需要積累浴麻,有良好的理論基礎(chǔ)可以幫你更好的學(xué)習(xí)技術(shù)得问,但并不能取代技術(shù)的學(xué)習(xí)過(guò)程。
總而言之软免,技術(shù)和科學(xué)是不能完全分開(kāi)的宫纬,如果你不懂得如何實(shí)現(xiàn),那么你設(shè)計(jì)的時(shí)候就會(huì)陷入困局膏萧。編程當(dāng)然不是僅僅決定如何開(kāi)發(fā)實(shí)現(xiàn)那么簡(jiǎn)單漓骚,但是在最好的情況下,編程實(shí)現(xiàn)就是對(duì)理念的設(shè)計(jì)--因?yàn)樽詈玫脑O(shè)計(jì)方式就是實(shí)現(xiàn)它榛泛。
3蝌蹂、我現(xiàn)在應(yīng)該如何提高技術(shù)水平?
學(xué)技術(shù)的關(guān)鍵思路是兩點(diǎn):一個(gè)是模仿曹锨,一個(gè)是邊實(shí)踐邊學(xué)[1]孤个。以做網(wǎng)站為例,首先你可以看看w3schools.com沛简,或者用Codecademy齐鲤,學(xué)會(huì)HTML和PHP(或者Python)基本操作。然后找一些簡(jiǎn)單的框架椒楣,比如Bootstrap和Django佳遂,學(xué)習(xí)一下是如何用的,然后撒顿,你可以自己設(shè)計(jì)一個(gè)小網(wǎng)站丑罪,嘗試把它做出來(lái)。
不要讓完美主義拖慢了你凤壁,不需要把所有的東西都學(xué)會(huì)了再開(kāi)始吩屹。做的過(guò)程中,遇到障礙再去針對(duì)性地去學(xué)習(xí)和解決拧抖,或者尋求幫助煤搜。這種邊實(shí)踐邊學(xué)習(xí)的模式,才是學(xué)技術(shù)的正確思路唧席,這跟搞理論研究的思路是不一樣的擦盾。
當(dāng)你對(duì)技術(shù)開(kāi)發(fā)有了基本的理解之后嘲驾,你就可以嘗試去找實(shí)習(xí)了,最好找那種把實(shí)習(xí)生當(dāng)正式員工來(lái)要求的公司迹卢,這樣你就能很快的成長(zhǎng)起來(lái)辽故。
[1] 文中三個(gè)‘困惑’取材自蘇椰老師的知乎回答(http://www.zhihu.com/answer/32455092)