真的,三十多歲就別轉行做演算法了
大家好,今天和大家聊聊轉行的事情。
首先宣告,今天這篇是一篇勸退文,想要勸一勸那些不是非常合適,或者說沒有想清楚的同學。我倒不是站著說話不腰疼,而是真的覺得外界對於我們這行的看法可能有一點問題,或者說有一些誤解和不瞭解的地方。不想有同學付出了很多努力之後,一場空或者是之後再來後悔。
一些誤解
首先和大家聊聊一些誤解吧,一些和大家想象當中可能不太一樣的東西。
演算法不等於人工智慧
人工智慧這個詞最近火得很厲害,不管什麼大小公司都號稱自己是人工智慧企業,各種牛X的技術吹得震天響。什麼千人千面,什麼自動識別、自動駕駛什麼的,很多企業把之前大資料時代吹的牛改一改名字就再次拿出來用了。
我之前總是持一個觀點就是現在的人工智慧都是偽智慧,演算法並沒有自我意識,它一樣是完全按照程式的設定而執行。只是這個執行的過程非常複雜,以至於人們通過執行的結果無法直接得知它中間的執行步驟。很多人抬槓我說按照圖靈測試的定義,這些依然叫做智慧。我們先把這個爭論擱置,即使這些演算法的確是智慧,那麼能稱得上人工智慧的技術以及能稱得上人工智慧的企業也不多。
像是什麼做人臉識別的,做語音識別的,這些技術和企業都不能完全算是人工智慧企業。因為語音識別和人臉識別就是特定的演算法,也不存在什麼和人互動一說。像是我們在大公司裡做推薦、搜尋、廣告以及NLP的工程師就更不算是人工智慧了,頂多算是智慧一些的演算法。既不存在和使用者的互動,我們也不是衝著智慧這個方向去的,一切都是為了業務指標。
技術驅動是偽命題
我之前在的公司就是成天號稱自己是技術驅動、資料驅動。但不客氣地說,這個詞在中國幾乎是一個偽命題。因為技術驅動很難,並且也不掙錢。
即使是著名的達摩院這樣的機構,也要承擔著盈利的壓力,連阿里旗下的研究機構都是如此,其他的機構更是可想而知。現在的所謂人工智慧以及各種智慧演算法的技術,很難落地,也就是說很難找到應用場景。找不到應用場景,這個技術再牛,也沒有用,因為對於公司和企業來說,它的使命是掙錢,而不是推動社會或者是技術發展,這些只是掙錢的同時帶來的效果。
像是人臉識別、影象識別或者是其他一些演算法,它們有什麼特別能賺錢的應用場景嗎?不能說沒有,只能說以目前的技術能達到的效果而言,不多。
舉個例子,比如什麼AI看病,AI診斷。機器能達到的準確率真的能超過醫生嗎?以目前的演算法的能力來說,置信度沒辦法達到非常高,準確率能有95%就算是絕頂的效果了。但對於醫生來說5%的誤診率是一件很可怕的事情,這意味著多少醫療事故啊。退一萬步說,即使AI達到了很高的水平,病人能相信AI的判斷嗎?我想大部分人肯定還是覺得有專業的醫生來判斷更踏實。何況醫療領域的資料非常私密,一般的醫院也是不可能願意拿出來和企業進行分享的,所以這也是當下網際網路醫療一直沒有大動作的原因。
工作內容並不有趣高階
說起來做演算法的或者是做人工智慧的,是不是覺得工作場景很高大上,每天都鑽研最新的技術,閱讀最新的論文,談笑有鴻儒,往來無白丁?
現實可能是每天都是資料、資料、資料,指標、指標、指標。
前面說了,幾乎所有的技術都是為了業務服務的,如果不能帶來業務上的價值,那麼這個部門被裁撤的日子也就不遠了。既然如此,那麼我們用演算法做演算法,目的也都是為了帶動業務的增長,也就是業務指標的提升。那麼我們要做的就是想盡辦法帶來提升。想要提升,就得有好模型,想要有好模型離不開好資料。
不要迷信各種論文、金鑰匙,只有資料才是核心。資料決定了效果的上限,模型不過是逼近這個上限罷了。資料一團糟用什麼模型也不會有用。既然如此,那麼我們每天要做的就是和各種枯燥的數字打交道,大量的時間花在了分析資料、清洗資料以及製作資料上。除此之外可能還有一些其他的髒活累活,並不比一般的開發輕鬆。
另外,對於開發而言,他們所作的事情是看得見摸得著,結果可以預期的。我做了一個功能,如果沒有bug,它就是這個功能。但演算法不一樣,我們所有的工作都基於我們的推論之上,我們覺得這個模型或者是這份特徵可能有用,但是實際情況無從預見。很有可能花了很多精力到頭來一場空,所以壓力並不小某種程度上反而更大。
職場現狀
說起來現在演算法崗位的情況,大家最容易想到的一個詞就是卷。
雖然我個人的確很不喜歡內卷這個詞,總覺得它被濫用了,但不得不承認這一行競爭壓力的確不小。先說說校招的情況,如果是校招生,沒有不錯的學歷背景以及比較優秀的論文,並且在這個領域內的基本功也算紮實的話,想要進入大公司是非常困難的。
因為現在躋身這行的人太多了,並且說實話在演算法領域想要發一篇論文難度並不大。別的不說,就光我讀過的沒什麼營養東拼西湊的水貨論文就不少,有些還是著名學校或者是研究機構出的,其他差一些的學校的情況就更可想而知了。而且現在海歸也很多,從前這些人當中大部分人都選擇了移民,但目前由於疫情以及國內發展的關係,越來越多的人會選擇回國,這就導致了競爭變得非常激烈,有點金融那味了。
良莠不齊帶來的結果就是企業會提升對簡歷的要求,比如學歷不好的直接篩掉,比如沒有不錯論文的也篩掉。這樣當然會錯失很多人才,但可以節約大量閱讀簡歷以及面試的時間成本。這也是當下招聘要求水漲船高的原因。
如果是社招的話,企業一般都會希望候選人有過相關的工作經驗,即使是大公司願意招收一些高潛力但是經驗薄弱的候選人。但是前提要求也是學歷以及背景出色,基礎紮實,並且高潛。
高潛這個詞我簡單翻譯一下大概就是性格做事穩重踏實,學習能力強,知道自己要什麼並能夠不斷付出努力,以及年輕。是的,年紀大了基本上就和高潛這個詞無緣了。這也是我想要勸退那些30+想要轉行從業的人的原因,世上不如意的事情很多,沒有必要一一勉強。
人群分析
我觀察了一下,對我認識的同事進行了一個簡單的分析,大家可以參考借鑑一下。
在我的同事當中,90%以上學歷出色。在新加坡就不用說了,新加坡國立和南洋理工的碩士居多,除了這兩所還有一些其他海外的名校。以前在阿里也是一樣,90%都是知名985碩士,至少至少也是知名211的碩士。反推過來,如果碩士畢業於知名985或者是知名211,那麼可以推出他們的本科至少也是雙一流或者是還不錯的本科。
我是本科的重大,從學歷上來看基本上是這個行業當中的守門員。幾乎沒有見過學歷比我還弱的,所以如果你們最近一份學歷比重大還要弱很多的話,建議謹慎。
以論文來說的話,因為國內的碩士基本上都會有論文要求,所以企業可以根據簡歷上的論文的水平來參考這個人的能力。除非你是國外的碩士,因為國外的很多課程碩士是不發論文的,所以論文這一項也不太好說。但有的話一定是一個加分項,沒有的話有可能會扣分,尤其是國內的碩士。至少我認識的兩個不錯的新人都有質量不錯的論文,所以我判斷應該論文的分量還是挺重的。
從演算法競賽經歷來說的話,有ACM背景的其實並不多,可能10%不到。所以這塊的確是一個不錯的加分項,實際上我本科期間的ACM隊友現在從事演算法方向的的確不少,有不少和我一樣,沒有繼續讀研。從目前的行情來看,的確也有不可企業越來越看重演算法競賽,比如頭條、第四正規化等等,所以如果你才剛剛大一的話,我還是很推薦去嘗試一下acm競賽的。
所以我們簡單總結一下,第一梯隊應該是本科有過acm獲獎經歷,碩士申請到了不錯的學校,並且在學校當中有不錯表現以及論文的同學。不過這些人也不多,全國一年acm銀獎以上也就一千人左右,加上折損淘汰率,可能算下來全國也就幾百人,非常非常少。第二梯隊是名校學歷+優秀論文,這種組合也很難得,我估計在從業者中最多也就30%。第三梯隊是有競賽獲獎經歷/大廠實習經歷的優秀本科生以及學歷偏弱有不錯論文或者是論文偏弱學歷不錯的碩士,這群人構成了演算法從業者的大頭,中堅力量。但第三梯隊的人數最多,競爭應該也是最大的,大家情況差不多的時候基本上就完全看個人能力了。
如果你現在的情況距離第三梯隊還很遠的話,我基本上也是持勸退態度。
一些建議
雖然這篇說是勸退文,但我知道很多人還是不會聽的,尤其是年輕人往往叛逆,我也理解。所以對於那些不聽勸的,我也準備了一些建議。
無論是轉行的,還是即將畢業但是積累不多的,想要入行都是不容易的,一定是需要付出巨大努力的,這個心理準備一定要有。沒有任何一種辦法,或者是任何一個培訓班,可以讓你在不努力的情況下達成這一效果。
所以剩下的問題就是怎麼努力,往哪裡努力。
打好基礎
我給出的建議是打好基礎+做出亮點,演算法行業的基礎無非是演算法+資料結構+機器學習+深度學習。這幾塊每一塊都不小,想要從零開始啃下來非常不容易。這也是為什麼acm出身的同學有優勢的原因,因為他們已經熟練掌握了演算法和資料結構,不僅負擔更小,並且對於繼續學習後續的機器學習以及深度學習也有幫助。
我個人的建議是大量刷題快速學習,大部分人學演算法和資料結構都是為了應付面試。既然如此,那不如索性不用學了,直接上手刷題,在刷題的過程當中學。把學習的時間省下來把LeetCode前300題刷個4遍,把裡面涉及到的所有演算法都學會練熟悉。這些都是機械操作,考驗的就是毅力和苦功,沒什麼太多的技術含量,國外的留學生找工作也都是這麼過來的。
機器學習和深度學習難點在於剛入門的時候,剛入門的時候什麼都不懂,什麼概念都是新鮮的,尤其是還會涉及很多公式推導。但實際上公式推導只涉及簡單的線性代數以及矩陣運算,只是看著唬人。機器學習和深度學習裡面具體的技術點也並不多,尤其是深度學習大部分都是圍繞神經網路展開的各種奇淫技巧。主要難熬的是剛入門的前幾個月,挺過去會好很多。
最後說說做出亮點,說到亮點很多人會想到kaggle或者是其他的一些比賽。我個人覺得這些比賽參加一兩場熟悉一下,理解一下演算法是怎麼運作的就可以了,沒有必要非要做出成績來。因為kaggle這類比賽用到的技術以及能力和實際工作當中還是有很大差別的,並且現在這些比賽也卷得厲害。裡面卷著的基本上都是一些小型的人工智慧企業,他們僱一些全職的員工來刷比賽,用這些比賽的名次來證明公司的能力。所以想要單槍匹馬贏過這些公司非常不容易,也需要花費大量的時間,所以我個人不是很推薦。
讀論文
我覺得比較好的辦法還是從論文下手,把相關業內的論文讀一讀,積累一點造詣。
對於剛入行的同學來說上來就讀paper是一件比較痛苦的事情,第一個難點是不知道要讀什麼,paper這麼多,每一篇都讀過來顯然沒有精力,也沒有這個必要。好在現在網際網路非常發達,我們在網上找一找大牛的部落格和指引,可以找到一堆reading list。第二個難點是本身的閱讀難度,畢竟是全英文,再加上又有各種公式,剛開始會比較痛苦這個是肯定的。我個人建議是先硬啃幾篇下來,然後記錄一下讀不懂的地方,再去找一找網上中文的部落格和解析來做一個對比。十來篇論文看下來,你會發現這件事情會一下子變得沒有那麼難了。
這裡要注意,我們讀論文是要摸清楚在這個領域當中的套路,而不是死板地記錄論文當中的方法或者是技術。到後來當你找到自己的方法論之後,你會發現讀論文變得非常快。看個摘要,再看個圖例,讀一些描述基本上就差不多了。到這個地步,從理論上來說已經是專家了,可能實踐上還需要積累一些經驗,但至少應付面試找份工作問題就不大了。
一點感受
人人都說演算法好,人工智慧強,其實真的也就那麼回事,依然是辛苦忙碌的打工人,和其他普通程式設計師並沒有什麼高下之分。
即使現實一些從收入上來看,也並沒有比前端、後端、客戶端那些純開發的程式設計師多。而且這個行當也不是所有人都合適,除了需要保持持續學習之外,還需要涉獵很廣,除了演算法本身對於後端、大資料、分散式、系統設計都需要有所瞭解和涉獵,難度和壓力都不小。所以如果已經在網際網路行業當中做上程式設計師了,真沒多大必要非要換方向,有點吃力不討好。能輕鬆一點,何必卷著呢,對吧。
好了,今天的文章就到這裡,感謝大家的閱讀,喜歡的話給個三連吧~
- EOF -
伯樂線上
分享IT網際網路職場和精選乾貨文章(原域名已不再維護)。組織 維護10萬+star的開源技術資源庫,包括:Python, Java, C/C++, Go, JS, CSS, Node.js, PHP, .NET 等
![](http://mdimg.wxwenku.com/getimg/ccdf080c7af7e8a10e9b88444af98393d7206f474ec33ce361c2447b71f31205f2a43c136dd62328fa4a8e557c85a2a7.jpg)
關注後獲取
回覆 資源 獲取10萬+star開源資源