算法崗和開(kāi)發(fā)崗有什么區(qū)別?
點(diǎn)擊下方卡片,關(guān)注“新機(jī)器視覺(jué)”公眾號(hào)
視覺(jué)/圖像重磅干貨,第一時(shí)間送達(dá)
鏈接:https://www.zhihu.com/question/490150407 編輯:深度學(xué)習(xí)與計(jì)算機(jī)視覺(jué) 聲明:僅做學(xué)術(shù)分享,侵刪
https://www.zhihu.com/question/490150407/answer/2164415753
先說(shuō)下開(kāi)發(fā)崗和算法崗在職責(zé)上的區(qū)別,以一般的推薦/廣告系統(tǒng)為例,有數(shù)據(jù)庫(kù) -> 召回 -> 粗排 -> 精排 -> 混排 -> 前端等上下游模塊。
開(kāi)發(fā)崗需要做的是根據(jù)具體需求來(lái)搭建/維護(hù)對(duì)應(yīng)的線上模塊,寫代碼實(shí)現(xiàn)線上邏輯。具體而言,開(kāi)發(fā)崗更像純粹的“工程師”,需要根據(jù)需求來(lái)進(jìn)行功能開(kāi)發(fā)、測(cè)試、代碼上線,比如在召回等某個(gè)模塊修改個(gè)代碼邏輯以推進(jìn)某個(gè)業(yè)務(wù)上線。由于每項(xiàng)工作都是目標(biāo)確定,工作量也是可以直觀衡量的,所以工作確定性很強(qiáng),產(chǎn)出也比較確定。一旦需求比較多時(shí),就會(huì)堆時(shí)間加班解決,而加班多工作量肯定會(huì)更多,成績(jī)一般也更突出。所以,開(kāi)發(fā)崗更多是“身體累”。
算法崗的目標(biāo)主要是通過(guò)各種手段提升對(duì)應(yīng)指標(biāo),比如推薦系統(tǒng)的點(diǎn)擊率、轉(zhuǎn)化率、用戶停留時(shí)長(zhǎng)等。舉上面例子來(lái)說(shuō),是通過(guò)優(yōu)化召回、粗排、精排等策略/模型結(jié)構(gòu),優(yōu)化模型訓(xùn)練數(shù)據(jù),對(duì)接新業(yè)務(wù)優(yōu)化業(yè)務(wù)指標(biāo)等各種不同方式來(lái)提升指標(biāo)。到了現(xiàn)在算法已經(jīng)接近瓶頸時(shí),算法會(huì)過(guò)得非常難受,每個(gè)優(yōu)化點(diǎn)不一定會(huì)有用(大多是無(wú)效的),需要反復(fù)提出新方案、優(yōu)化、排查指標(biāo)、再提出新方案不斷循環(huán)直到拿到某個(gè)收益點(diǎn)。有時(shí)改幾行代碼結(jié)果帶來(lái)收益,有時(shí)又投入巨大工作量也沒(méi)收益,所以,這方面工作量和工作目標(biāo)上更不好量化,算法崗更多是“心累”。
在能力上,算法需要了解很多算法領(lǐng)域的知識(shí),但是對(duì)工程能力的要求也逐漸與開(kāi)發(fā)崗看齊。
算法需要熟悉各類機(jī)器學(xué)習(xí)/深度學(xué)習(xí)算法知識(shí)、各類策略、比較前沿的新算法/模型,除此之外,現(xiàn)在對(duì)算法的工程能力要求也是越來(lái)越高,基本的架構(gòu)(比如上面說(shuō)的公司內(nèi)部推薦/廣告算法各個(gè)模塊的代碼)、架構(gòu)開(kāi)發(fā)基礎(chǔ)(C++,Java等)、數(shù)據(jù)開(kāi)發(fā)(spark等、flink)。主要原因一方面是簡(jiǎn)單的模型優(yōu)化已經(jīng)很難拿到收益了,新開(kāi)發(fā)的算法逐漸更復(fù)雜,想要讓模型更合乎預(yù)期就需要對(duì)架構(gòu)很熟悉方便模型設(shè)計(jì)、指標(biāo)排查、提出新方案等,另一方面,也是為了快速迭代,開(kāi)發(fā)同學(xué)需求太多做不完的時(shí)候,算法崗不可能干等著別人開(kāi)發(fā),自己動(dòng)手完成一部分簡(jiǎn)單開(kāi)發(fā)能夠保證工作正常推進(jìn)。
開(kāi)發(fā)崗則需要對(duì)架構(gòu)知識(shí)、開(kāi)發(fā)基礎(chǔ)等各種知識(shí)比算法同學(xué)更深入,具體哪部分技術(shù)重要取決于具體的開(kāi)發(fā)崗位。
最后談下這二者面試情況,大體上說(shuō)算法崗有一定泡沫,內(nèi)卷比較嚴(yán)重,開(kāi)發(fā)崗位置更多。
由于前幾年ai太火,各個(gè)專業(yè)都往“算法”上轉(zhuǎn),當(dāng)年削尖腦袋進(jìn)算法各方向的學(xué)生這兩年也開(kāi)始批量畢業(yè)。因此,顯而易見(jiàn)的是算法崗面試會(huì)更內(nèi)卷一些,尤其是cv、nlp等偏研究性質(zhì)且落地場(chǎng)景不多的算法崗位。目前推薦/廣告算法還不算卷,主要原因是沒(méi)有平臺(tái)導(dǎo)致很少學(xué)校會(huì)專門研究這兩個(gè)方向。面試上主要還是看以往的算法項(xiàng)目經(jīng)驗(yàn)及對(duì)算法本身的理解、算法基礎(chǔ)知識(shí)、刷題等。
開(kāi)發(fā)崗種類比較多,比如后端、前端等,而且根據(jù)不同業(yè)務(wù)可能又會(huì)使用不同的技術(shù)棧(比如一些用C++,另一些用go等)。開(kāi)發(fā)崗是硬需求,每個(gè)公司都需要且數(shù)量不少,所以內(nèi)卷程度會(huì)比算法輕。面試上,也都大同小異,主要也是問(wèn)過(guò)往項(xiàng)目,基礎(chǔ)知識(shí)(對(duì)應(yīng)開(kāi)發(fā)方向的)以及刷題。
至于未來(lái)發(fā)展,個(gè)人努力是比不過(guò)時(shí)代潮流的,碰到好的業(yè)務(wù)好的領(lǐng)導(dǎo)算法能夠很容易帶來(lái)業(yè)務(wù)增長(zhǎng),那么個(gè)人上升速度也會(huì)很快。開(kāi)發(fā)崗也是同理,選擇一個(gè)好的平臺(tái),好的團(tuán)隊(duì)比選擇開(kāi)發(fā)崗還是算法崗更重要。
上面主要是以互聯(lián)網(wǎng)公司中推薦/廣告算法崗位和開(kāi)發(fā)崗進(jìn)行比較的,其他還有偏研究類型的cv、nlp等算法崗,這里就不再多說(shuō)了。
https://www.zhihu.com/question/490150407/answer/2173649548
1.薪資待遇
前幾年的時(shí)候算法崗可能要比開(kāi)發(fā)崗位薪資待遇更多。
2. 工作類型
算法崗有純粹的research,那種就是讀論文,搞模型,寫論文的,偏向高校的學(xué)術(shù)研究。
3. 技術(shù)棧
4. 崗位需求
5. 難度
https://www.zhihu.com/question/490150407/answer/2158935592本人工作title是算法工程師,實(shí)際工作中大約是50%的算法+50%的開(kāi)發(fā),平時(shí)也會(huì)和朋友討論何謂算法,何謂開(kāi)發(fā)。
從我一個(gè)入職不到一年的菜雞算法角度來(lái)看,算法崗?fù)娴氖?strong style="outline: 0px;">數(shù)學(xué)關(guān)系,開(kāi)發(fā)崗?fù)娴氖?strong style="outline: 0px;">邏輯關(guān)系。
開(kāi)發(fā)崗的職責(zé)是搭建一個(gè)產(chǎn)品的所有邏輯,從底層的到頂層的。前端頁(yè)面之間的跳轉(zhuǎn)邏輯,后端與數(shù)據(jù)庫(kù)之間的交互邏輯,前后端的交互邏輯,這些是開(kāi)發(fā)崗需要做的。比方說(shuō)我的產(chǎn)品是某視頻平臺(tái),那么打開(kāi)呈現(xiàn)的界面,點(diǎn)擊視頻進(jìn)入到播放頁(yè)面,注冊(cè)賬號(hào)修改信息等操作,都是開(kāi)發(fā)崗?fù)瓿傻摹?/span>
算法崗的職責(zé),顧名思義就是算法,算法分很多種,機(jī)器學(xué)習(xí),數(shù)據(jù)挖掘,NLP,CV,推薦等都是常見(jiàn)的算法領(lǐng)域。算法崗很多情況下是某個(gè)產(chǎn)品的核心,在產(chǎn)品中負(fù)責(zé)某個(gè)非常細(xì)分的點(diǎn),或是為某個(gè)關(guān)鍵功能提供支持。回到視頻平臺(tái)的場(chǎng)景,每次刷新推薦頁(yè)都有新的視頻出現(xiàn),如何確定刷新過(guò)后推薦給用戶什么視頻,是推薦算法做的事。一個(gè)算法會(huì)經(jīng)歷很多輪迭代,會(huì)有很多算法工程師抓著頭皮想著怎么優(yōu)化,多做些特征工程?參數(shù)再調(diào)優(yōu)一下?換個(gè)更合適的模型?等等。這些操作,更多的是數(shù)學(xué)關(guān)系,比方說(shuō)需要關(guān)注數(shù)據(jù)集的分布情況,相關(guān)性矩陣,模型損失函數(shù)等。
當(dāng)然也有很多算法是研究方向,我舉的例子不過(guò)是一小部分。
https://www.zhihu.com/question/490150407/answer/2164598780
下面從算法崗的角度談?wù)勛约旱睦斫狻K惴◢徶饕槍?duì)的是無(wú)法通過(guò)直接編程進(jìn)行解決的問(wèn)題(主要是非結(jié)構(gòu)化的輸入,如圖像,語(yǔ)音,文字等的識(shí)別。如果通過(guò)人為地寫if-else規(guī)則去處理這類輸入,程序?qū)⒆兊梅爆嵢唛L(zhǎng)且不一定能夠覆蓋所有情況),需要將它轉(zhuǎn)化為一個(gè)數(shù)學(xué)問(wèn)題進(jìn)行建模后,結(jié)合標(biāo)注的數(shù)據(jù)進(jìn)行該數(shù)學(xué)問(wèn)題求解,用得到的數(shù)學(xué)模型(某個(gè)函數(shù)y=f(x)一般是個(gè)概率函數(shù))。
而開(kāi)發(fā)崗負(fù)責(zé)的就是能夠結(jié)構(gòu)化的輸入了,需要處理的情況也是相對(duì)固定的。以一個(gè)人臉識(shí)別接口為例,開(kāi)發(fā)崗負(fù)責(zé)的部分可能會(huì)包括,將需要識(shí)別餓圖像進(jìn)行壓縮,然后通過(guò)網(wǎng)絡(luò)發(fā)送到服務(wù)器上解壓縮,然后將圖像輸入算法模塊得到的結(jié)果通過(guò)網(wǎng)絡(luò)傳回客戶端。如何承受短時(shí)間大量的人臉圖像輸入同時(shí)服務(wù)器不宕機(jī),客戶沒(méi)感覺(jué)到卡頓,就是常見(jiàn)的后端開(kāi)發(fā)崗需要解決的問(wèn)題了。
像別的答案提到的那樣,開(kāi)發(fā)崗?fù)巧眢w累,而算法崗是心累。開(kāi)發(fā)崗面對(duì)的問(wèn)題往往是比較明確的(怎么更快地處理輸入并保持準(zhǔn)確),能通過(guò)代碼分析和debug找到問(wèn)題所在,然后通過(guò)扎實(shí)的CS基礎(chǔ)知識(shí)解決或者堆機(jī)器解決,舉個(gè)簡(jiǎn)單的例子,比如說(shuō)我有一份幾十pb的數(shù)據(jù)需要找到top100,但是我內(nèi)存放不下,可以通過(guò)堆排序的思想進(jìn)行處理;或者有錢的直接使用很多機(jī)器進(jìn)行分布式處理快速解決。
但是對(duì)于算法的一些問(wèn)題,因?yàn)槟壳俺S玫乃惴P褪且粋€(gè)黑盒,往往是難以定位和解決的,沒(méi)有一套所有情況都適用的方案。比如說(shuō)一個(gè)動(dòng)物識(shí)別程序?qū)⒛持还科孀R(shí)別成了狼,這種bad case的原因是沒(méi)有一個(gè)明確的理論另外分析的,解決的方法一般也只是對(duì)這類情況增加更多的訓(xùn)練樣本或者嘗試更先進(jìn)的網(wǎng)絡(luò)結(jié)構(gòu)。總結(jié)就是算法面對(duì)的不確定性更大。
https://www.zhihu.com/question/490150407/answer/2166902713
很多算法工程師最終成長(zhǎng)為企業(yè)的首席科學(xué)家,或者是首席技術(shù)官等崗位,可以說(shuō)算法工程師的發(fā)展前景是非常可觀的。
再來(lái)說(shuō)說(shuō)開(kāi)發(fā)崗。其實(shí)軟件團(tuán)隊(duì)的大部分崗位都是開(kāi)發(fā)崗位,有前端開(kāi)發(fā)、后端開(kāi)發(fā)、移動(dòng)端開(kāi)發(fā)等,可以說(shuō)大部分程序員做的都是開(kāi)發(fā)崗的工作。與算法崗位不同的是,開(kāi)發(fā)崗位人數(shù)多,占比大,而且大部分開(kāi)發(fā)崗位的職業(yè)周期都比較短,一般開(kāi)發(fā)崗位在做到一定年齡(比如35歲)之后都會(huì)轉(zhuǎn)型。
一部分會(huì)轉(zhuǎn)向項(xiàng)目經(jīng)理等管理崗位,一部分會(huì)轉(zhuǎn)型做架構(gòu)師,還有一部分轉(zhuǎn)型為行業(yè)咨詢專家等,當(dāng)然,也有一部分開(kāi)發(fā)人員轉(zhuǎn)型為算法工程師。
算法崗和開(kāi)發(fā)崗哪個(gè)前景更好?其實(shí)只要技術(shù)到位,這兩個(gè)崗位未來(lái)的發(fā)展前景都不可限量。
如何成為一名優(yōu)秀的程序員,做好以下兩點(diǎn)非常重要:一方面要立足本職工作,另一方面也要緊跟技術(shù)發(fā)展趨勢(shì),通過(guò)崗位提升和自主學(xué)習(xí)不斷完善自身的知識(shí)結(jié)構(gòu),從而提升自己的職場(chǎng)競(jìng)爭(zhēng)力。
—版權(quán)聲明—
僅用于學(xué)術(shù)分享,版權(quán)屬于原作者。
若有侵權(quán),請(qǐng)聯(lián)系微信號(hào):yiyang-sy 刪除或修改!
