大家好,今天和大家聊聊算法工程師的基本條件。
之前寫過一篇轉行勸退文,反響很大,但很多同學在表示感同身受之餘也表示自己不願意輕易放棄,還是想要放手一搏。是以今天我就站在一個過來人老法師的立場上和大家談談算法工程師究竟有什麼軟的、硬的門檻。大家可以對比着看看自己,究竟符不符合要求,又該如何努力。
是敲門磚不是學曆
說到學曆,大家普遍的反應都是現在網際網路行業整體都非常卷,算法尤其。基本上大廠非985、海外名校不要,如果學校普通很難找到很好的工作。
站在學生的立場上肯定義憤填膺,覺得自己被剝奪了潛在的機會,産生不滿的情緒,這些都可以了解。但是如果你站在面試官的立場上你馬上就會得出完全相反的結論,我們來設想一下,你一天的工作量本來已經很飽和了,但還要抽出大量時間來完成面試。結果你面的10份履歷裡面有9個完全不能看,但是出于職業素養以及面試禮儀,你必須要聊完一個小時或者是一個半小時,你會是什麼心态?是不是很抓狂,很多人真遇到了估計肯定要投訴hr了,難道不會篩選一下嗎?什麼樣的人都來給我面?我的時間不是時間嗎?
這些就是我目前看到的很多面試官的真實反映,這就是目前面試的現狀。絕大多數人的能力和面試表現都是和履歷上寫出來的東西挂鈎的,如果你的履歷上找不出什麼亮點估計你的面試也不會有什麼水花。而對于很多學生而言,學曆是很重要的一個亮點,是以如果學曆不太好的話,直接就掐滅了一半的火花。
那是不是沒有學曆一定不行呢?
其實也不盡然,如果我們去網上搜可以找到一大堆反例來證明這個觀點不是正确的。我個人的看法是把你的履歷當成敲門磚,磚頭本身好不好并不重要,重要的是它能不能敲開門。如果你的磚頭本身比較脆,不結實,那你就需要多找點額外的材料修補修補,有些人的磚頭本身很過硬,可能不需要太多的修補也能把門敲開。現在的确海歸很多,名校出身的人也不少,顯得競争壓力很大。千萬不要被這種現象迷惑了,擁有名校背景的人10個裡面也一樣有8個不太行,優秀的一樣是少數。如果你同樣優秀,那隻有名校學曆的人在你面前一樣是渣渣。
千萬不要覺得我能力很強但是學曆不好會被限制,規矩是死的,人是活的,相比于硬性要求,我更相信特殊管道。因為學過算法的都知道,無論什麼樣的規則都一定無法覆寫所有的case,是以最後一定還是會有人為操作的空間的,換句話說一定會有牛人可以突破限制的。
是以在學曆這件事情上大家不妨放平心态,因為沒能力的人即使有學曆,也大機率無法通過面試,即使他真的通過面試了,也不一定能在大廠站穩腳跟有所發展。而真正有能力的人,也是不會被一個offer限制住的,即使真的沒能進得了大廠,也一樣有大把的機會等着你。
我爸從小就跟我說,人一定不要把自己看輕了,要相信:此處不留爺,自有留爺處,處處不留爺,爺去投八路。
基本要求
接着再來聊聊一些基本的要求,我簡單總結一下,對于一個純小白的工程師大概是四個方面的要求:模型、資料、場景、工程素養。
說起來隻有四點,但這四點當中每一點拆開說都可以講上幾堂課。先說說模型吧,模型可以分為兩類,一種是應付面試的機器學習基礎模型,也是現在工業界基本上用不到的模型。比如什麼GBDT、随機森林、決策樹、SVM等等,這些模型主要就是在面試的時候會問到。看看你有沒有紮實地學過機器學習,對機器學習的基礎掌握得有多少。這部分基本上系統地學過一次,實際用過就可以了,剩下的可以等到面試之前再來複習。第二部分則是對應的領域必須會用到的模型,比如說如果是推薦領域,那麼FM、DIN這類必不可少,如果是CV呢,那麼各種CNN也是必須的,如果是NLP,顯然離不開LSTM、RNN。
說完了模型再來說說資料,資料也是要區分領域的,對于推薦場景和CV場景的資料顯然是大相徑庭的。以我熟悉的推薦場景舉例,推薦場景下的特征可以分為哪些部分?這些部分的特征分别都是如何設計的?這些資料有哪些特點?這些資料又是如何産生的,它的資料源、資料鍊路是怎樣的?比如你知道使用者特征需要根據時效分成實時特征以及曆史特征嗎?這麼劃分的依據是什麼?這些資料又是如何喂到模型裡的?
第三點是場景,也可以了解成業務,比如推薦、搜尋、廣告,這些領域看似都是預測使用者和item之間的CTR,但是它們之間的技術都一樣嗎?目的一樣嗎?再比如推薦也有很多不同的場景,首頁的推薦、店鋪下的推薦、商品詳情頁下的推薦,這些不同場景下的推薦邏輯一樣嗎?使用者端的意圖是一樣的嗎?最重要的一點是這一層面的了解不是獨立的,需要結合資料、模型一起來分析。在這樣的場景下,在這樣的資料情況下,我們需要如何設計特征和模型來提升效果呢?寫幾個特征、訓練一下模型是簡單的大部分人都會,但是基于場景結合資料、模型深度思考,推導出完整的提升邏輯則要困難得多。
最後一點是工程素養,算法工程師也是程式員,也必須要會寫代碼,也需要會用git、shell、linux等各種系統和工具,也需要了解基礎的網絡、作業系統的知識,也需要結合實際問題靈活變通思考解決方案。這些技能整合在一起,統稱為工程師的素養。也就是面試環節當中的做題部分,其實考察的就是候選人的思維能力以及基本的素養。
軟實力
前面說的一大通都是硬實力,硬實力很關鍵,但軟實力同樣非常重要,而且非常容易被人忽視。
那軟實力有哪些呢?
我也簡單總結列舉了一下,第一個是問題的分析和解決能力。在實際工作當中很多問題是之前無法預料的,可能誰也沒見過,這個時候需要我們完全基于實際原創一套解決方案。想要做到這一點,首先需要有一個完整的方法論,如何分析問題,從幾個方面入手,如何嘗試尋找解法,最後如何解決,解決了之後如何評定效果。很多人一直到問題解決都很擅長,但是到了最後評定效果的時候沒有這個意識。在工作當中,我們要付出努力,也有拿到回報。
第二個是學習能力,對于算法工程師而言,我們的工作内容以及工作目标以及用到的技術非但不是一成不變,反而是變化很快的。新的模型,新的方法,新的政策層出不窮,隻會閉門造成肯定是不行的,我們需要有強大的學習能力以及學習意識。需要看得懂最新的論文,撸得出最新的模型,能夠進行嚴謹的實驗和分析。别的不談,單就說閱讀純英文論文的能力,就不是人人都有的。
最後是溝通交流的能力,在工作當中我們一定不是孤軍奮戰,總需要與人合作交流互通有無。能否get到别人在表達什麼,能否有同理心了解别人的困難,能否正确順利地表達自己的想法,讓對方清晰地get到你。不僅如此,我們還需要和老闆彙報,和外界宣講,以及找各方合作,這些都需要強大的交流溝通能力。有的時候我們還需要說服各方或者是老闆,讓他們願意為了我們服務,伴随着我們職業發展,以及層級的提升,這一塊的能力會越來越重要。
尾聲
寫到這裡,我自己回顧一下文章的内容也會有些感歎,這些條件看起來每一個都不甚苛刻,但是如果要彙聚在同一個人身上則太難太難了。但轉頭想想,其實也不僅是算法如此,每一行都是這樣,往上走的路總是崎岖艱難的,越優秀的人本來也就是擁有更多美好品質的人。
雖然要求不低,但是最起碼路徑是清晰的,至少我們知道需要往哪個方向努力。是以也就沒有必要多說了,開始行動努力起來吧!
好了,今天的文章就到這裡,感謝閱讀,喜歡的話不要忘了三連。