演算法工程師和程式設計師有什麼不同?

演算法工程師和程式設計師有什麼不同?

在很多人的眼裡,演算法工程師和程式設計師是兩個不同的概念,程式設計師即碼農, 很多時候被人誤解為就是敲鍵盤碼程式碼的超級IT工人。

演算法工程師和程式設計師側重點不同

演算法工程師和程式設計師有什麼不同?

在網際網路發展初期做開發基本屬於一勺匯,程式設計師自己做需求,做設計,完成演算法,測試,上線,售後服務。後來隨著功能與業務的複雜程度的加深,就有了更精細的分工。特別是大資料與AI的興起,對演算法要求和數學能力要求比較高,非一般軟體人員可以完成,所以細分出來的,演算法工程師主要在邏輯模型,而程式設計師主要在實現,但二者不可完全分開。

程式設計師是從事IT行業人員的統稱,寫程式的都可以叫程式設計師,沒有非常嚴格的類別界限,是一個群體稱呼。而演算法工程師,就是主要設計算法的工程師,屬於程式設計師的一眾。演算法工程師其實比較代表一些資料發掘、計算能力較強的工程師,一般是在一個產品的初期,去解決技術上的難題,提供一些技術方案,也包括方案的初步演算法實現,主要負責資料探勘,機器學習領域相關的內容。

國內的演算法工程師和研發工程師在工作職責上還是有很大的差別的,這一點跟矽谷的職能分配是有很大的區別的,在Google、Facebook等美國網際網路巨頭,演算法工程師一樣要寫很多程式碼的。

矽谷的演算法工程師要幹髒活累活

演算法工程師和程式設計師有什麼不同?

網際網路行業有一個崗位鄙視鏈,做演算法的瞧不起做研發的,做研發的瞧不起做產品的,做產品的瞧不起做運營的。

因此在很多人眼裡,演算法工程師是網際網路行業眾多崗位裡面比較高大上的崗位。演算法崗也往往要求更高一些,一般來說都要求碩士、博士,很少有本科生在國內直接從事演算法崗位的,而研發崗位更多的會被大家認為是本科生去做的髒活累活。

不過這一點在美國是完全不一樣的,在美國Google、Facebook這樣的企業,他們也沒有嚴格的崗位區分,沒有真正意義上的專職演算法工程師,所有人都是軟體工程師,只不過大傢俱體負責的事情不一樣,沒有本質區別,即使是PhD應聘,大家也都是一樣的軟體工程師。

在國內則職位區分更加明確,主要還是我們的人才太多,導致了我們有足夠的人去更多的細分到每一個崗位。

好的演算法工程師一定是好的研發工程師

我們通常聽到的有很多的技術崗位,演算法工程師、研發工程師、架構師、測試等等,這裡面研發我們通常又分為前端、後臺、移動等等。

好的演算法工程師一定是好的工程師,好的研發工程師的演算法一定不會太差,至少也要熟悉常用的幾十種經典演算法。通常我們說演算法崗位容易出科學家,而研發崗位更容易出架構師。

演算法工程師的要求與價值

演算法工程師和程式設計師有什麼不同?

演算法崗位對數學有更高的要求,模型、計算公式都需要演算法工程師來做,研究演算法原理、調整引數、最佳化效能等等,大多數研發工程師做不了這樣的事情,就像大多數研發工程師也做不了架構一樣。不過也有很多演算法工程師是純數學專業畢業的,他們可能只會用Matlab這樣的工具,他們的演算法跟生產離得更遠一點。

演算法+資料結構=程式,任何一個環節缺一不可,我不認為應該把這這兩個崗位完全割裂開,就好像一個完備出色的微型網際網路團隊裡面,運營最好要懂一些產品,產品最好要懂一些技術,而研發最好要懂一些產品和演算法,演算法則最好能夠寫得一手好程式碼。這樣的團隊才是最完備和成熟,也不容易出現問題。

演算法工程師的國內現狀

目前國內的現狀是,演算法工程師的待遇整體稍高一些,不過要求也會相對更高一些。這也導致了很多人更傾向於選擇演算法崗位,不過也正是如此,演算法崗的飽和程度比研發崗還要嚴重,建議畢業生還是要根據自己的優勢來選擇崗位。