我相信大多數學習編程的同學都有著對大公司的憧憬。技術、聲望、薪資、福利,這些都足以成為吸引你進入大廠的理由。
對于很多同學來說,通往大廠的道路并不明朗,不知道是否有希望,也不知道怎么努力,感覺遙不可及。
其實,我身邊有很多成功拿到大廠 offer 的同學,他們并不都是大家想象中的 985 名校碩士、競賽金牌、開源大佬、編程神童。相反,我看到了很多背景一般卻憑實力沖進大廠的同學,而且他們在工作中的表現非常出彩!
通過和這些同學的交流,我發(fā)現他們在編程學習和求職方法上有一些共性,再結合自己的真實經歷,我總結了一套
較通用的編程學習和求職架構。
無論你現在處于編程學習的哪個階段,又或者只是對編程有興趣,下面的內容都會對你有一定幫助。讓你看到更清晰的未來,并為之而努力。
首先,要明確一點,編程學習沒有捷徑!必須明晰目標、拉長戰(zhàn)線、掌握技巧、持續(xù)學習、做足準備,才能立于不敗之地。
如圖,我將編程學習分為 7 個部分。為什么叫做 “學習架構” 而不是 “學習路線” 呢?因為在編程學習中,有些事情不是嚴格按照順序去做,而是在我們整個學習過程中都要長期堅持的。
1. 初入茅廬,海納百川
剛開始學習編程時,難免會感到迷茫,如果你初入大學,會發(fā)現身邊大多數的同學選擇加入了學生會、各種社團來豐富校園生活,而不是一門心思去學習。其實這個階段,并不需要太過關心和考慮以后找工作的問題,要做的事情就是學好大學的一些通識課程,保證成績不能太差。不要提成績無用論,除了學校之外,高的績點也是簡歷的牌面,如果能取得前幾名的好成績,是絕對的加分項!
對于計算機專業(yè)的同學,剛開始并不會接觸到很深入的知識,也很少有機會去開發(fā)一個完整的作品?;径际菍W習
C
、
C++
等編程語言,因為涉及和能夠學習到的知識相對豐富。但是,想要學好編程,課本上的知識是遠遠不夠的,一定要
自學!
其實剛開始的時候大家并不知道自己擅長什么、真正喜歡什么、以后想做什么、從事哪方面的工作,因此,可以 “海納百川”,多了解和嘗試各種編程語言、技術框架、專業(yè)知識等。比如在課堂教的編程語言之外,去自主學習下 Web 網站開發(fā)或者
Python
。
過去幾十年,我們的學習幾乎一直依賴書本。但是如今,互聯網上資源非常豐富,為我們自學編程提供了很大的方便??梢赃x擇看紙質書、電子書,但是一定不要直接去啃那些很復雜的理論書籍,而是選擇一些輕松有趣、相對簡單、案例豐富的書籍。除了看書之外,可以選擇
W3Cschool
、實驗樓、
FreeCodeCamp
等在線學習網站,邊學邊敲代碼練習。還可以去 B 站上搜索一些視頻教程,可能要比啃書學習要輕松得多!
但是,無論你選擇何種方式去學習,
一定要邊學邊練習,不必局限于一些習題或書中的代碼片段,可以試著發(fā)揮自己的創(chuàng)意,去編寫一些簡單的網站或者實用的小工具,相信你會收獲成就感,逐漸對編程產生興趣。
這個階段,除非你有非常明確的學習方向,否則沒有必要對某一門技術過于執(zhí)著,畢竟計算機領域很多技術和知識點是相通的,前期先多學習一些簡單易懂的知識,會讓編程學習輕松有趣一些。
2. 興趣使然,縱橫交貫
上一個階段重在培養(yǎng)我們對編程學習的興趣,當你學習了一些編程知識和編程語言后,你已經對很多零碎的知識產生了印象,后面學習新知識也會比之前更加容易和迅速。
這個階段是你編程能力開始突飛猛進的時候。由于時間和精力有限,你要做的是從你已經學到的知識庫中挑選出相對感興趣的部分,比如某一門編程語言(比如
Java
),或者是某一個領域(比如
NLP
)。然后對這部分知識進行相對深層次的學習,可以去讀一本經典的書籍,了解這門技術的特性,甚至是閱讀相關源碼。
在重點深入學習一門技術的同時,還需要繼續(xù)保持開放,接觸更多的新知識,而不是深陷其中、無法自拔。計算機的很多知識是相互關聯的,如果多學習一些不同方面的知識,我們更容易將那些零碎的知識點串聯成網,從而開拓思維,得到更大的收益。
但是,算法、數據結構、計算機網絡等知識點比較特殊,即使沒有興趣,也要認真地去學習!因為它們可以培養(yǎng)你的思維,提升你的程序設計能力,對于程序員來說太重要了。畢竟大多編程語言都是相通的,
語言只是工具,思想才是武器。
聽起來可能比較抽象,但在實際面試和工作中往往這些零碎的小知識會發(fā)揮巨大的作用。比如,面試互聯網大公司時,基本每一輪面試都會考察幾道算法題目;面試后臺開發(fā)崗位,也一定會問到計算機網絡、操作系統(tǒng)的知識。在工作中,我們也經常會用到一些算法的思想來解決問題,比如滑動窗口、時間輪、布隆過濾器等。
這個階段,我推薦大家選擇主流的技術和框架進行深層次的學習,比如
Java
語言的
SSM
和
SpringBoot
框架。主流的技術教程多、文檔多、遇到問題更容易解決,而且通常容易上手,能做出一些個人作品,增加興趣和成就感。
3. 有的放矢,十年磨劍
如果你已經對某個編程語言或知識領域產生了濃厚的興趣,或者已經能夠得心應手地開發(fā)個人作品,那么恭喜你進入到下一個階段。
本階段要做的是
確定自己的職業(yè)方向,做到有的放矢。
為什么沒有在一開始就讓大家明確目標呢?**因為確定目標的時機很重要,過早或過晚都不好。**很多人在上大學前可能對某一個職業(yè)特別憧憬,整天嚷嚷著自己一定要成為自己想成為的人,但是直到你真正接觸這個職業(yè)或者其相關的知識一段時間,你可能才意識到自己并不適合。比如我小時候想當律師,整天看
CCTV 12
,也啃了幾本法律書籍,但是后來自己記性差了,而且發(fā)現自己對編程的興趣更大,因此也放棄了之前的目標。慶幸的是,我不是在大學期間才放棄律師這個職業(yè),沒有耽誤到我學習編程知識。大學時間短暫,沒有太多的時間給我們去迷茫和折返。
既然已經有了喜歡的編程技術和領域,確定職業(yè)目標就相對簡單了。每個人有不同的選擇,建議先從自己的興趣出發(fā),選擇和自己的興趣和所學技能相匹配的崗位。同時,也要考慮到目前的市場需求,最好看一些數據和調研,不要選擇冷門職業(yè)。還有一些其他納入考慮的點,比如薪資、工作時長、地點等等。確定職業(yè)后,還可以進一步地去選擇公司。建議給自己定一個最高的目標,比如進入互聯網大廠,要相信自己,只有饑餓的狼才能吃到美味的飯。
確定好職業(yè)目標后,就要根據職業(yè),堆積打磨自己的技術棧。
這是一個十年磨劍的過程,重在堅持。
首先要確認你的目標崗位需要哪些相關的技術,推薦直接到大互聯網公司的招聘官網來看對某崗位的技術要求,比如
Java
開發(fā)可以看阿里和美團官網、
C++
看騰訊官網、
Golang
或
PHP
看字節(jié)跳動官網。
知道要重點學習哪些技術后,要制定一個明確的計劃,將大的目標拆解為依次去學習每項小的技術,可以參考網上的一些
學習路線,按照主次對技術知識進行排序,并規(guī)定好學習每個技術花費的時間,從而有一個整體預期,少走彎路。而不是雜亂無章地去學習,主次不分。
比如
Java
后臺開發(fā)崗位一般會要求
Java
基礎編程、
Java
并發(fā)編程、數據庫、計算機網絡、操作系統(tǒng)、設計模式等,相應的技術棧可以是:
Java
、
MySQL
、
SSM
框架、
Redis
、
Linux
等等。確定技術棧后,要按照計劃,對每一項技術進行全面且系統(tǒng)的學習,推薦閱讀一些經典書籍,比如
Java
可以看《 Java 核心技術卷 1 》、《 Java 編程思想 》等。
如果要進大公司,編程學習就不能僅僅止步于 “會用”,而是要懂得 “巧用”、“精用”,甚至能夠對知識點進行復刻和創(chuàng)造。比如學習
MySQL
要去了解其底層的數據結構和調優(yōu)策略,學習
Spring
框架時要熟悉其底層的設計模式和依賴注入的原理等。更重要的是,不能紙上談兵,要有能力去靈活運用學到的知識來開發(fā)一個項目,
企業(yè)需要的是能解決實際問題的人才。
學完這些知識后,你就可以踏實地在簡歷上寫 “熟練運用 xxx 技術” 啦!
4. 學以致用,寧靜致遠
不止針對計算機技術類崗位,互聯網公司的很多其他崗位,比如產品、運營、策劃,都要求學生有較強的實踐能力。但是學校的課本知識多少有些過時和應試教育,大多停留在理論層面,實踐創(chuàng)新部分還是要靠學生自我驅動。如果不懂得自學和實踐,真到找工作的時候,簡歷上沒有項目經驗,空空如也,是極大的劣勢。
在學習技術的過程中,一定要邊學邊練,否則可能當你用心看完一本書后,打開電腦發(fā)現自己一行代碼都寫不出來,再回過頭來翻書找代碼,就浪費了不少的時間。
剛開始動手寫代碼時,如果沒有什么創(chuàng)意,不知從何開始,可以按照網上的視頻教程做一個簡單的 Demo(小樣),并且將這些 Demo 好好保存。后面學到新的知識后,可以選擇自己現有的 Demo 進行改造和包裝,比如添加新的功能、優(yōu)化性能等等,盡量做出完整的作品,并用這些作品去完成課程設計作業(yè)、參加作品類競賽、申報科創(chuàng)項目、申請軟件著作權、專利等等。如果某個作品做的非常好,甚至可以考慮將其正式上線,說不定就發(fā)家致富了呢?
積累了作品,你的簡歷就多了 “項目經歷”、“競賽獎項” 等內容,而這些內容,是面試官非??粗氐?。
在正式找工作前,建議大家先去找一份和目標崗位相關的實習。曾經看過一份校園招聘數據,數據表明,入職頭條的員工中 50% 都曾經在頭條實習,而網易員工中有超 70% 的同學都有實習經歷。
實習就像正式員工跳槽一樣,不是非要一步登天。第一段實習經歷沒必要有太高的要求,但是最好要和自己的職業(yè)目標相契合,能夠感受真實的企業(yè)環(huán)境、學習到很多的工作經驗、在團隊中實踐自己的技術知識。不用擔心自己水平不夠,無法通過面試。其實在參加面試的過程中,能夠更快、更針對性地發(fā)現自己的不足,并且在面試后進行復盤和總結,能夠得到更快速的成長。
怎么去找第一份實習呢?其實現在有很多幫助大學生找實習的正規(guī)平臺,比如牛客網、實習僧 APP、找學長學姐內推、或者直接在企業(yè)招聘官網投遞簡歷等。
寧靜致遠 是我個人很喜歡的一種境界,大家在找實習或者正式求職時難免會受到外界環(huán)境的影響。比如小李拿到了世界 500 強的 offer、年薪百萬,或者小王成天抱怨找工作難、競爭激烈。然而這些夸耀或負面情緒和我們又有什么關系呢?就像考場里做卷子,提前交卷的一定考得最好么?誰知道最后你的分數會不會比他高呢?
我們應該關聯上下文去看待各種人事、情況和情緒,確實有很多拿到好的 offer 的同學,他們也許比你聰明,也許比你有背景,但更多的是他們曾經付出了更多的努力,舍棄了很多休閑娛樂的時間。找工作難、無法通過面試、產生負面情緒也一定是有原因導致的,企業(yè)中的面試官不會都戴有色眼鏡看人,可能還是我們沒有足夠多的付出或者有一些失誤,又或者其他人比我們更努力、更幸運。我們要做的是和優(yōu)秀的同學多交流,發(fā)現他們身上的閃光點,分析他們成功的原因,向他們學習經驗和方法。多和優(yōu)秀的人交流,自己也會變得優(yōu)秀。同時,我們要吸取每一次失敗的經驗教訓,記錄下來,多多自省。然后更重要的是,保持寧靜,按照自己的規(guī)劃,一步一步往前走就好。
5. 鋒芒畢露,放手一搏
如果你已經按照上述的階段努力過,不僅有了一定的技術知識儲備、還有項目經驗,或者是一段實習經歷,那么恭喜,你已經具備了一定
硬實力!下面你要做的就是利用一些軟技巧,在求職時,將你的優(yōu)勢與亮點鋒芒畢露。
首先,整理一份完美的簡歷。簡歷是一個人求職的門面,即使你的口頭表達能力有多優(yōu)秀,見不到面試官也就毫無用處,因此要盡可能地在簡歷上展示自己。
-
-
個人技能:列舉你熟悉的技術知識,也就是你的技術棧。
-
-
項目經歷:列舉你做過的項目,比如課程設計、學習作品、競賽作品、實習項目等。
-
-
實習經歷:介紹你的實習情況,在哪實習、做過什么、帶來什么成果。
其實,編寫簡歷是有很多技巧的,下面列舉一些常用技巧:
-
簡歷必須一頁,排版整潔,保持清爽,且色調不宜過暗或過亮,可以使用淡藍色 。
-
要分析自己的個人優(yōu)勢,對各板塊排序,把亮點放上面 。
-
簡歷上的文字內容精煉,用詞盡量專業(yè),拒絕口語化,你的簡歷終究是要給專業(yè)的面試官看的,不用擔心他看不懂。
-
項目、實習經歷介紹中,可用 STAR 分析(場景、任務、行動、成果)來梳理自己的核心工作,其中,成果最重要,最好列舉明確的數據,比如使用 xx 技術將項目的并發(fā)量提升了 30%。每個項目的介紹不宜過長,給面試官提問的空間。
-
利用簡歷去引導面試官。很多面試官都會從簡歷中挑選他感興趣的項目或技術去展開提問,因此必須足夠熟悉寫到簡歷中的項目和技術,并提前想好對策。比如項目中用了哪些技術,為什么用,有什么亮點,怎么去優(yōu)化等。
-
寫完簡歷后,自己通讀幾遍并找專業(yè)的 HR 來進行點評,還可以多閱讀借鑒他人的簡歷。
-
針對不同的崗位和崗位描述,準備不同的簡歷,在部分細節(jié)和內容上調整。比如投遞產品和運營崗,你的項目和實習介紹就要分別側重這兩種不同的職位。
-
內容允許適度夸大,但絕對不能欺騙!這個小技巧尤其適用于沒有特別多的項目的同學,但也要注意不要被面試官戳破哦。
準備好簡歷后,要多多練習自我介紹。自我介紹的重點是通過講述自己的校園經歷、學習過程、競賽、實習、研究等來突出你的
學習能力、溝通能力及解決問題的能力。其他的部分,如個人性格,用幾個成語帶過就好,屬于正確的廢話。自我介紹快結束時一定要提及自己最擅長的方向、項目或技術,很多面試官都會從自我介紹展開提問。
面試是應聘者和面試官之間的博弈,一場完美的面試是由你來引導面試官,讓他對你產生興趣、產生信賴,而不是被他牽著鼻子走。至于你是第一次來面試還是老油條,從自我介紹就可知一二了。
面試過程中,在不過分夸大的前提下,大膽展示自己吧!很多面試官都喜歡愛思考、善于交流、有發(fā)散思維、有執(zhí)行力的同學。
編程技術崗位的面試通常會要求寫算法題,所以一定要每天堅持刷幾個小時左右的算法,這里推薦 LeetCode 算法刷題平臺,以樹、鏈表、動態(tài)規(guī)劃、棧、隊列、深度優(yōu)先搜索、廣度優(yōu)先搜索等知識為主。如果是線下面試,面試官可能會給你一張白紙,讓你在上面寫出算法代碼;如果是線上面試,可能會使用一些在線面試平臺,要求程序能夠正確執(zhí)行,難度會更大。但是無論何種形式,都不要慌,由于時間有限,一定要理解題意,想清楚在寫,字跡公正、縮進得當。即使做不出來,也要試探性地向面試官說出自己的想法,通常面試官會給出友好的提示。
還有一點非常重要!要記得提前關注自己目標公司的招聘時間,多數互聯網公司雖說 “金九銀十” ,但是很多公司的提前批從 7-8 月份就開始面試和錄用了,因此必須提早準備,合理安排日程。建議大家爭取下大公司暑期實習的 offer,有機會直接轉正,拿到轉正 offer 后再去其他公司面試說話都自信了很多。
最后,不要過度自信,也不要盲目悲觀。要多投遞一些企業(yè),多一個機會、多一個選擇總是好的。不要覺得麻煩,畢竟都已經努力那么久了,放手一搏吧!
6. 歸納總結,方法唯上
歸納總結不僅僅是在學習編程或者求職中,是我們一生都要去堅持的好習慣。學到了知識,要總結;完成了項目,要總結;參加了競賽,要總結;每天的實習工作,要總結。只要是你做過的有意義的事,無論成功或失敗,都值得總結。
有的同學會認為總結和寫文檔一樣,沒有必要浪費時間。但實際上,總結并不是草草寫一下就完事了,而是要針對某件事,從零開始全面復盤,回顧目標、回顧工作、提問自己
5why
(為什么要這樣做,而不是那樣做?等等)、針對優(yōu)缺點進行分析、思考如何改進完善等。
通過歸納總結,可以減少重復錯誤、優(yōu)化工作、發(fā)散思維,最終提煉出一套適合自己的學習工作方法論。有了高效系統(tǒng)的方法,也能幫助你在今后的工作中快速適應和晉升。
寫完總結后,必須進行存儲,推薦使用云盤,比如騰訊微云、阿里云盤、OneDrive、印象筆記等,方便自己去查閱和回顧。學了知識不總結,或者寫了總結不存儲,就像是小熊掰棒子,徒做無用功。
此外,總結不止是給自己看的,也同樣能幫助到他人。尤其對于公司來說,技術方案和工作總結有著巨大的意義。幾乎所有企業(yè),大到公司,小到個人,都會維護自己的知識庫,沉淀技術和業(yè)務的同時,也方便給新人提供參考和指導。
值得一提的是,很多同學抱怨自己的工作過于重復,無法成長。我覺得工作必然會重復,但重復不代表無法成長,如何從工作中提煉共性、多提出想法來改進現狀,才是值得考慮和關注的。
7. 春風化雨,顆粒歸倉
如今,我們生活在一個萬物互聯的時代,各種編程網課、培訓資料、項目實戰(zhàn)、開放源碼、線上直播課等,為我們營造了春風化雨的學習環(huán)境,我們應該充分利用這些資源,分類收藏,顆粒歸倉。
但有時資源過多,也會對我們造成困擾。因此,我們要有選擇地使用資源,看的多了,自然能分辨好壞;要注重信息時效性,比如學習新框架時,盡量不要看出版超過 1 年的書籍。
此外,除了這些靜態(tài)資源。我們還可以在線上線下,多認識一些優(yōu)秀的前輩和小伙伴們,和大家一起學習討論,甚至可以合作參加比賽,開發(fā)一些作品。畢竟一個人堅持會很孤單,如果在編程學習的路上,和一些小伙伴一起前行,到時收獲的就不止有編程能力的提升,還有更重要的友誼。
總結
其實學習編程和求職的過程就像是做了一次大數據推薦。
起初,你面前有太多的編程知識和技術,眼花繚亂,不禁感到迷茫。然后通過一段時間的學習和摸索,你對編程產生了一定的興趣,開始挑選幾個相對感興趣的技術去學習,過濾掉了一些不感興趣的技術。隨著你學的知識越來越多,你的喜好也逐漸明朗,你開始為自己確定求職目標,確定了主要學習編程語言和技術方向。而后你需要日復一日堅持學習編程,并通過項目實戰(zhàn)、參加競賽、找實習等方式提升自己的編程實踐能力。最后放手一搏,將自己的技術展現給面試官,并成功地通過面試,找到自己心儀的工作。
整個過程中,你的每個行為其實都會影響最后的面試結果,從而決定你的就業(yè)去向。究竟面試官能不能從海量人選中鎖定你呢?
學習編程和求職的道路并不平坦,我們會無數次因為寫不出程序而發(fā)愁、因為一個小的漏洞而熬夜、因為面試失敗而否定自己;但是同樣會因為程序的成功執(zhí)行而欣喜、因為漏洞的修復而歡呼、因為通過面試而自豪。
—————END—————
特別推薦一個分享架構+算法的優(yōu)質內容,還沒關注的小伙伴,可以長按關注一下:
長按訂閱更多精彩▼
如有收獲,點個在看,誠摯感謝
免責聲明:本文內容由21ic獲得授權后發(fā)布,版權歸原作者所有,本平臺僅提供信息存儲服務。文章僅代表作者個人觀點,不代表本平臺立場,如有問題,請聯系我們,謝謝!