關于AI算法工程師的自我修養(yǎng)?
來源:知乎
本文僅作學術分享,著作權歸屬作者,侵刪
原文地址:https://www.zhihu.com/question/425088404
AI熱潮到來差不多4~5個年頭,產業(yè)界關于AI算法工程師要求和預期與熱潮初期相比應已大為不同,對于剛入職和即將入職的算法工程師 or AI從業(yè)者你有什么樣的建議?
針對的對象包括:學生,職場(準)新人等
包括但不限于的討論:煉丹、工程和業(yè)務溝通平衡,公司部門方向選擇,克服新人焦慮,學生思維轉變,技能補充,研究課題(影響面大、痛點需求),工作方法論,職場規(guī)則,工作學習生活平衡,保持自律性技巧...
Naiyan Wang(CS PhD, 機器學習話題優(yōu)秀答主)回答:
目錄
合格的職場人
合格的工程師
合格的算法工程師
這樣一個好問題居然只有一個抖機靈的回答,我來快速拋磚引玉一下。這個問題我覺得可以從三個層面上來說:一位合格的AI算法工程師,首先要是一位合格的職場人,其次要是一位合格的工程師,最后才到AI算法工程師。很多新邁入職場的同學問題并不出在最后一環(huán),而是在于前兩部分。
所以下面從這個三個方面展開聊聊。
合格的職場人
這點看上去顯然,但恰恰是很多初入職場的同學最為欠缺的。從學生思維轉變成工作思維,這是很多新入職的同學邁不過去的一個坎。具體來說,合作能力,溝通能力,展示能力,這些軟性素質是在職場順利工作的根基。
合作能力
很多同學在學校的研究工作基本上是和導師單線聯(lián)系的模式,雖和實驗室同學有溝通合作,但一般不會超過三五個人的范疇,鮮有同學能真正接觸并參與到大規(guī)模的產品,并了解到最終deliver一個產品背后不同職位的分工合作。工程師在這過程中是重要的一環(huán),但不是唯一的一環(huán)。甚至在復雜的系統(tǒng)中,工程師負責工作內部也是有諸多的上下游合作。能夠站在上下游的立場和需求上思考問題,能理解不同角色的苦衷,這合作就已經成功了一大半了。
溝通能力
接上一點,為了實現(xiàn)高效的合作,在公司中每一位同學必須保持高效的溝通。大家有一個常見的誤解便是溝通能力強弱更多是由每個人的性格決定,而我認為有效的溝通是可以通過后天的刻意訓練來習得。溝通的本質是在正確的時間點以正確的方式傳達正確的信息。這其中的每一點都不是玄學,而是可以通過具體示例和訓練來說明的,這里就不展開了。
展示能力
這一點如果是博士或者科研做的比較多的同學應該深有體會。在工作中,對展示能力的要求其實并不比科研要弱。良好的展示能力是前兩點的基礎,這既包括講也包括寫。工程師需要良好的展示能力來講清你的想法和工作。小到組內的工作匯報,大到參加大型公開會議做報告其實本質都是一樣的。展示能力并不是堆砌復雜的辭藻,華麗的圖表,而是清晰的邏輯與準確的措辭。其實嚴格來說展示能力的培養(yǎng)不一定要到工作之后才可以開始,抓住每一次做presentation的機會,甚至每一次組會的機會,不要害羞不要害怕,相信在入職的時候你就已經比同期的同學強一截了。
合格的工程師
工程師在一個團隊中的角色是problem solver,也就是為了達到產品或者系統(tǒng)設定的目標,去把設想變成現(xiàn)實的人。除了扎實的專業(yè)能力之外,要進階還有以下幾個我覺得重要的方面:
項目中的全局觀
前面提到工程師在一個大的項目和產品中往往需要和不同角色配合,那么主動思考技術怎么能貢獻于整體項目目標就尤為重要。以項目目標為指揮棒,而不是自顧自地考慮所謂高大上的技術方案。用最簡潔的技術解決問題這恰恰是內功的體現(xiàn)。甚至很多時候,由于各種客觀條件限制,沒法去選擇技術上最合理的方案來執(zhí)行。在此時如何取舍來達成目標,就更考驗工程師的智慧和全局觀了。
定義問題的能力
在工作中,我們遇到的問題會是多種多樣的。不像在學校,往往解決的是一個定義得非常清晰的通用問題。在工作中,由于產品和項目需求多樣,我們要解決的是一個特定場景中的細分問題或者是一個可能不復雜但是全新的應用。雖有各種公開的論文或者代碼可以參考,但生搬硬套往往都不會是最優(yōu)方案。在解決問題之前,我們要先考慮清楚這個問題的輸入輸出是什么?和已有的通用問題區(qū)別是什么?有什么樣的先驗知識可以利用優(yōu)化問題或者簡化問題?來自產品的問題是怎樣抽象成一個嚴謹?shù)拿枋觯?/strong>準確地想清楚要做什么事情項目就已經成功了大半。
獨立解決問題的能力
在解決問題的基礎之上,還有重要二字:獨立。學生時代以上課學習為主,非博士的同學可能很少能有獨當一面來解決問題的機會,過程中往往也多有指導。工作中,要解決的問題可大可小,但切記做一個讓同事和領導放心的靠譜的人。我們經常會談到一個詞,管理成本。這并不是指一位同學具體解決問題的技術能力如何,而是在解決問題的過程中,你的leader和同事需要花費多少精力。管理成本越低的同學,在解決問題過程中需要的指導精力越少。理想狀況下只需要leader交代清楚要解決的問題,便可在解決問題的過程中獨立規(guī)劃,自主溝通。如有困難,也可以整理好并及時主動提出需求。要達到這一點,其實是需要綜合以上所有的能力。
合格的算法工程師
最后的最后才會到算法工程師,這畢竟是最細分的環(huán)節(jié)。每個公司對算法工程師的定義不盡相同,所以就不談具體的技術細節(jié)了,只能從個人角度談談。有以下覺得比較重要的三個點:
優(yōu)秀的實現(xiàn)能力
這一點其實已經老生常談了,算法工程師哪怕是算法科學家都需要有能力把想法變成runnable code。根據(jù)團隊分工和項目不同,有的需求是只需要證明想法可行,有的是需要一個prototype,有的也可能需要直接推到產品或者上線系統(tǒng)中去。無論是哪種情形,有優(yōu)秀動手實現(xiàn)能力的同學都會占有巨大的優(yōu)勢,哪怕就算是算法不可行,實現(xiàn)能力強的同學也可以快速試錯快速迭代。這樣的能力無論何時在何團隊都會是寶貴的。
除此之外,實現(xiàn)能力不僅僅局限于寫出來,寫的快,還應該包括寫得好,寫得美。把代碼寫得簡潔易于維護,可能并不會直接幫助到算法研發(fā),但是從長期來說,這是在一個周期較長的項目中保持效率很重要的一點。
對前沿進展保持追蹤
算法工程師不同于其他職位的工程師,最起碼在現(xiàn)在這個階段技術迭代的速度是以月為單位的。所以保持前沿的追蹤是非常有必要的。但不同于做科研,算法工程師了解前沿的目的不一定是要在此基礎上繼續(xù)開拓創(chuàng)新,而是能對已有的技術深入理解,去偽存真,以便更好地在業(yè)務中為我所用。當然對待新技術也不應該盲從,而應該看清想清之后再動手。最好能有同事朋友針對paper進行討論和critique。
扎實的計算機原理基礎
不了解算法部署的平臺談研發(fā)高效的算法就像是空中樓閣。雖然這可能在初級算法的研發(fā)中并不明顯,但是會成為很多同學進階中的一道坎。這一點對于非科班轉行來做算法的同學尤甚。相比于應試教育式的學習,更重要的是理解系統(tǒng)為什么被設計成了現(xiàn)在這個樣子,在這樣的過程中做了什么樣的取舍,以及作為上層用戶這樣的取舍對算法設計意味著什么。所以不用擔心,補習工作中所需要的知識,這個工作量是遠比學習一遍本科計算機專業(yè)課要小很多的。
以上是我在這幾年的工作中總結出的部分想法,希望能夠幫助新入職場的算法同學們少走彎路,也祝愿大家能夠在產品和項目中發(fā)揮更大的價值。

武俠超人(騰訊高級算法研究員)回答:
從以下幾個方面談一下自己的建議:
公司選擇:這個問題其實挺難回答的,要綜合看你的水平、出身、眼界、膽量等等。前提是你收割了各家公司的頂尖offer。以自己身邊的師兄和同學為例,每一屆最優(yōu)秀的那撥人除了去阿里星之外,其實去BAT大廠的同學并沒有很多,他們最終還是選了當年看上去剛剛起步的抖音、快手、拼多多這種,還在最高的總包里面選了最大比例的期權,本身超強的實力再加上超出常人的眼光和膽識,他們大多數(shù)人在工作之后也是一路火箭式高升,現(xiàn)在擁有的財富已經證明了他們當初的選擇。但對于絕大多數(shù)的我們來說,在offer差距不大的情況下,畢業(yè)進大廠還是當前來看綜合風險與收益之后的最優(yōu)解。
方向選擇:這個純粹看個人了,之前在百度的時候,最喜歡公司里面的一句話是"做自己喜歡并且擅長的事情",所以選擇哪個方向,一方面要看自己的興趣,另一方面還看自己的優(yōu)勢。目前算法的方向常見的主要是CV、NLP、搜索、推薦、廣告這些,前兩個方向比較垂直,后面三個方向有很大的相通性
職業(yè)規(guī)劃:借用百度的某位高級總監(jiān)曾經說過的一句話,自己感覺很認同,"畢業(yè)1-2年的時間要多接觸各種知識,找到自己今后的職業(yè)方向,在畢業(yè)3-5年的時間要深耕自己選擇的領域,努力成為這個方向的專家,在畢業(yè)5年之后的時間要嘗試擴寬自己的方向,負責更大的領域"。
新人焦慮與思維轉變:這個確實是非常普遍的現(xiàn)象,感覺很多人都會經歷一次,這種焦慮有可能體現(xiàn)在你后悔沒有選另一個更好的offer,有可能體現(xiàn)在無法快速融入到團隊中去,還有可能體現(xiàn)在未來職業(yè)規(guī)劃的迷茫等等,自己當初剛畢業(yè)的時候因為offer的選擇曾經非常郁悶,花了很長時間才緩過來,但工作幾年之后的現(xiàn)在已經完全是另一種心態(tài)了,"得之我幸,失之我命",努力把握現(xiàn)在做到最好吧!
危機感與核心競爭力:作為互聯(lián)網從業(yè)者應該時刻保持一種危機感,不斷提升自己的核心競爭力,才能確保不被淘汰的基礎上持續(xù)進步,至于AI算法工程師的核心競爭力是什么,在之前的回答里面也有提到:
一名合格的算法工程師需要對數(shù)據(jù)有足夠的敏感,需要對業(yè)務有深入的理解,需要掌握扎實的機器學習基礎,需要緊跟前沿的深度學習技術,還需要很強的工程實踐能力
學習工作生活的平衡:參考四象限的理論,應該把更多的時間放到"重要但不緊急"的事情上,無論多忙總要抽出時間來多思考,多總結,多健身,多學習

推薦閱讀
CVPR 2021 論文和開源項目合集(Papers with Code)
