轉(zhuǎn)行進(jìn)騰訊了
震撼在于他之前的機(jī)械工作,竟然晚上 10 點(diǎn)才下班,每天工作 14 個(gè)小時(shí),這工作強(qiáng)度不比互聯(lián)網(wǎng)大廠少,而薪資卻不及互聯(lián)網(wǎng)一半。這個(gè)工作強(qiáng)度,使得他在上班期間根本沒(méi)時(shí)間自學(xué)編程,都是利用周末的時(shí)間從早學(xué)到晚。而且還是持續(xù)自學(xué)了 2 年,我開(kāi)始以為他是自學(xué)了半年后轉(zhuǎn)行的,沒(méi)想到一直堅(jiān)持那么久,點(diǎn)個(gè)贊~而且這位讀者說(shuō)他自己挺幸運(yùn)的,他最開(kāi)始轉(zhuǎn)行找工作的時(shí)候,目標(biāo)并不是想去大廠,只是想去小廠,結(jié)果事與愿違,非常滴魔幻!相信這位讀者的轉(zhuǎn)行經(jīng)歷,能鼓舞到那些也有此想法的朋友。
前言
大家好,很感謝林哥給我這次機(jī)會(huì)分享,介紹一下我自己。我 19 年畢業(yè)于武漢理工大學(xué),畢業(yè)后一直在做機(jī)械研發(fā)的工作,自學(xué)了兩年 Linux C 編程。如今在武漢找到了一份編程開(kāi)發(fā)的工作,現(xiàn)在我將我的經(jīng)歷寫(xiě)出來(lái),希望能給大家一些幫助。為什么要轉(zhuǎn)行?
轉(zhuǎn)行的主要原因是因?yàn)楫厴I(yè)設(shè)計(jì)要做一個(gè)串口播放器。當(dāng)時(shí)做了播放器和串口通信的實(shí)現(xiàn)分別花了一個(gè)星期,怎么將二者打通折磨了我很久。這期間我借了很多書(shū),看了很多博客,看了很多視頻,完全沒(méi)有相關(guān)內(nèi)容。最后論文指導(dǎo)老師都勸我放棄了,不然畢業(yè)論文就寫(xiě)不完了。沒(méi)法子,只能先放棄。雖然口口聲聲說(shuō)放棄了,但我的內(nèi)心還是不想放棄,有好幾晚都失眠了。直到一個(gè)周四的晚上,我依舊失眠到兩點(diǎn)。不過(guò)這一晚不同,我翻來(lái)覆去睡不著,腦海中突然閃過(guò)一個(gè)很好的 idea,害怕這個(gè) idea 飛走,我悄咪咪的爬下床,打開(kāi)我的電腦,順著思路敲下代碼,越寫(xiě)越興奮,心里不斷傳來(lái)聲音說(shuō)「對(duì)的,這是對(duì)的,哈哈哈~」。當(dāng)我點(diǎn)擊編譯,一個(gè)一個(gè)功能進(jìn)行測(cè)試,和預(yù)期功能完全一樣,那一瞬間成就感填滿了我的內(nèi)心。這時(shí)一道陽(yáng)光透過(guò)窗照在我臉上(武漢夏天太陽(yáng)出來(lái)早),原來(lái)已經(jīng)天亮了,這是我第一次對(duì)一件事這么著迷,就想著以后做這方面的工作。下面這張圖就是我當(dāng)時(shí)做的串口播放器。可以通過(guò)右側(cè)的按鈕進(jìn)行控制,也可以連接串口后,接收相應(yīng)的串口信號(hào),進(jìn)行視頻的播放、暫停、全屏之類(lèi)的操作,同時(shí)還可以發(fā)送和顯示接收到的串口數(shù)據(jù)。雖然現(xiàn)在現(xiàn)在這個(gè)播放器看起來(lái)很簡(jiǎn)陋,但當(dāng)時(shí)足足花了我一個(gè)月的時(shí)間,是我的第一個(gè)可以直接體會(huì)到的程序,我一直將它放在我的桌面上。當(dāng)學(xué)到厭倦的時(shí)候,都會(huì)打開(kāi)它,提醒自己走到這一步的初心。選擇什么方向?
因?yàn)槲沂菣C(jī)械出身的,我最初的想法是轉(zhuǎn)到與機(jī)械關(guān)聯(lián)性大一點(diǎn)的崗位 -- 嵌入式。心里想著悄悄的學(xué)習(xí),然后司內(nèi)轉(zhuǎn)崗,驚艷所有人(很幼稚的想法)。說(shuō)干就干,我先在網(wǎng)上找了學(xué)習(xí)路線,制定了學(xué)習(xí)計(jì)劃。需要學(xué)習(xí) 51 單片機(jī),就在 B 站找到了郭天祥的 51 單片機(jī)教程,還淘寶買(mǎi)了個(gè) 51 單片機(jī),照著教程一點(diǎn)一點(diǎn)的敲,有不懂的就看書(shū)。很快就遇到了瓶頸,書(shū)上有個(gè)電路圖我看不懂,出于「我不僅是想找一份工作,我還想把這份工做好」的想法,我又去網(wǎng)上找學(xué)習(xí)路線。網(wǎng)上說(shuō)嵌入式得學(xué)數(shù)電模電,學(xué)數(shù)電模電又得學(xué)電路分析、微機(jī)原理等等。于是我做了一個(gè)錯(cuò)誤示范,在 MOOC 上找了北理工的基礎(chǔ)電路分析課,還淘寶買(mǎi)了對(duì)應(yīng)教程。一學(xué)學(xué)了兩個(gè)月,堪堪對(duì)著視頻學(xué)完,想著厚厚的數(shù)電模電,還有樹(shù)莓派之類(lèi)的要學(xué),BOSS 直聘又查了一下單片機(jī)開(kāi)發(fā)的工資,得出結(jié)論 --?我不適合嵌入式(學(xué)東西直接一口氣學(xué)完,不要老想著完美主義)。接著我又開(kāi)始了尋找學(xué)習(xí)路線的路途,因?yàn)橄薅ㄕZ(yǔ)言是 C ,找到四個(gè)路線嵌入式、音視頻、服務(wù)器、游戲,考慮未來(lái)準(zhǔn)備發(fā)展城市的互聯(lián)網(wǎng)環(huán)境和房?jī)r(jià),最終決定做服務(wù)器開(kāi)發(fā)。接著就是在知乎上查找服務(wù)器開(kāi)發(fā)的路線,看了很多,根據(jù)自己的情況,制定學(xué)習(xí)計(jì)劃,再按計(jì)劃實(shí)施就可以了。學(xué)習(xí)方法
我一直堅(jiān)信選擇比努力重要,好的方法可以事半功倍。我提供一下我自學(xué)期間的方法,或者說(shuō)是基本原則,雖然不一定適合大家,但希望能給大家一個(gè)參考。- 睡眠最重要,睡得好,才有精力同時(shí)應(yīng)對(duì)工作和學(xué)習(xí),每天晚上必須保證七個(gè)小時(shí)的睡眠,中午也要午休一個(gè)小時(shí);
- 學(xué)習(xí)少便是多。聽(tīng)懂一個(gè)知識(shí)點(diǎn),比略略看了三四個(gè)點(diǎn)更重要;
- 剛開(kāi)始學(xué)的時(shí)候看視頻,快速構(gòu)建知識(shí)框架,后續(xù)看書(shū)補(bǔ)全知識(shí)框架;
- 做好筆記,以輸出為目的進(jìn)行學(xué)習(xí),推介用 typora 做學(xué)習(xí)筆記,將自己每天所學(xué)的內(nèi)容記用 typora 記錄下來(lái);
- 關(guān)注相關(guān)領(lǐng)域的博主,比如說(shuō)@小林coding,加入他們的技術(shù)交流群,你最后會(huì)發(fā)現(xiàn),你即使?jié)撍材軐W(xué)到很多;
- 將所需要學(xué)的分為知識(shí)和技能,二者相輔相成,但知識(shí)偏理論,要記下來(lái),技能偏實(shí)踐,一定要親自動(dòng)手。
一邊工作一邊自學(xué)
背景
我的本專(zhuān)業(yè)是汽車(chē)類(lèi)的,當(dāng)時(shí)高考結(jié)束選擇機(jī)械專(zhuān)業(yè)的原因就兩個(gè)。第一是認(rèn)知有限,無(wú)人指導(dǎo),只知道程序員禿頭、教師要改作業(yè)、材料要做危險(xiǎn)品實(shí)驗(yàn)等等,一眾專(zhuān)業(yè)中唯獨(dú)機(jī)械萬(wàn)金油,什么都會(huì),什么都能干,而且越老越吃香,因?yàn)槭寝r(nóng)村的,一心求穩(wěn),害怕找不到工作,機(jī)械就成了首選專(zhuān)業(yè)。其二就是這個(gè)專(zhuān)業(yè)是我們學(xué)校的王牌專(zhuān)業(yè),本著寧為雞頭,不為鳳尾的原則,就不考慮更好一點(diǎn)學(xué)校的普通專(zhuān)業(yè)。大四找工作時(shí)才知道,「什么都會(huì)」代表著「什么都不精」,「越老越吃香」代表著「年輕時(shí)不吃香」。當(dāng)時(shí)最大的愿望是能找到一份年薪十萬(wàn)的工作,能拿到年薪十萬(wàn)的基本上都是學(xué)院里的佼佼者,拿到十五萬(wàn)到二十萬(wàn)就是學(xué)院里的 top 同學(xué),再往上我就沒(méi)怎么聽(tīng)說(shuō)了。現(xiàn)實(shí)卻是,大多是四五千月薪的工作,而且得經(jīng)過(guò)層層選拔。印象最深刻的是一個(gè)知名汽車(chē)廠,面試了三輪,還要寫(xiě)小作文,最后一問(wèn)工資四千五。偶然間參加了一次互聯(lián)網(wǎng)公司的宣講會(huì),聽(tīng)到 17 萬(wàn)只是他們公司的白菜價(jià)時(shí),我整個(gè)人都驚呆了,我只能告訴自己「機(jī)械專(zhuān)業(yè)越老越吃香,他們?nèi)逯笥刑蕴C(jī),而我沒(méi)有?!?/p>現(xiàn)實(shí)往往是慘痛的,我在前一家機(jī)械公司呆了一年半。工作節(jié)奏是周一到周四早 8 晚 10,周五早 8 晚 5,遲到要罰款,周六可以晚點(diǎn)去,但一定要去上白班。雖然中午可以休息兩個(gè)小時(shí),下午也有一個(gè)半小時(shí)吃飯,但每次下夜班都是十點(diǎn)了,回到寢室只能簡(jiǎn)單洗漱一下就睡了。雖然每天的在工位上的時(shí)間只有「區(qū)區(qū)十小時(shí)」,但真正自己能支配的時(shí)間只有晚上十點(diǎn)半到第二天七點(diǎn)五十,每次周日的時(shí)候,只想睡覺(jué),一覺(jué)醒來(lái),發(fā)現(xiàn)明天又要上班了,感覺(jué)自己完全沒(méi)休息好,馬上又要上班了。僅僅一年的時(shí)間,跟我一起進(jìn)去的小伙伴體檢都有了大大小小的問(wèn)題,我也有了脂肪肝、甲狀腺結(jié)節(jié)、糜爛性胃炎,有時(shí)候還會(huì)心悸、胸痛。最開(kāi)始的計(jì)劃是一邊上班、一邊自學(xué),轉(zhuǎn)行成功了再辭職。直到第去年六月份的時(shí)候,帶我的同事去年績(jī)效打得不好,公司要求末尾淘汰。他是公司剛成立沒(méi)多久就來(lái)了的,被公司優(yōu)化了,本來(lái)沒(méi)什么,拿個(gè) N 1 走人也可以的,惡心人的卻是,公司用了網(wǎng)上各種套路,諸如威脅、調(diào)崗、最低工資等等招式對(duì)付我的同事。最后達(dá)成協(xié)議,工資降一半,繼續(xù)留下來(lái),我同事也同意了。但不到一個(gè)月,又說(shuō)上面政策變了,還是得走人,可以給N,但是是降薪后的N,我的同事徹底心涼了,不愿意在糾纏了。這件事也讓我徹底心涼了,即使董事長(zhǎng)說(shuō)「發(fā)動(dòng)機(jī)不過(guò)是一坨鐵」,我們研發(fā)人員也只是相視一笑,直到這件事發(fā)生,我們才明白----這公司沒(méi)什么人情味,我們都可能是下一個(gè)「他」,誰(shuí)知道明年會(huì)不會(huì)優(yōu)化我們呢?即使我們努力加班,年紀(jì)輕輕就一大堆毛病,也阻止不了被優(yōu)化。但這已經(jīng)是機(jī)械行業(yè)里的 top 企業(yè)了,集團(tuán)還是世界五百?gòu)?qiáng),從業(yè)人員都還是這種待遇。若是出去,其它機(jī)械小廠是不是更糟糕,這更加堅(jiān)定了我轉(zhuǎn)行的決心。后來(lái)了解到僅僅這個(gè)公司這樣,廣豐廣本上汽這樣的明星企業(yè)還是很好的,但進(jìn)去的條件極其嚴(yán)苛。小鵬、蔚來(lái)的互聯(lián)網(wǎng)車(chē)企待遇也很好,但需求更大的是「軟件人才」,不是機(jī)械。如果大家有志于汽車(chē)行業(yè),也不要因?yàn)槲业慕?jīng)歷而寒心,我的第一家公司代表不了所有的機(jī)械行業(yè),只能給大家一個(gè)參考。如果有志于發(fā)展中國(guó)的汽車(chē)行業(yè),建議大家可以學(xué)計(jì)算機(jī)、通信、電氣,然后進(jìn)入車(chē)企當(dāng)嵌入式工程師,結(jié)構(gòu)崗我就不推介了,這個(gè)坑我已經(jīng)踩了。言歸正傳,說(shuō)說(shuō)學(xué)習(xí)節(jié)奏。為了保證充足的精力應(yīng)對(duì)學(xué)習(xí)和工作,我基本上都是晚上十點(diǎn)下班,回到宿舍洗漱一番,和女朋友聊聊天,十一點(diǎn)就趕緊睡覺(jué)了,然后第二天早上 6 點(diǎn)起床看書(shū),看到七點(diǎn)四十就去吃早餐上班(住在廠區(qū),離辦公地點(diǎn)很近)。這樣的節(jié)奏一般保持六天,周日就睡半天,打打游戲,看看電影,放松自己,下周繼續(xù)上一周的節(jié)奏。周一到周六除了早上固定的學(xué)習(xí)時(shí)間,我也會(huì)在中午或下午下班看半小時(shí)書(shū),不過(guò)效率沒(méi)有早上高,故而早上一般學(xué)習(xí)最重要的內(nèi)容,其他時(shí)間看博客理解早上學(xué)的內(nèi)容。在這一年半的時(shí)間里,我只學(xué)了 C 、操作系統(tǒng)、計(jì)算機(jī)網(wǎng)絡(luò)、數(shù)據(jù)結(jié)構(gòu)和算法,基本上都是在 MOOC、B 站上找視頻自學(xué)的,看完視頻再看書(shū)進(jìn)行補(bǔ)充。C 的學(xué)習(xí)
我在 B 站看黑馬程序員的 C 課程入門(mén)的。我基本是先看完一個(gè)章節(jié)的內(nèi)容,心中有了大概的理解,就在 VS 上復(fù)現(xiàn)出來(lái)。我對(duì)自己的要求就是--一定要復(fù)現(xiàn)出來(lái),因?yàn)橛蟹N錯(cuò)覺(jué)就是--我以為我會(huì)了,一寫(xiě)代碼就卡殼了,爭(zhēng)取每天學(xué)習(xí)都動(dòng)手敲代碼。作為初學(xué)者,我學(xué)了三四個(gè)月,在此期間,一直秉承著「少便是多」的原則,甚至?xí)桃夥怕俣?/strong>,如果發(fā)現(xiàn)前面的忘了,就重新再學(xué)一遍,而且第二遍第三遍會(huì)快很多,而且還會(huì)發(fā)現(xiàn)之前忽略的細(xì)節(jié)。得益于這階段 C 學(xué)得很慢,對(duì)基礎(chǔ)知識(shí)記住得比較多,后來(lái)面試看看面經(jīng),C 相關(guān)的問(wèn)題基本能回答出來(lái)。我學(xué)完后沒(méi)看書(shū),因?yàn)椤禖 primer》太厚了,直至面試,我也只是略讀了一次。操作系統(tǒng)的學(xué)習(xí)
操作系統(tǒng)我是在 MOOC 上看北京大學(xué)陳向群老師的現(xiàn)代操作系統(tǒng)學(xué)的。不過(guò)現(xiàn)在 B 站也有視頻,操作系統(tǒng)還有其他很優(yōu)秀的課,比如華科的、哈工大的、清華大學(xué)的,我選擇北京大學(xué)老師的課是因?yàn)槲屹I(mǎi)了《現(xiàn)代操作系統(tǒng)》這本書(shū),課程剛好對(duì)應(yīng)上。學(xué)習(xí)過(guò)程中,操作系統(tǒng)給我的感覺(jué)就是非常的抽象,這一階段學(xué)得非常慢,進(jìn)程線程我都是看書(shū)才看懂的,不過(guò)這一階段要學(xué)的基本可以分為四個(gè)部分:進(jìn)程線程、內(nèi)存、文件系統(tǒng)、I/O(面試問(wèn)得很少,理解即可),其他的部分可以后續(xù)遇到再學(xué)。學(xué)習(xí)節(jié)奏基本保持著每個(gè)星期只學(xué)一章,多了不學(xué),也不能少。計(jì)算機(jī)網(wǎng)絡(luò)的學(xué)習(xí)
計(jì)網(wǎng)我是通過(guò)哈工大的計(jì)算機(jī)網(wǎng)絡(luò)學(xué)的,配套書(shū)籍是《計(jì)算機(jī)網(wǎng)絡(luò)自頂向下》,我只看了視頻的應(yīng)用層、傳輸層、網(wǎng)絡(luò)層、鏈路層、物理層。到傳輸層的時(shí)候我就感覺(jué)有些吃力了,還好當(dāng)時(shí)我遇到了寶藏博主@小林coding,小林的圖解讓我有一種醍醐灌頂?shù)母杏X(jué),原來(lái)課上理解不清的概念都被小林圖解得明明白白,衷心推介大家關(guān)注。數(shù)據(jù)結(jié)構(gòu)的學(xué)習(xí)
我的數(shù)據(jù)結(jié)構(gòu)是通過(guò)浙大陳越姥姥的課學(xué)的,B站有視頻,大家可以去搜。這一課程需要達(dá)到的目標(biāo)是,知道什么是數(shù)組、鏈表、棧、隊(duì)列、堆、樹(shù)、哈希表、圖這些數(shù)據(jù)結(jié)構(gòu)。最好能照著視頻實(shí)現(xiàn)自己的數(shù)據(jù)結(jié)構(gòu)。只要能將這些實(shí)現(xiàn)出來(lái),基本就可以進(jìn)入下一階段了。在家自學(xué)半年
在家這半年主要做了兩件事:- 第一是將之前學(xué)的操作系統(tǒng)、計(jì)算機(jī)網(wǎng)絡(luò)、數(shù)據(jù)結(jié)構(gòu)和算法、C 進(jìn)行總結(jié),用 xmind 將每一個(gè)內(nèi)容的知識(shí)點(diǎn)脈絡(luò)整理出來(lái),用 typora 將比較難得知識(shí)點(diǎn)記錄下來(lái)。
- 第二就是進(jìn)行實(shí)戰(zhàn)訓(xùn)練,學(xué)習(xí)編程技能,比如 linux 的基礎(chǔ) shell 命令、vim、gdb、gcc、make、git 的使用,學(xué)完這些后,開(kāi)始跟著 acwing 刷題,刷完算法基礎(chǔ)課后,學(xué)習(xí) linux 系統(tǒng)編程和 linux 網(wǎng)絡(luò)編程。