計算機系應屆生求職指北

最近幫了一個朋友的朋友作了下職業規劃,結合以前在微博上的一些問答,以爲很多應屆生同窗對求職有蠻多誤解的,因此這裏分享下個人一點經驗吧。雖然本文題爲指北,但只是一個面向對行業、對業界技術不熟悉的同窗的操做手冊。各位技術大牛可能以爲粗淺,請見諒。html

本文略長,會談及如下問題。前端

  • 職業規劃越早越好
  • 必定要珍惜校招的機會窗口
  • 應屆生的求職策略
  • 技術職位的選擇
  • 語言和技術棧的選擇
  • 技術棧的優化
  • 簡歷的書寫

下邊咱們一點一點來說。git

本文做者 @Easy ( weibo.com/easy ),方糖全棧課( quanzhanke.com )主講人,有多年大規模網站、雲平臺開發經驗、曾運營過用戶數十萬的程序員拍賣平臺,爲上千名程序員找過工做。轉載請保留以上做者信息和連接,謝謝。程序員

內容更新通知github

可微信掃碼(未關注直接關注)訂閱本指北更新。算法

職業規劃越早越好

職業是一個很是特殊的東西,它有兩點很特別,一個是「不可重來」,另外一個是「驗證耗時」。以前和一個老友聊天,他感嘆說,回過頭看看,本身的整個職業過得亂七八糟。等到如今明白這點的時候,已經來不及了。由於通常一段職業經歷短則一到兩年,長則三到五年。換兩家公司,十年一晃就過去了。若是你在這十年中沒有很好的成長,又不幸身在某些公司,那三十多歲可能就面臨被清退的處境了。後端

我通常不屑於去和別人分享什麼人生經驗,畢竟有些坑不本身跳下去是不會牢記在心的。但職業的坑不同,等你發如今坑裏時,可能已經晚了。因此我花了蠻多時間來研究這個。有興趣的同窗能夠去讀讀個人《程序員跳槽全攻略》,專門講職業規劃的。( 在個人我的網站上能夠免費讀 方糖氣球🎈|程序員跳槽全攻略 )瀏覽器

必定要珍惜校招的機會窗口

我大學的語文老師曾告誡咱們說,人生就像四季同樣,春天該播種,你去播種,秋天該收穫,你去收穫,這樣是最省力的。你非要倒過來呢,也不是不行,但就是會很累,會付出更多的精力和代價。服務器

校招也相似,它是社會和企業爲從未步入職場的同窗特地準備的一個綠色通道。在這個通道里,咱們將候選人當作一張白紙,能夠沒有經驗、沒有行業常識,只要對工做充滿熱情、有還算聰明的頭腦,基本都算是合格的。企業會爲這些同窗準備培訓,並留足適應期,有的甚至還會安排一對一的老員工來帶。微信

可是,一旦你錯過了它,那一切都不同了,由於你進入了名爲「社招」的紅海。在這裏,全部已經畢業的人變成了你的競爭對手,不但要面對和你同樣工做年限的人競爭,還要面對其餘工做時間更長、經驗更豐富的同行跳槽帶來的競爭。甚至常常發生由於招到了一箇中級崗位的候選人,取消掉兩個初級崗位的狀況。

因此校招很是重要,必定不要錯過。

應屆生的求職策略

既然校招這麼重要,那麼咱們怎麼才能在其中佔據優點呢?記住兩個詞「擇優錄取」和「跑贏同窗」。

擇優錄取

在微博上常常能夠看到這樣的問題:「我這個也會、那個也合格,憑什麼他們就不招我呢?」這是典型的沒有明白招聘本質的表現。要明白,求職不是「會考」而是「高考」,不是什麼產品的出廠合格校驗,而是一場中國這個資源緊缺型國家裏的又一場優質資源爭奪戰。

那些薪水高、發展空間好的知名企業(後文簡稱大廠),每一年招聘的人數是必定的。極端點說,若是如今全部候選人的水平都下調20%,他們依然要招人的,否則無法發展(嚴格講會有一些調整空間,但也扛不了多久)。

因此,尤爲是在校招裏邊,「絕對能力」並不重要,「相對能力」纔是最重要的。

跑贏同窗

我來說一個很老的童話,聽過的同窗請裝做沒聽過。兩我的在森林裏邊遇到了熊🐻,kuma 看見他們就嗷嗷的追了過來。一個同窗轉身就跑,另外一個問他說,咱們怎麼跑也跑不過熊的,那跑有什麼用呢?這個同窗回答說,我只要跑贏你就行了呀。

那其實校招也是同樣的。它不是說你的能力要有多少,其實再牛的應屆生的水平放到行業裏邊,都是不入流的,由於不少水平是靠海量的用戶壓出來的,你沒有遇到過這些場景,怎麼可能知道怎麼去應對。

因此應屆生和那些社招的候選人比,一般都是沒啥勝算的,但幸運的是,咱們和他們是不一樣的賽道。要跑贏一個在大廠核心崗位工做了一兩年的人不容易,但要跑贏那些和你同樣在大學只學了一堆理論基礎,甚至理論課都沒好好學每天在寢室吃雞的同窗,就容易不少了。

要認可,即便這樣,要跑贏某些天資聰穎、能力拔羣的學霸仍是有難度的。但這場比賽是不公平的,由於它沒規定每一個人必須同時開始跑。魯迅說得好,笨鳥先飛。(魯迅:我沒有說過)若是咱們能更早的認識到這點,花更多時間去準備,那麼贏的機率就會成倍提高。

我自己就是一個很是好的例子。嚴格的講,個人能力算是平庸偏上一點點的,雖然在當時不管如何我都不會認可。當我在大一下半期認識到這一點時,就開始自學 PHP,大二的時候寫了一堆沒人用的開源項目,大三上半期找了家公司作兼職,已經能把學費掙回來了。當大三下半期開始找實習時,個人簡歷已經能夠秒殺同校同窗,小小PK 一流高校的同窗了。

因此你覺得校招比的是能力,其實對於執行力中等的同窗來說,校招比的實際上是認知。越早認識到本質的人,就越容易在這場遊戲裏邊勝出。從這個角度講,堅持讀到這裏的你,甚至可能已經贏了一半了。因此記得要把這篇文章分享給你的好朋友,而後千萬別讓你不喜歡的同窗知道。

技術崗位的選擇

技術崗位的大致分佈如圖:

如今幾乎全部的軟件都已經互聯網化了,就算沒有互聯網化的,它之後也會互聯網化,因此咱們就不單純地去說軟件開發這個行業了。

開發崗

首先就是開發崗,這個就包括了前端開發、後端開發和移動開發。

前端開發和後端開發,主要是 B/S 結構裏的。B/S 結構就是 Browser-Server 結構。而前端指的就是瀏覽器這個端;後端指的就是服務器這個端。

前端

前端主要作的事情,就是把從服務器端讀取到的數據展示給用戶,而後經過各類 UI 控件和用戶互動,再將新的數據送回服務器端。具體的技術包括 HTML、CSS、JavaScript,還可能有一些嵌入瀏覽器運行的組件,好比 Flash 、 WebGL 。

後端

後端則主要送數據給前端,通常有兩種方式,之前用的比較多的是,將數據在服務器端先渲染完,而後將輸出的結果發送給前端;如今用的比較多的方式是將純數據經過 Json 或者 xml 等格式發送給前端,在瀏覽器中經過 JS 來進行渲染。

因此之前不少後端的工程師每每也懂一些前端的知識,好比我認識的不少 PHP 程序員,他們不但懂 MySQL 和 Apache,還懂 HTML 、 CSS 、 JS 和 PS。這種先後端都懂的工程師,也叫全棧工程師。

後端能夠用各類語言開發,國內用的比較多的包括 Java、PHP ,還有相對小衆一些的 Python 、 Ruby 、 Go。其實 C 也是能夠寫後端的,不過如今已經不多有公司直接用它寫了。

後來有了 NodeJS ,JavaScript 也能跑到後端了,因此不少前端工程師也有了後端開發的能力,他們也佔了全棧工程師的很大一部分。

客戶端

相對於 B/S 結構,還有 C/S 結構,就是 Client-Server 。C/S 結構下不用瀏覽器來展示數據和交互,而是用客戶端,通常是 Mac/Win/Linux 三大平臺。

移動端

手機大潮起來之後,無論是 B/S 結構仍是 C/S 結構,所有移動化了。B/S 結構對應的就是適配手機瀏覽器的移動網頁、以及嵌入在微信、微博裏邊的 H5 頁面; C/S 結構就是 APP ,通常覆蓋 iOS 和 Android 兩個主流平臺。

除了這些標準開發崗,而還有一些新興或者相對小衆的開發方向,好比人工智能/算法工程師、作智能硬件的硬件開發工程師、給企業作解決方案的企業軟件工程師。

其餘崗位

軟件並非開發出來就完了的,在上線或者發佈以前,咱們還須要「測試工程師」來進行測試;而上線之後,還須要「運維工程師」來管理和優化服務器集羣。如今服務器都虛擬化和容器化了,運維工程師中也出現了懂開發的分支,叫作 DevOps。

中高級崗位

無論是開發崗仍是測試、運維崗,都有其對應的中高級崗位。開發通常是技術經理;運維通常是架構師;測試通常是測試總監。技術總監、CTO 就是更高一級的職位了。

以上的職位分類咱們參考了招聘網站的分類,不必定準確,可能會有不少崗位沒覆蓋到,很多公司也會有本身獨特的崗位設置。

職位的選擇

若是能選擇的話,不建議一開始就選運維或者測試。緣由有兩個:第一,由於它們雖然很重要,但不是軟件開發的核心崗位。第二,從開發崗往這兩個職位轉很是容易,反之卻很是難。

以前在給掘金寫《程序員職業小白書》的時候,我作過一個郵件訪談,以問題的形式採訪了多位在不一樣階段、不一樣崗位、不一樣城市的程序員的平常。你們能夠讀一讀,瞭解下。程序員們的平常是怎樣的 (雖然這個小冊是收費的,但訪談這一章倒是能夠免費讀的,不須要購買哈)

語言和技術棧的選擇

語言概況

雖然出於某種政治正確,咱們通常都會說,語言不重要。但語言真的不重要麼?並非這樣的,每種語言都有本身的優缺點和適用範圍。

像日語和英語同樣,一個是看動畫玩遊戲用的,一個是看資料寫代碼用的。(誤) 下邊簡單介紹下我眼中的各個語言。

C/C++ :

系統語言,用來寫底層操做系統、高性能中間件和嵌入式開發。

Python:人工智能的好選擇

舉例來講,若是你想作人工智能方向的話,Python語言就是很是不錯的選擇。由於它在各個大學和研究機構用的很是多,有成熟好用的數學庫,適合於科學計算。在深度學習等熱門方向上,有大量用 Python 開發的框架,新出的 Paper 也能很快在 GitHub 上找到 Python 的代碼實現,能夠說是不二選擇了。

JavaScript:前端和全端

若是你想作前端,那麼目前來看,除了 JavaScript 還真沒有別的選擇,由於如今能在瀏覽器裏邊跑起來,也就是它了。過兩年等 wasm 成熟可能會有其餘選擇,但如今,是真沒有。

而相應的,若是你學會了 JavaScript ,想在這個基礎上再把後端給作了,那麼 Node.JS 就是很是好的選擇。由於它使用的就是 JavaScript 的解釋器,按 JavaScript 寫就行了。從學習成本上來說,它是很是低的,能夠經過很低的投入,就進入了服務器端的領域。

PHP:依然是網站首選

若是你要作網站,那麼 PHP 就是首選了。一方面是有大量的可用代碼,世界上超過80%的網站都用的 PHP,基本上你能想到的網站功能,都有能找到的實現,懸念只是有沒有免費的;另外一方面,PHP7 的性能提高了不少,用來寫 API 也很是好。

另一點,就是目前使用 PHP 的團隊很是多,即便在二三線城市也比較容易找到工做,固然,組建團隊也一樣相對容易。

Java:大數據分析

若是你要作大數據分析,那麼可能就離不開 Java 了。 從 Hadoop 開始一系列的 Google Big Table 的開源實現都是 Java 的,用於海量數據搜索的 Elastic Stack 也是 Java 的。

Go:雲計算和容器管理

若是你如今要想去作雲計算,那 Go 就是一個很是好的選擇。

由於它就是爲了大規模計算設計的,併發管理和性能都很是不錯。並且有不少雲計算的軟件,它就是 Go 寫的,若是你要去修改它,調整裏邊的實現邏輯的話,不會 Go 可能很麻煩。固然,理論上講,你也能夠經過容器和微服務的方式來搞定,但確定比直接改代碼麻煩。

另外區塊鏈的大熱平臺以太坊的官方(最具潛力)實現,也是Go作的。錢途大大的。

語言的選擇

興趣優先

在語言的選擇上,尤爲是第一門語言的選擇上,我一直推薦興趣優先的原則。由於對初學者而言,當你遇到困難堅持不下去時,興趣會幫你一把。中學時爲了改仙劍,我連彙編都試着學了個入門 🤣

市場其次

但其實對絕大部分應屆生而言,對各類語言並無特別的偏好。並且「找到工做」這件事是很是重要的。因此與其盲目的選擇語言學習不如來看看各個語言在招聘市場的表現。

我以前寫過一個腳本,能夠抓取幾個互聯網招聘大站的招聘啓事,並按職位對薪資進行統計。下邊是最近一週的統計結果。

先來講說這些數據怎麼看。

職位熱度相似於招聘職位數,和其餘語言對比就能看出差距。平均薪資之全部有兩個值,是由於咱們通常招聘時會給出薪資的上限和下限。嚴格的講,這並非當前某個語言的程序員們的薪資,而是他們下一次跳槽時的可能薪資。另外,部分企業喜歡在上限值上邊虛高,因此把上限乘80%可能更合理。而下限通常比較真實,更具有對比價值。

而後咱們來看看能發現什麼。

Java 的數據很是牛

首先咱們會發現,Java 的職位熱度很是高,幾乎在全部城市裏邊都是排名第一的。這裏有一個特殊緣由,就是 Android 職位基本也是使用 Java 語言進行開發的,因此這兩個職位有一些重疊。也就是說,學好 Java 其實能夠同時應聘 Java工程師 和 Android 工程師(可能須要額外在學一點點應用開發的知識),這很是划算。而從薪資方面看,Java 也是首屈一指的。

前端緊跟其後

緊隨其後的是前端職位。前端是個很是有意思的特色,那就是——幾乎全部的公司都會招前端。對比 Java 而言,可能有不少大廠的後端用的不是 Java ,那他們就不須要招聘 Java 工程師。若是你很是想去這家公司,但你會的語言是 Java ,那麼就可能和機會擦肩而過。而前端崗位的話,機會就可能大得多。這有點像血型裏邊的O型血,怎麼地方都能用。就算是自覺得站在食物鏈頂端鄙視「古典互聯網」的區塊鏈公司也不得不招前端呢,也是一個很是好的選擇。

除了看熱度,咱們也要考慮到競爭,好比 Java 是一個「傳統」崗,不少軟件行業的工程師也是會 Java 的。而「前端」是一個新興的互聯網崗,專業前端還不算太多(和 Java 比啦),因此入職難度說不定反而低一些。

其餘語言

其餘語言在各個城市的數據各不相同,你們能夠挑本身感興趣的看。好比 Go 語言在北京比其餘城市熱幾倍;區塊鏈雖然看起來很火,但其實職位數也就比 PHP 的一半多點;Ruby 雖然薪資不錯,但崗位很是少…

總之語言的選擇因人而異因時而異,請綜合各類視角去選擇一個適合本身的。

學習路線圖

在選擇好職位和語言後,就要尋找對應的學習路線圖進行學習了。這裏推薦這個 Star 數量超過4萬的路線圖(的中文版):GitHub - goodjack/developer-roadmap-chinese: 2018 年成為 Web 開發人員的路線圖

雖然不是很全,但細節不錯。

技術棧的優化

以前咱們在分析 Java 數據的時候,發現一個有意思的問題,那就是 Java 的技術棧能夠同時覆蓋兩個熱門職位 —— Java 和 Android,這讓咱們的求職競爭力一下翻了一倍。那麼在其餘的語言和崗位上還存不存在相似的狀況呢?

實際上是有的,好比前端崗位就是一個很是有潛力的例子,它的後端解決方案 NodeJS 正在日益流行 。在我寫這篇文章的時候,互聯網招聘大站 拉勾網 上北京的 NodeJS 職位數是 181,上海是 114,深圳是 65 。因此學完前端知識再補一下 NodeJS 的收益是不錯的。

但這個技術棧其實還能夠進一步優化,由於一個偶然的緣由,我統計了一下 PHP 崗位和前端崗位招聘啓事裏邊出現的技術關鍵詞,發現其重合度居然高於60%。具體的技術關鍵詞和熱度見這裏 《PHP&前端崗(1~3年)核心技術點分析報告》

回頭一想其實也很好理解,畢竟招 PHP 是來作網站的,HTML CSS JS 總得會一些才行。這意味着PHP的同窗只須要補上部分前端知識,好比主流框架 React / Vue / Angular 和 SPA 開發就能夠同時應聘 PHP 和 前端 職位。

這會有多大的競爭力呢?前端招聘啓事裏邊,有超過十分之一的企業說起了PHP。這還沒完,React 有一個混合應用解決方案,叫作 React Native,能夠直接用 React 棧來開發手機APP。這個技術的需求如何呢?如今拉勾網上北京的 React Native 相關職位數有 84 。

因而呢,咱們能夠選擇 PHP + React + React Native 的技術棧,僅僅多學習一點知識,能夠投遞的崗位就從原來的 364 變成了 364 + 373 + 84 。

這就是技術棧優化的策略。關於這個技術棧的優化結構,能夠看這裏 《方糖全棧學習路線圖》,這個棧還順便把區塊鏈應用開發也覆蓋了。你們能夠觸類旁通,去優化本身選中的技術棧。

簡歷的寫做

不要最後找工做的時候再來寫簡歷。如今就開始寫,即便你什麼都不會。這樣你纔會真切的感覺到,本身的缺點和劣勢。而後經過不斷的學習,往簡歷上追加新的內容,直到你本身看起來以爲有競爭力了,簡歷纔算階段性完成了。

關於簡歷的寫做技巧和工具,我以前寫過一篇文章詳細說明,能夠點這裏閱讀 《如何寫出一份專業的技術簡歷》 (這篇文章自己依然是免費的,不用購買小冊就能讀)

寫在最後

不知不覺已經寫了這麼多了,其實還有一些內容想說,但暫時就不寫到這裏了。等之後有空我再整理一個小冊子吧。我把文章也同時發佈到了 GitHub,之後的更新會經過 GitHub 進行,歡迎 watch 和 star 。https://github.com/easychen/career-guide-for-cs-graduate

PS:若是你還不知道怎麼用 GitHub,那麼趕忙學學吧,這但是程序員的必備(交友)工具哦。

相關文章
相關標籤/搜索