1. 程式人生 > >演算法工程師過去這一年:理想很豐滿,現實很骨感

演算法工程師過去這一年:理想很豐滿,現實很骨感

640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1

本文轉自100offer微信公眾號

【導讀】人工智慧火熱的 2017 年,演算法相關崗位無論在薪資還是受歡迎程度上,均在市場中名列前茅。但在 17 年整體演算法崗求職市場排摸中,我們卻發現到幾位高薪入職新崗位的演算法候選人,紛紛在入職新公司不久後因水土不服而火速離職。這不禁使我們疑惑:2017 年,演算法工程師的求職之路,真的一帆風順嗎?演算法工程師高薪、熱門的背後,又有哪些不為人知的故事?對於2018年,演算法工程師的求職之路將會是怎樣一種狀況呢?

「演算法崗位薪資高,剛畢業的本科生都能拿 XX 萬年薪」,演算法崗位不斷傳出的高年薪多少讓在 2017 年看機會的網際網路人有些紅眼。一時間「Java工程師如何轉崗演算法」、「前端工程師如何向人工智慧崗位靠攏」、「零基礎如何入門演算法」等類似的求教帖在各個技術平臺、討論社群被反覆熱議。

誠然,一個處於上升趨勢的領域總是更能夠給大家帶來「希望」。在整體網際網路行業趨於平穩發展的 2017 年,演算法崗位無論是在需求還是供應上的顯著增長都使它成為相對「保守」的 2017 年招聘市場上一個亮眼的崗位。那麼 2017 年,演算法崗位的整體表現如何?

通過 100offer 對 2017 年演算法崗位的整體分析上看,2017 年的演算法崗位在供需增長上的表現的確十分亮眼,但是也出現了平均面邀數明顯下降的情況:

  1. 演算法崗的求職者顯著增長:演算法求職者增長 87%;

  2. 招聘演算法崗的公司數量增長約 1.2 倍;

  3. 雖然招聘公司增長顯著,但求職者的平均面邀數卻出現顯著下降。

那麼,為什麼會出現平均面邀數顯著下降的情況?以及作為求職者應該如何應對呢?

說明:

1. 本文所使用資料,除特別說明外,皆來自100offer平臺;

2. 本文資料擷取時間: 2015 年 1 月 1 日至 2017 年 12 月 31 日;

3. 資料擷取物件:求職方向為演算法、資料科學家的候選人,他們經篩選在 100offer 進行匿名展示,他們收到的面試邀請和薪資普遍高於市場平均水平。

4. 100offer 平臺統計的面邀薪資、跳槽後薪資資料方式:月薪*發放月份。不包含獎金、期權等。

演算法崗位供需增長顯著,但求職者所獲人均面邀大幅下降

1.  演算法崗位求職者增加87%

640?wx_fmt=jpeg

2017 年,期望求職方向為演算法的求職者增加了 87%,一躍成為去年求職數量最多的技術崗位第三名。

640?wx_fmt=jpeg

我們通過細分資料後發現,這部分增長人群主要來自:

(1)高學歷群體

演算法是高學歷人群的聚集地。近年來,演算法崗位的碩博佔比逐漸升高。從 15 年的 35.4% 上升到 17 年的 53.2%。

640?wx_fmt=jpeg

(2)資深求職者

除了學歷越來越高外,市場上看機會的資深候選人變多。3 年以下的演算法方向候選人佔比較 16 年下降 4.2%,工作 6 年以上的演算法工程師上升 6.9%。

640?wx_fmt=jpeg

從這些資深的演算法工程師的來源上看,我們發現他們往往有知名傳統企業的工作經歷。其中最多的就是從華為、新思科技等公司出來的演算法候選人。這些候選人在 2017 年要麼受到行業發展的影響、要麼受到傳統企業裁員因素的影響,紛紛選擇在 17 年出來看機會。

2.  招聘演算法崗公司數量增加 1.2 倍,但發出面邀僅增長 6%

2017 年進行演算法崗位招聘的公司較 16 年增長約 1.2 倍,一躍成為需求量最大崗位第三名。

和需求公司一起增長的還有公司發出的面邀數。2017 年,需求方總共發出 2 萬+ 面試邀請,雖然發出的總面邀數增長了,但這一增長率較 2016 年僅為 6%,遠低於求職者(增長 87%)的增長量。

640?wx_fmt=jpeg

3.  求職者所獲平均面邀數顯著下降

相較於 2016 年演算法求職者平均收穫的 13.9 封面邀,演算法工程師的面邀數在 2017 年下降至 7.8 封。通過上一點的分析,我們發現演算法崗的求職者漲幅遠超於發出的面邀數漲幅,這也就不難解釋為何 2017 年演算法求職者收到的面邀數量顯著下降了。

640?wx_fmt=jpeg

那麼,2017 年市場上的演算法求職者究竟經歷了什麼?

匹配率低帶來的演算法崗求職之苦

通過對 2017 年演算法崗位的總體觀察來看,求職匹配率低是導致在供需都增長的情況下,平均面邀數顯著下降的主要原因。

從公司角度上看,很多沒有進行資料積累或者沒有大資料分析基礎的公司盲目的想要跟上 AI 的熱潮,以為貼上 AI 的牌,就算站上了人工智慧的風口。這些公司盲目地設定演算法崗位的 HC,更有甚者花高薪聘請 1-2 名學術背景優秀的博士生,寄希望於 1-2 個演算法工程師解決整個資料問題。

通常這種情況帶來的結果都十分悲劇。公司一方面忽略了自己現階段沒有適合進行大資料分析的土壤,另一方面又過於「神化」一個高薪博士能夠帶來的工作成果:希望他能夠快速、完美地完成既定目標。在被高薪聘請的演算法工程師還停留在資料清洗、與原有的技術部門進行所需資料的結構改造時,這些公司就已沒有耐心(或者沒有足夠的經濟成本)繼續培養這個高薪工程師,最後只好公司自己嚥下盲目招人的苦果。

除了公司角度外,求職者的盲目、無規劃跳槽則是影響求職匹配率的另外一個主要影響因素。

我們首先需要明確一個前提:與其他技術崗位相比,演算法崗有明確的門檻。

相對於其他的技術崗位,比如十分熱門的 Java、前端工程師,演算法工程師對於求職者背景的要求顯然高出許多。100offer 在「如何快速成長為一名出色的演算法工程師?」一文中抓取了平臺上標記為演算法崗位的 JD,其中讓人註明的關鍵詞包括:數學、碩士、論文。這些關鍵詞側面反映出演算法崗位相對於其他的技術崗位而言,對於求職者提出了更高的學術背景要求。

640?wx_fmt=jpeg

除了學術背景的要求之外,演算法工程師的第二道門檻就是理論聯絡實際:應用的門檻。如果你很會推導公式,在訓練模型上很有經驗,但是求職者如果缺少將理論與實際業務相結合的能力,那麼市場能夠給你的機會也不多。

在市場上,與演算法崗位的招聘需求不匹配的求職者主要有三種:

1. 缺乏相關經驗的求職者

這裡的背景包括兩類:工作背景和學術背景。

在 100offer 上想要轉型為演算法工程師的人數不少,某知名 985 學校計算機專業科班出身的餘周就是其中一名 Java 工程師。在餘周的工作背景中,大部分都是面向物件程式設計的工作經驗,即使有一個和預測資料類相關的小專案,但這個專案顯然無法替他敲開演算法崗位的門。

在 100offer 平臺上,餘周在以演算法工程師為求職目標時,沒有收到任何面邀。

640?wx_fmt=jpeg

(餘周在 100offer 上的具體求職情況)

和餘週一樣,自以為有相關經驗的轉崗求職者在平臺上並不少見,市場給予他們的反饋也十分直白:不適合。

2. 即使有經驗,但是過於理論的求職者

和餘周不同的是,擁有紮實模型推理基礎和相關工作經驗的張楠,踩了理論無法與實際相結合的坑。

知名理工科院校計算數學背景出生的張楠,從某一硬體公司研究院的演算法崗位出來後,在 100offer 平臺上收到了 7 個面邀。他成功通過某一知名網際網路公司的面試。面試時,公司對他出色的數學推導能力表示認可,並開出了漲幅超過 50% 的年薪。入職 1 個月後張楠就被 HR 約談,公司決定解僱他。給出的理由就是過於理論,短期(半年)內無法落地。

640?wx_fmt=jpeg

(張楠在 100offer 上的具體求職情況)

面對這樣一個情況,擁有搭建演算法團隊經驗的面試官許至一說出了中間出現不匹配情況的原因:「很多公司研究院做的東西,比如模擬這種,可能一個模型訓練下來,(理論上)的確能夠實現,在他們的 KPI 評價體系中也是達標的。但是這種實現都是對實現環境有非常嚴格要求的,這種理論上的實現和工業體系(實際業務)中差別還是非常巨大的。有些在工業體系中就是實現不了,並不是說他們錯了,而是他們難以落地。」

即使有良好的數理背景,但沒有邁過業務落地的檻,最終導致求職失敗。張楠 2017 年的求職路給了想要從事演算法工程師工作的候選人另一個警鐘。

除了餘周和張楠這樣的求職者,100offer 上還有更加令人惋惜的另外一種「演算法求職失敗」,即細分領域內的不匹配。

3. 演算法崗細分領域內轉崗的求職者

某知名 985 學校畢業的博士生謝霖,在影象演算法領域有很深的研究。11 月來 100offer 平臺上進行求職,拿到了某知名網際網路公司廣告演算法 offer。看重公司的平臺,並且公司表示他可以單獨負責一個新的方向,謝霖決定轉崗廣告演算法。

但入職之後,謝霖發現他了解的演算法技能並不能很好地被應用到現有的崗位上,經過深思熟慮之後,他還是放棄了這個機會,重新到市場上進行求職。

640?wx_fmt=jpeg

(謝霖在 100offer 上的具體求職情況)

「雖然說底層的演算法核心是一樣的,但是他們在實際應用中,包括業務領域、處理的問題、需要的技巧方面的差異還是特別大」許至一如此解釋這種求職不匹配。演算法內部轉崗可能意味著前期技術積累直接的浪費,這樣一種不匹配求職十分可惜。

上面三種情況就是 2017 年演算法崗位求職現狀的一種折射,不適合、不匹配成為演算法崗位社會招聘中最高頻出現的兩個詞。

前些年被「培訓班速成」就能取得高薪崗位「衝昏頭腦」的求職者,在演算法崗上吃了個閉門羹。公司進行社會招聘的目的就是尋找合適崗位的人才,以前會出的現不那麼匹配的人也能求職成功的「特例」,在演算法崗上並不能直接複製。

為什麼不能複製,想要轉崗演算法的求職者要怎樣才能滿足市場的要求呢?

提升崗位匹配率,需要 match 這些能力

在弄清楚如何滿足市場對演算法工程師提出的要求之前,我們需要先明白,演算法工程師究竟需要做什麼。

1. 演算法工程師究竟要做什麼?

演算法工程師主要根據業務進行細分,常見的有廣告演算法工程師、推薦演算法工程師、影象演算法工程師等等。雖然不同的業務場景會提出更多細分的要求,但抽象來看,演算法工程師的絕大部分工作內容都在和模型打交道。

這些工作根據細分業務領域的不同會略有差別,以下是 100offer 上有演算法工作經驗的候選人進行求職時寫在簡歷上的典型工作內容:

(1)與軟體工程師協作,對 XXX 版中的 XXXX 和 XXXX 進行優化和改進,對公司使用者的儲存資料進行採集,取樣和模擬,比較不同的演算法在不同資料模式下進行動態儲存分配的的效能。
(2)利用神經網路模型對使用者資料進性建模,訓練和分類,儲存獲得的模型引數和權重,將獲得的模型轉化成預測模型標記語言。
(3)利用機器學習模型和基於規則模型對 XXXX 的所有商品進行危險品檢測,將模型部署用於線上實時分類以及離線批處理分類。
(4)主持人群分類與精準投放、廣告效果歸因分析、商品零售銷量預測、基於匿名資料的跨屏使用者打通、同源樣本庫等專案的研究與開發。

2. 演算法工程師需要滿足的 4 項基本要求

瞭解了演算法工程師的具體工作之後,我們才能從看似千篇一律的 JD 上,進一步分解出市場對演算法工程師提出的具體要求:

(1)經驗背景

在前面的分析中,我們提到了演算法工程師的絕大部分工作是與模型打交道,即使是偏工程的演算法工程師,其實也需要跟很多工具、模型打交道。因此,對於演算法工程師而言,擁有一定的學術背景是公司考察的重點之一。這個考察點通常會被具體為以下幾點放在 JD 中。

a. 關注機器學習領域的最新進展,對深度學習、概率圖模型有研究者優先;
b. 紮實的數學和電腦科學功底,對資料結構和演算法有較為深刻理解;
c. 本科以上學歷,紮實自然語言處理、機器學習、資料探勘理論和技術基礎;
d. 能夠閱讀英文技術文件和論文,具有良好的自學能力;
e. 在頂級會議、期刊上發表過論文者優先;

從上述要求中,我們可以總結出以下三點背景考察因素:相關領域經驗、數理基礎、英文論文閱讀。「招聘企業肯定優先想要考慮那些有直接工作背景的,但是這種人才在市場上通常都比較少,所以他們會退而求其次,考察他們的學術背景。」100offer 的人才顧問 tata 闡述了企業在招聘時看經驗背景的權重,「如果兩方面都能夠 match 上,那就非常匹配了」。

在 100offer 平臺上看機會的宋寧宇就是這麼一個兩方面都能 match 上的人。30 歲剛出頭的宋寧宇的上一家公司為某知名軟體公司外企,他從 15 年起就開始在實際業務中使用機器學習框架。除了有使用機器學習框架的背景外,他還有良好的學歷背景:全國 top3 院校,EE 專業畢業生。

他最後以近 50% 的薪酬漲幅入職某知名網際網路公司的廣告演算法崗位。「這個崗位在我們平臺上鮮有人能應聘成功,宋寧宇除了優秀的學歷背景外,有演算法框架的實踐經歷也給他加了不少分」。宋寧宇的人才顧問 Summer 如此評價這位求職十分順利的候選人。

640?wx_fmt=jpeg

(宋寧宇在 100offer 上的具體求職情況)

(2)程式設計能力

演算法工程師的工程素養其實就是一個程式設計師的基本素養。這也是大部分非 AI 範疇公司招聘演算法工程師的基本要求之一:

a.至少精通一門程式語言(Java,Python,Golang) Java優先, 熟悉常用的資料結構、演算法等,掌握軟體工程、敏捷開發模型,熟練掌握和應用各種設計模式;
b.有海量訪問系統的開發經驗,對高可用、高併發、易擴充套件有結合實際的理解

畢竟在市場上,大部分還是和業務相結合的演算法工程師,這樣的程式設計能力需求是基本中的基本。從 Python 後臺開發成功轉崗的候選人霍炬就是這樣成功轉型的。霍炬在前一家公司主要從事 Python 後臺開發的工作,再加上他曾在公司進行過一個小的推薦演算法專案的實踐,最後成功轉崗進入某家技術棧為 Python 的知名獨角獸公司。

640?wx_fmt=jpeg

(霍炬在 100offer 上的具體求職情況)

「雖然在具體的業務實操過程中,負責演算法的和負責工程的工程師的工作還是有很大區別,但是現階段大部分公司並沒有把兩者的區分做的如此涇渭分明」一家 B 輪獨角獸企業的廣告演算法 Leader 如此解釋演算法工程師中對於工程能力的需求。

霍炬進入這家公司後,也成為工程+演算法兼修的綜合型演算法工程師,「我們公司沒有完全分開」,談及他能成功轉型的原因,霍炬認為「一開始我找演算法的崗位並不是十分順利,本來都打算自己回去刷刷題再戰的,但是正好這家公司的技術棧和我擅長的 Python 相吻合,我就十分幸運地加入了」。

(3)業務理解能力

對於演算法工程師而言,業務的理解是能夠產生結果的充分且必要條件,畢竟你工作的主要目的是把具體問題抽象成數學模型進行解決,然後將模型應用在業務上。

演算法工程師的工作不僅僅停留在訓練模型層面,還需要把你的模型與實際工作相結合。如果沒有好的業務理解,一個你認為找到了一個很棒的變數,其實是你的理解錯誤。這些要求在 JD 上通常被這樣婉轉地表達出來:

a. 具備業務抽象和資訊建模能力,能夠將複雜的業務場景分解、抽象成標準化的業務模型;
b. 對於把大資料和人工智慧分析的結果能夠應用到實際業務場景產生商業價值具有強烈的熱情

這些業務理解能力的另外一種表達方式就是對已有資料的敏感性。對資料的敏感主要表現在:瞭解資料的業務涵義、能夠把資料進行準確的應用。

錢行就是這樣一個候選人,長達 8 年的某資料營銷公司的工作經驗,已經是公司演算法總監的他手握 2 項國家授權專利。通過紮實的技術沉澱,錢行總共收到 13 封面試邀請,最後斬獲多個面邀,經權衡後,錢行理智選擇了更加符合自己工作經驗和北京的廣告演算法領域,以 60 萬年薪(僅為月工資*月份,不含獎金和期權等)加入某知名網際網路公司。

640?wx_fmt=jpeg

(錢行在 100offer 上的具體求職情況)

(4)創新能力

對於演算法工程師的創新能力的考察背後隱含的是對其未來發展潛力的一種考察。無論是從調參工程師還是合格的演算法工程師的角度來看,模型應用從最初的調參,到模型優化,再到端到端解決問題,中間都需要有能夠在業務基礎上進行模型創新的候選人。

在知道了市場究竟需要怎樣的演算法工程師之後,想要轉崗跳槽的你,可以先看看自己是否有能夠證明以上能力的資本。無論是工作經驗十分匹配的宋寧宇、正好碰到同樣技術棧的霍炬,還是資深演算法工程師錢行也好,他們的經驗都告訴我們,合適和匹配是能夠進行完美跳槽的第一步。

總結

在進行演算法崗位盤點時,我們會發現這種人人都想做演算法的「狂熱場景」曾經反覆上演:移動端工程師、大資料科學家這樣的崗位也曾經藉著行業領域的東風火過一陣。有人說,風水輪流轉,也該到演算法工程師了。但從實際的情況上看,2017 年的演算法市場更像是候選人的「一廂情願」。

相對於候選人的「不理智」,需求方反而冷靜許多。就像我們分析的,演算法工程師天然的技術門檻導致這並不是快速學習就能直接進入的技術崗位。但是,有技術門檻恰恰是給了各位想要培養演算法素養的工程師一條明確的途徑。

畢竟並不是只有成為演算法工程師才能完成趕上這個技術浪潮,其實大部分的工程師崗位也需要一定的演算法素養。在盲目跳槽之前,不如先看看目標,評估一下自己的水平,再規劃怎麼上路吧。

*為保護候選人隱私,文章中出現的所有人名皆為化名

招聘

新一年,AI科技大本營的目標更加明確,有更多的想法需要落地,不過目前對於營長來說是“現實跟不上靈魂的腳步”,因為缺人~~

所以,AI科技大本營要壯大隊伍了,現招聘AI記者和資深編譯,有意者請將簡歷投至:[email protected],期待你的加入!

如果你暫時不能加入營長的隊伍,也歡迎與營長分享你的精彩文章,投稿郵箱:[email protected]

AI科技大本營讀者群(計算機視覺、NLP、Python、晶片、AI+金融方向)正在招募中,後臺回覆:讀者群,聯絡營長,新增營長請備註姓名,研究方向。

640?wx_fmt=gif

640?wx_fmt=png

640?wx_fmt=png

640?wx_fmt=jpeg

☟☟☟點選 | 閱讀原文 | 檢視更多精彩內容