算法工程师也会遇到 35 岁这道坎么?
導讀:這個問題其實對于大多數程序員都是適用的,國內的互聯網公司,始終奮斗在一線寫代碼、跑算法模型的工程師實在是太少了。每年的高校畢業生,持續不斷地在為這個行業輸入更年輕更新鮮的血液,對比 25 歲剛入職更會加班更能吃苦,關鍵是薪資更便宜的年輕人,35 歲的算法工程師如果只是工齡更長資歷更老,將全方位處于劣勢。
想要跨過這道坎,要做的就是努力提升自己的相對不可替代性,從初級漸漸往高級的方向走,個人覺得大體可以分 3 個階段:
01 初級算法工程師
——關鍵詞:高效執行機器——
算法入行的必經之路,所謂的 SQL Boy、調參俠、數據搬運工、煉丹師,都發生在這個階段。
這個階段的算法工程師,很多時候都是在和數據打交道。數據漏報、數據重復上報、埋點有誤、多方數據統計口徑無法對齊、反作弊口徑定義和對齊、異常數據檢測和排查、數據缺失處理、樣本清洗、特征統計加工、線上指標下降問題排查、bad case 歸因分析、數據標注…聽起來是不是一點都不 fancy?對于一個負責業務落地的一線算法工程師來說,這些數據工作可能占了日常工作的很大一部分時間。
可就是這些一開始被你看不起的各種所謂 dirty job,這些你在實驗室和學校接觸不到的工業數據實踐,這些在 paper、書本和網絡永遠不會教你的工作,正是你所累積的技術經驗和寶貴的財富,它是驅動你往下一層級改造的主動力。作為一個算法工程師,如果從沒有在底層有過基礎的開發和數據分析的從業經驗,將來站在更高層的時候很難作出對團隊方向有利的決策。數據決定了模型的上界,特征和算法只是在逼近這個上界。
不了解你的業務數據特點,很難成為一個好的算法工程師。在業務實踐中培養鍛煉數據 sense,是一個初級算法工程師的必修課之一。
這個階段的算法工程師,一般面臨的業務問題也比較明確,比如提升召回效果、提升線上 ctr / cvr / gmv / 時長、提升搜索相關性、降低 bad case 率等等。這些明確的業務問題背后,在業界包括團隊內一般都有比較明確的技術方向,相對應的就是一些比較明確的算法問題,比如信息流的 ctr 預估、用戶興趣建模、廣告出價預估、相關性模型、物品召回、圖文標簽生成等。
這些不同的算法方向根據團隊形態不同,往往會分的更加明細,比如召回方向的可能會有專門的團隊,落到每個人頭上就是負責其中一種召回策略:用戶標簽召回、行為序列召回、主題召回、雙塔模型召回等。做排序模型的有專門的團隊,可能是每個場景有專門的人負責,例如首頁 / 頻道頁 / 分類頁 / 熱門頁 / 子頻道頁等;也可能是每個方向的模型是專門的人負責,比如 ctr 模型、gmv 模型、時長模型等。機制策略也可能有專門的團隊,每個人負責不同的策略方向。
具體業務和技術形態怎么分工,不需要初級算法工程師操心,那是更高層的算法工程師需要規劃和操心的事。這個階段的算法工程師的主要目標,是要使得自己具備能夠高效執行具體任務落地的能力,這其中對動手能力的要求是最高的。
業界 XX 會議又又發表了一篇影響力很大的 paper,實驗效果宣稱 ( chui niu ) 業界最牛;隔壁 XX 公司的 XX 團隊又又又發表 ( PR ) 了最新的算法,聲稱效果提升巨大 ( 可能是 baseline 很低 );著名程序員大型交友網站某 hub 又開源了最新的模型代碼,號稱在多項任務中吊打當前各種主流模型。于是老大一句話,你去調研下人家怎么做的,回來落地實現下啊。
接下來就是發揮初級算法工程師能力的時候了。看論文、復現模型、跑實驗、調參數、魔改網絡、效果不好接著調。這個過程其實也是拉開初級算法工程師們能力的時候,有些人只是做到會用工具,調調 api,調調參數改改網絡,或者直接 git clone 下載源碼編碼后改改直接跑,至于能否有效果完全看天,真真是在 " 煉丹 "。最終沒效果還要補充一句,論文作者們真的是在吹牛啊,這個算法在我們這里完全沒有效果啊。然后換個模型重新煉丹來過。
有些人在這個過程中不斷累積經驗,盡可能去找這些方法的共性。以 ctr 模型為例,embedding 參數對自己業務數據效果是否敏感、網絡層數的深度對效果的影響、不同正則化方法是否 work、bn/ln/dropout 等方法是否有效、當前的特征體系對于高階特征交叉是否已經刻畫足夠、attention 到底收益有多大等等。這些如果能從更本質和通用共性的角度去分析總結,大概率在同樣的數據分布上可以作為以后的先驗判斷,經驗是可遷移的,不至于在每一次有新的模型出來就去盲目的做嘗試。
判斷這個階段的工程師的標準,就是對于一個明確的算法目標,是否具備足夠強的執行能力將其落地。初級的落地能力只是快速實現,更加高級和 solid 的落地能力,是能夠 know how 的落地,有無效果都能做出比較 solid 的分析,并且能夠為以后的迭代優化提供經驗。
02 中級算法工程師
——關鍵詞:算法選型和改造能力——
經過了第一階段之后,對于明確的算法問題已經具備了足夠的經驗,這個階段,需要自己根據在這個領域內的技術累積,對已有的算法問題,進行適當的改造和優化。
以用戶畫像為例,如果是剛搭建的團隊,初期可能更多需要搭建的是整個模型框架,和上下游團隊協作溝通,以最小的代價迅速搭建起線上可用的基礎 baseline。比如最簡單的基于統計的方法,根據用戶主動行為的物品標簽作為用戶的統計畫像標簽,如 24 小時的統計標簽作為短期興趣,30 天的統計標簽并做時間衰減作為長期興趣。這個階段的算法工程師,如果不顧團隊的現狀,一上來就想做能夠體現技術深度的各種模型,對團隊的進展其實是負向的。確保算法能夠快速落地并取得收益才是主要目的。
而團隊發展到了一定階段,有了一定的基礎屬性畫像和統計畫像之后,可以根據團隊的人力做些深度的發展,從基礎的統計,可以做無監督的隱語義理解 ( lda, w2c 等 )、有監督的雙塔建模、加入特征的用戶興趣建模,到用戶序列建模,甚至各種圖方法知識圖譜的手段。而具體選擇哪些方法進行嘗試需要中級算法工程師根據此前在初級階段累積的經驗做預判,例如假如還沒有用戶 embedding 的表示,將用戶的行為序列作為 sentence 嘗試在很多公司的業務都有過收益的 word2vec 可以作為 baseline;引入更多特征的雙塔模型得到用戶的行為 embedding 大概率能進一步提升效果。而如果用戶有些社交屬性關聯,可以考慮圖方法做進一步的挖掘等等。
作為該方向的負責人,需要根據團隊發展階段,進行合理的技術選型,并做適當的改造。例如該不該用序列模型,lstm、rnn、transormer、bert 等序列模型如何選擇,位置特征如何設計融入等等。關于細節的參數調優需要具體執行的初級算法工程師進行實驗,而大方向的技術選型以及改造方向,則需要中級算法工程師把握和指導。
技術深度絕對不是考察中級算法工程師的主要手段,判斷這個階段算法工程師的標準,主要是是否具備在某個算法方向,獨立承擔整個算法從選型、改造、應用到落地取得成果的能力。
03 高級算法工程師
——關鍵詞:業務抽象能力——
前面兩個階段的工程師做的事情,嚴格意義上來說,都是在執行這個階段的算法工程師定下來的算法指標。這個階段的算法工程師,需要更多的是對整個業務的理解,去抽象和定義業務問題。比如當前階段,業務是否需要專門的團隊做用戶畫像,需要多少的人力做素材理解,rank 模型是否還有空間、需要投入多少人力持續優化等。如果戰略目標制定不明確,影響的將是整個團隊的努力。
對于更上層的管理層來說,算法團隊的存在意義,絕對不是說一定需要有 ctr 預估團隊,需要有用戶畫像團隊和視頻理解團隊,需要有人做 nlp、有人做特征等等。整個算法團隊存在的意義,就是能夠最終從算法的層面,解決實際的業務問題。在某個階段需要做的是提升用戶點擊率,可能需要有 ctr 模型方向團隊和有用戶畫像方向團隊等;在某個階段引入更多的多媒體素材可能需要有團隊做視頻理解和圖像理解;某個階段需要做用戶增長和留存,可能需要有團隊做專門的數據分析影響用戶留存的因素,有團隊做留存模型有團隊做增長模型等等。
這也就決定了不同時期,對于算法團隊的目標是不同的,需要的人員配備也不同,而這些,都需要高級算法工程師去站在整個業務層面去理解和拆解,然后將目標層層傳遞到整個團隊去。判斷這個階段算法工程師的標準,主要是對于所負責的業務,能否制定合理的算法可達目標,并帶領團隊完成實現。
04 結束語
——關鍵詞:深耕崗位——
個人覺得,如果 35 歲了還處在第一階段,也就是只能執行明確的算法模型,和剛畢業的年輕人比可以說完全沒有競爭力,個人職業生涯的進一步發展會很受限。
如果已經進入第二階段,不可取代性還是很強的,畢竟這個階段的合理算法技術選型和推動落地能力,是很多剛畢業和工作不久的年輕算法工程師難以做到的。
如果已經到了第三階段至少已經是業務方向的算法負責人了,都這種 title 了,考慮的是怎么往公司的中上層走了,根本不會擔心年齡這種坎。
35 歲對于我個人而言還有幾年的時間,也只有幾年的時間。無論是算法工程師還是其他崗位,深耕該崗位目前而言可能還是最優的選擇,也可以說是沒得選的選擇。持續不斷的去提升自己在技術、技能、經驗、資源上的累積,努力去提升自己的相對不可替代性。
至于年齡,不過是個數字而已。就算是個坎,它也遠不是終點。
今天的分享就到這里,謝謝大家。
本文來自 DataFunTalk
總結
以上是生活随笔為你收集整理的算法工程师也会遇到 35 岁这道坎么?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 求一个游戏名字上面带横杠的
- 下一篇: 生鲜电商的万亿市场,是7000万人的“短