下了很大決心,我坦白吧

源 / 軒轅之風(fēng) 文 / 軒轅
畢業(yè)參加工作這幾年,在不同的公司遇到過(guò)不同的團(tuán)隊(duì),也認(rèn)識(shí)了許多不同的人。
身邊的同事經(jīng)常問(wèn)我:“你成都的啊,川大還是電子科大?”
每當(dāng)這個(gè)時(shí)候,我就很尷尬了,心里問(wèn)對(duì)方一句:成都難道就這兩所大學(xué)嗎?

軒轅高考遭遇滑鐵盧,只去了一個(gè)普通學(xué)校,學(xué)的也不是計(jì)算機(jī)專業(yè),而是一個(gè)偏硬件的:通信工程。
在之前的自我介紹里說(shuō)過(guò),來(lái)自農(nóng)村的我從小就被身邊的人灌輸各種妖魔化電腦、網(wǎng)絡(luò)的思想。所以直到高三,我也沒(méi)玩過(guò)幾次電腦,沒(méi)上過(guò)幾次網(wǎng)。
也因?yàn)檫@個(gè)原因,高考選擇專業(yè)時(shí),對(duì)計(jì)算機(jī)專業(yè)有了抵觸,最后稀里糊涂的選了個(gè)通信工程。
沒(méi)想到幾年后,兜兜轉(zhuǎn)轉(zhuǎn)半天還是走上了計(jì)算機(jī)之路。這篇文章就給大家擺一擺龍門(mén)陣:軒轅的大學(xué)四年自學(xué)之路是怎么過(guò)來(lái)的?
大一
大學(xué)那幾年,都流行考證,也不管這個(gè)證考來(lái)有沒(méi)有用,考來(lái)干嘛,反正別人考,跟著考就對(duì)了!
大一的第一個(gè)學(xué)期,我們非計(jì)算機(jī)專業(yè)的同學(xué)流行考計(jì)算機(jī)二級(jí)證書(shū),說(shuō)是以后畢業(yè)找工作加分項(xiàng),我也沒(méi)有免俗,跟著交錢(qián)去學(xué)吧。
那時(shí)候也不知道計(jì)算機(jī)二級(jí)證書(shū)是什么,要學(xué)哪些東西,沒(méi)想到學(xué)校統(tǒng)一報(bào)名學(xué)的竟然是個(gè)早已作古了的數(shù)據(jù)庫(kù)編程語(yǔ)言:Visual FoxPro。

不過(guò),第一次接觸計(jì)算機(jī)編程,還是很興奮的,從表的字段、結(jié)構(gòu)到SQL語(yǔ)言,然后到程序設(shè)計(jì)的循環(huán)、分支、函數(shù)等等基礎(chǔ)概念的第一次接觸,都在當(dāng)時(shí)一張白紙的我腦子里留下了深深的印象。
雖然這門(mén)語(yǔ)言早已過(guò)時(shí),但是有一說(shuō)一,這位老師是講的真好,可以算是大學(xué)四年里我認(rèn)為單純教學(xué)能力上最出色的老師!沒(méi)有之一。
通過(guò)這個(gè)計(jì)算機(jī)二級(jí)的考試,算是正式點(diǎn)燃了我對(duì)計(jì)算機(jī)和編程的興趣。考完了計(jì)算機(jī)二級(jí)之后,我沒(méi)有停下,繼續(xù)用這個(gè)VFP自己做了一些程序,各種XX管理系統(tǒng)。
那時(shí)候剛剛進(jìn)入大一下學(xué)期,開(kāi)始教授C語(yǔ)言了,我卻沒(méi)有意識(shí)到這門(mén)課的重要性,還在研究VFP的高級(jí)用法。直到當(dāng)我拿著寫(xiě)出來(lái)的軟件給網(wǎng)友曬的時(shí)候,卻被潑了一盆冷水:這年頭誰(shuí)還用這語(yǔ)言啊,連C語(yǔ)言都不會(huì)嗎?就這?
那時(shí)候開(kāi)始,我開(kāi)始調(diào)整精力,開(kāi)始全面學(xué)習(xí)C語(yǔ)言。
不過(guò),大學(xué)老師講的太水了,用現(xiàn)在的話講,就是一個(gè)只會(huì)照著PPT念的機(jī)器人,上課讓人昏昏欲睡。和之前教計(jì)算機(jī)二級(jí)的老師教學(xué)能力,相差甚遠(yuǎn)。
我很快意識(shí)到,想靠上課來(lái)學(xué)C語(yǔ)言多半是沒(méi)戲,這進(jìn)度也忒慢了。
與此同時(shí),我還意識(shí)到一個(gè)更重要的問(wèn)題:我的通信工程專業(yè),以學(xué)校的平臺(tái)和師資,如果想走硬件路線,太難出頭了,不是不能,是太難了。而如果走軟件路線,則要容易得多。也就是在大一的下學(xué)期,我正式下了決斷:學(xué)軟件!
我開(kāi)始嘗試自學(xué),很多跟計(jì)算機(jī)關(guān)系不大的課程,能不去就不去,自己看書(shū)學(xué)習(xí),期末考試確保不掛科就行。
但是編程這東西,三分靠看書(shū),七分靠實(shí)踐,得要上機(jī)練習(xí)才行!實(shí)驗(yàn)課每周次數(shù)有限,不能做到隨時(shí)想練就練。后來(lái)打聽(tīng)到學(xué)校有個(gè)學(xué)生活動(dòng)中心可以上網(wǎng),還特便宜。于是我開(kāi)始每天往返于學(xué)生活動(dòng)中心,在那里度過(guò)了一個(gè)多月,把C語(yǔ)言這門(mén)課本上的東西算學(xué)完了。
當(dāng)時(shí)的教材是著名的清華大學(xué)譚浩強(qiáng)老師編寫(xiě)的《C程序設(shè)計(jì)》,書(shū)中只是一些C語(yǔ)言基本的語(yǔ)法介紹,一個(gè)月后學(xué)完感覺(jué)這東西好像沒(méi)啥用,都是在一些黑乎乎的窗口寫(xiě)一點(diǎn)數(shù)學(xué)運(yùn)算之類的題目,實(shí)用性不高啊。

身邊有高年級(jí)的師兄告訴我:“光學(xué)這個(gè)不行,你得去做點(diǎn)實(shí)戰(zhàn)項(xiàng)目,去圖書(shū)館找?guī)妆緯?shū)吧!跟著練”
于是,我又去學(xué)校的圖書(shū)館,找了幾本書(shū)。拿回來(lái)一看,里面出現(xiàn)了好多不認(rèn)識(shí)東西,一問(wèn)才知道,我拿的是C++的書(shū)。
雖然不知道C++是什么,但聽(tīng)說(shuō)下學(xué)期也要學(xué)這個(gè),索性我就提前學(xué)了。
書(shū)是有了,但電腦的問(wèn)題卻日益嚴(yán)重,去學(xué)生活動(dòng)中心電腦室上網(wǎng)也不是個(gè)長(zhǎng)久之計(jì),有時(shí)候去晚了根本沒(méi)位置,而且距離宿舍也不近,來(lái)回挺折騰的。而買(mǎi)新的電腦,動(dòng)輒就是幾千塊,我一個(gè)窮小子實(shí)在負(fù)擔(dān)不起,也開(kāi)不了口向家里要。后來(lái),我在淘寶上淘到了一個(gè)二手筆記本電腦,五百多塊拿下了,雖然慢的要命,但好過(guò)沒(méi)有。于是我開(kāi)始在這臺(tái)電腦上正式開(kāi)啟了我的C/C++編程之路。
大一的下學(xué)期,還有一件事,就是計(jì)算機(jī)的一門(mén)基礎(chǔ)課:計(jì)算機(jī)網(wǎng)絡(luò)。
這門(mén)課和C語(yǔ)言是同一個(gè)老師,同樣的PPT走馬觀花,同樣的讓人昏昏欲睡。
但是偶然一次路過(guò),發(fā)現(xiàn)隔壁班的計(jì)算機(jī)網(wǎng)絡(luò)是當(dāng)初教計(jì)算機(jī)二級(jí)的老師在上課,我和兩個(gè)小伙伴就一起溜進(jìn)去蹭課,這一蹭不要緊,一下就上了癮。
這位老師風(fēng)格獨(dú)立,根本不用學(xué)校發(fā)的教材,而是自己編寫(xiě)了一套PPT,從最底層的原理講起,從通信的編碼校驗(yàn),到局域網(wǎng)的802.3、802.4、802.5等技術(shù)演進(jìn),用生動(dòng)有趣到生活實(shí)例告訴我們什么是CSMA/CD,聽(tīng)得我們?nèi)绨V如醉。我現(xiàn)在寫(xiě)的很多故事性的文章,一定程度上都有這位老師的影響。
在我們幾個(gè)的口口相傳下,我們班在上計(jì)算機(jī)網(wǎng)絡(luò)課時(shí),門(mén)可羅雀,而隔壁班人卻越來(lái)越多,不知道我們的計(jì)算機(jī)網(wǎng)絡(luò)老師看到后心里有何感想。
大一這一年,是迷茫中尋找方向的一年。
大二
買(mǎi)來(lái)的二手電腦終究經(jīng)不起我的折騰,才用了半年左右就出現(xiàn)各種毛病。大二上學(xué)期的國(guó)慶節(jié)回到老家,跟奶奶聊起了學(xué)校的經(jīng)歷和日常。奶奶聽(tīng)后二話沒(méi)說(shuō),拿出了四千塊錢(qián)給我,讓我去買(mǎi)電腦。我是又喜又愧,喜的是可以換新電腦了,愧的是我知道這四千塊錢(qián)對(duì)她來(lái)說(shuō)有多么不容易。奶奶說(shuō),等我以后掙錢(qián)了再還她就是了,可快十年過(guò)去了,我還沒(méi)還,奶奶卻不記得這事了。
言歸正傳,換上了新的電腦,得更努力的學(xué)習(xí)才行。
大二這一年,加入了學(xué)校一個(gè)研究所,跟著老師還有師兄師姐們一起做項(xiàng)目,這一年是收獲的一年。
進(jìn)入研究所的第一件事,就是一個(gè)跟網(wǎng)絡(luò)數(shù)據(jù)包打交道的項(xiàng)目。
印象最深的是,第一次看到了網(wǎng)絡(luò)數(shù)據(jù)包長(zhǎng)的是什么樣的。之前學(xué)計(jì)算機(jī)網(wǎng)絡(luò)時(shí),總把數(shù)據(jù)包掛在嘴邊,什么TCP/IP幾層協(xié)議,張口就來(lái),卻連真正的數(shù)據(jù)包都沒(méi)見(jiàn)過(guò)。
學(xué)習(xí)計(jì)算機(jī)網(wǎng)絡(luò),一定得抓個(gè)包來(lái)看看,看看課本里的一層層協(xié)議,一個(gè)個(gè)字段,在網(wǎng)絡(luò)中真實(shí)的樣子。這里推薦兩個(gè)抓包軟件:
專業(yè)人士:wireshark

如果是新手小白,Wireshark純英文版用起來(lái)有一定門(mén)檻,推薦一個(gè)國(guó)產(chǎn)軟件:
科來(lái)網(wǎng)絡(luò)分析系統(tǒng)

中文界面操作起來(lái)更簡(jiǎn)便易懂。
這段日子,是編程能力快速提升的時(shí)期,之前都是自己跟著書(shū)瞎練習(xí),現(xiàn)在有了過(guò)來(lái)人指導(dǎo),避免了很多彎路。
記得研究所老師說(shuō)過(guò)一句話:什么時(shí)候覺(jué)得自己編程能力入門(mén)了?就是當(dāng)你能夠獨(dú)自編寫(xiě)超過(guò)1萬(wàn)行代碼軟件的時(shí)候。
進(jìn)入研究所之前,自己寫(xiě)的軟件,每個(gè)工程也就一兩千行代碼的水平。而接觸真實(shí)的項(xiàng)目后,一下就被十幾萬(wàn)行代碼的巨大工程震撼到了,由衷的佩服師兄們是怎么完成這么浩大的工程的。
那時(shí)候,研究所項(xiàng)目很多都是VC++開(kāi)發(fā),雖然經(jīng)過(guò)自學(xué)有了C++的基礎(chǔ),但一下接觸VC++,還是來(lái)的有點(diǎn)猛。于是乎,開(kāi)始各種找資料補(bǔ)課學(xué)習(xí)。
后來(lái)在網(wǎng)上找到了一個(gè)叫孫鑫老師的《深入VC++詳解》的視頻,共計(jì)二十堂課,講的全是干貨,真的是深入淺出,很快靠著這個(gè)視頻算是入了門(mén),終于初步具備開(kāi)發(fā)項(xiàng)目的能力。
這個(gè)時(shí)期,跟著幾本VC++實(shí)戰(zhàn)教程,做了幾個(gè)軟件項(xiàng)目,不得不說(shuō),實(shí)在比VFP難多了。
學(xué)了網(wǎng)絡(luò)編程,做了一個(gè)網(wǎng)絡(luò)聊天軟件,在寢室局域網(wǎng)中用來(lái)跟室友聊天。
為學(xué)校的信息安全比賽,開(kāi)發(fā)了一個(gè)監(jiān)控軟件,可以同時(shí)監(jiān)控多個(gè)人的電腦桌面。

還寫(xiě)了一個(gè)Web服務(wù)器,第一次獨(dú)自開(kāi)發(fā)超過(guò)了3萬(wàn)行代碼。
大二這一年,是找到方向后快速成長(zhǎng)的一年。
大三
經(jīng)過(guò)大二一年的學(xué)習(xí),算是從計(jì)算機(jī)小白,變成了一個(gè)有一些編程能力的“老司機(jī)”。
大三上學(xué)期,研究所來(lái)了一位新的師兄,師兄是計(jì)算機(jī)學(xué)院正統(tǒng)軟件工程專業(yè)出身,不像我們幾個(gè)東拼西湊學(xué)來(lái)的,一進(jìn)來(lái)就給我們帶來(lái)了全新的沖擊。但這個(gè)沖擊,是正面的。
科班出身就是不一樣,軟件工程理論、設(shè)計(jì)模式、Java技術(shù)棧,這些東西,都是我之前靠自學(xué)從未接觸過(guò)的東西。
知道落后不可怕,不知道自己落后才可怕。直到大三才第一次有了一個(gè)意識(shí):不要把目光局限在研究所,局限在學(xué)校這個(gè)小小的空間,該睜開(kāi)眼去看看外面的世界,看看社會(huì)上公司里現(xiàn)在都用什么技術(shù)。
那時(shí),我才發(fā)現(xiàn),我一直洋洋自得的VC++編程技術(shù),早已走過(guò)了它的巔峰時(shí)期,現(xiàn)在是Java和Linux的天下,是時(shí)候該學(xué)一些新東西了。
可能是先入為主,也可能是年少輕狂,我和Java的第一次相遇很快就結(jié)束了,初步了解之后覺(jué)得一個(gè)靠虛擬機(jī)運(yùn)行的語(yǔ)言怎么能比得上C++?我當(dāng)時(shí)竟然誕生了這樣的想法,遺憾的與Java擦肩而過(guò)。直到多年后畢業(yè)工作,才重新學(xué)Java,真想捶扁當(dāng)時(shí)的自己。
反倒是Linux,越學(xué)越有勁,從一開(kāi)始接觸命令行時(shí)戰(zhàn)戰(zhàn)兢兢,每做一個(gè)操作都要百度搜索,到后來(lái)對(duì)命令操作愛(ài)不釋手。
后來(lái)不滿足于表面的應(yīng)用,在淘寶上淘了一本盜版的 《深入Linux內(nèi)核架構(gòu)》,開(kāi)始琢磨起這個(gè)神奇的操作系統(tǒng)來(lái)。
因?yàn)椴⒎怯?jì)算機(jī)專業(yè),所以并沒(méi)有系統(tǒng)的學(xué)習(xí)操作系統(tǒng)這門(mén)課程,反而是先看了《Windows內(nèi)核原理與實(shí)現(xiàn)》和《深入Linux內(nèi)核架構(gòu)》這兩本具體寫(xiě)兩個(gè)操作系統(tǒng)內(nèi)核的書(shū)之后,才轉(zhuǎn)過(guò)頭去看操作系統(tǒng)原理這門(mén)課程。


有了這兩本書(shū)的鋪墊,再看操作系統(tǒng),竟是如此的絲滑和順暢。每次看到操作系統(tǒng)原理中的理論章節(jié),就能浮現(xiàn)出Windows和Linux在這個(gè)理論上具體實(shí)現(xiàn)的異同之處。相反,如果一開(kāi)始先看純理論,很可能不會(huì)有這么深刻的認(rèn)識(shí)。
大三的這一年,是開(kāi)拓視野和眼界的一年。
大四
大四的主題,每個(gè)人都知道,那就是:找工作。
確實(shí)如此,其實(shí)從大三下學(xué)期開(kāi)始,我們研究所的小伙伴們就開(kāi)始關(guān)注秋招了。
那幾年,還不流行刷leetcode,倒是流行看一個(gè)系列的書(shū):《程序員面試寶典》。不看不知道,一看嚇一跳,我們這東拼西湊學(xué)來(lái)的,畢竟不夠系統(tǒng),基礎(chǔ)知識(shí)不扎實(shí),很多題目都不會(huì)做。
大三結(jié)束的那個(gè)暑假,開(kāi)始瘋狂補(bǔ)課,尤其是下面幾個(gè)重點(diǎn)方向:
C/C++編程基礎(chǔ) 計(jì)算機(jī)網(wǎng)絡(luò) 操作系統(tǒng) 數(shù)據(jù)結(jié)構(gòu)與算法
這些知識(shí),平時(shí)多多少少有接觸或用到,但從未有機(jī)會(huì)系統(tǒng)全面的梳理過(guò)。在這個(gè)暑假,一邊做題,一邊看書(shū),突然找到了一點(diǎn)高考的感覺(jué),因?yàn)槲覀冎溃?月份就要開(kāi)始的秋招大戲,對(duì)我們而言,那就是一場(chǎng)高考。
臨近9月,開(kāi)始在網(wǎng)上開(kāi)始各種搜索往屆各大公司的筆試面試題,看別人的面經(jīng)貼,學(xué)習(xí)經(jīng)驗(yàn)。
不過(guò)這還是不夠,為了更加真實(shí)的鍛煉自己,在8月份的時(shí)候,我在網(wǎng)上找了幾家公司投了簡(jiǎn)歷,去真實(shí)的面試幾次。
投簡(jiǎn)歷的目的,不在于是真正想去這家公司,而是想通過(guò)這樣的實(shí)戰(zhàn)面試,鍛煉自己不怯場(chǎng)的膽量,畢竟在象牙塔里長(zhǎng)大的我們真正走出社會(huì),還是有一些障礙需要去跨越。
試了有四五家公司,在過(guò)程中不斷發(fā)現(xiàn)自己的問(wèn)題,包括技術(shù)上的問(wèn)題和交流溝通表達(dá)上的問(wèn)題。你還別說(shuō),這一招還真管用,越到后面自己越發(fā)自信,一開(kāi)始連自我介紹都說(shuō)不利索,到后面都能夠流暢表達(dá)脫口而出。
好在功夫不負(fù)有心人,技術(shù)上查漏補(bǔ)缺,面試經(jīng)驗(yàn)也積累了一些,在秋招正式開(kāi)始不久,我就收獲了心怡的offer,總算可以為自己的大學(xué)四年交上一份合格的答卷了。
經(jīng)驗(yàn)談
我的大學(xué)四年自學(xué)過(guò)程,總結(jié)了幾條經(jīng)驗(yàn),供大家參考:
非科班沒(méi)關(guān)系,只要想學(xué),就有希望。 基礎(chǔ)知識(shí)很重要,別只做項(xiàng)目,忽略基礎(chǔ)。 別悶頭自學(xué),多聽(tīng)聽(tīng)別人的意見(jiàn),但也別光聽(tīng)一家之言,兼聽(tīng)則明,偏聽(tīng)則暗。 找一群志同道合的小伙伴,互相鼓勵(lì),一起學(xué)習(xí),共同進(jìn)步。 及時(shí)關(guān)注外面的世界,不要局限在自己的小圈子里。 理論與實(shí)踐結(jié)合,多走出去,樹(shù)立自己的自信心。
最后,給大家推薦一些,在自學(xué)歷程中我自己看過(guò),且有必要推薦給你們看的書(shū)。
推薦書(shū)單
C/C++:
《C和指針》 《C++ Primer》 《Effective C++》 《深度探索C++對(duì)象模型》 《STL源碼剖析》 《UNIX網(wǎng)絡(luò)編程》 《Boost程序庫(kù)完全開(kāi)發(fā)指南(第二版)》
Java:
《Java核心技術(shù)》 《Java并發(fā)編程實(shí)戰(zhàn)》 《深入理解Java虛擬機(jī)》 《Java虛擬機(jī)精講》 《深入分析Java Web技術(shù)內(nèi)幕》
操作系統(tǒng):
《深入理解計(jì)算機(jī)系統(tǒng)》 《操作系統(tǒng)精髓與設(shè)計(jì)原理》 《Windows內(nèi)核原理與實(shí)現(xiàn)》 《深入解析Windows操作系統(tǒng)》 《深入Linux內(nèi)核架構(gòu)》
計(jì)算機(jī)網(wǎng)絡(luò):
《TCP/IP詳解卷一:協(xié)議》 《Wireshark網(wǎng)絡(luò)分析的藝術(shù)》 《Wireshark網(wǎng)絡(luò)分析就這么簡(jiǎn)單》
數(shù)據(jù)結(jié)構(gòu)與算法:
《算法導(dǎo)論》 《大話數(shù)據(jù)結(jié)構(gòu)》 《編程之美》 《圖解算法》
網(wǎng)絡(luò)安全:
《C++反匯編與逆向分析技術(shù)揭密》 《白帽子講Web安全》 《白帽子講瀏覽器安全》 《惡意代碼分析實(shí)戰(zhàn)》 《寒江獨(dú)釣-Windows內(nèi)核安全編程》 《天書(shū)夜讀-從匯編語(yǔ)言到Windows內(nèi)核編程》 《0day安全:軟件漏洞分析技術(shù)》 《軟件調(diào)試》 《漏洞戰(zhàn)爭(zhēng)》
最后的最后,祝每一位看到這里的朋友都能被世界善待,收獲自己想要的offer。畢竟,有夢(mèng)想誰(shuí)都了不起!
— 完 —
一鍵三連「分享」、「點(diǎn)贊」和「在看」
技術(shù)干貨與你天天見(jiàn)~
