Java後端開發工程師是否該轉大資料開發?

地藏Kelvin發表於2019-10-13

撰寫我對java後端開發工程師選擇方向的想法,寫給在java後端選擇轉方向的人

背景

看到一些java開發工程師,對java後端薪酬太悲觀了。認為換去大資料領域就會高工資。覺得java後端沒有前途。我從事java後端開發,對大資料領域工作有些瞭解,但不深入。本文描述一下我對java後端和是否轉大資料開發的個人見解。

目的

  1. 分析大資料領域分類
  2. 分析大資料工作工資高的原因
  3. 分析造成覺得java後端開發不夠前景的原因
  4. java後端轉大資料工作做什麼
  5. 轉去大資料領域的各類方向與java後端比較衡量

一、大資料領域工作我認為分4類

類別 業務開發 架構組
1資料處理 ETL、爬蟲 未知
2資料統計 實時流式計算、離線流式計算、Elastic-search分詞統計 架構研究spark hadoop原始碼開發數坊系統、shuffle優化。
3資料分析 基於mahout、sparkStream 做機器學習、自然語言 效能優化
4資料演算法/建模 推薦演算法、使用者畫像、風控建模 未知

二、大資料領域工資高的原因

大家看到大資料工資高,其實是大資料領域包含了建模或者演算法工程師那部分。高工資的就只有推薦演算法、使用者畫像、風控建模、自然語言這些工作,職位為演算法或者建模工程師。

然而大資料領域的大部分工作,都是上圖表中,第1、2類的工作,如:etl、爬蟲、實時離線流式計算,es、頂多就機器學習。即使這些工作也只是工程級的應用(換句話說就是寫業務程式碼,搬磚),如果工資高也是有架構能力(提升spark效能之類),而不是大資料應用開發。

三、分析造成覺得java後端開發不夠前景的原因

有人覺得java後端開發工資低,沒有前景,沒有適應時代。

第一、大資料時代很久了,很早就開始招大資料了,不是需求火爆的狀態,如安卓工程師一開始火,如現在做的人多了,像安卓變多了,大資料的應用開發就不像2014年剛開始的時候那麼高工資了,但是大資料中演算法、建模工程師依然高薪,那種要求高質量高的工作都是10個人裡面只有1個會的那種。

第二、很多java後端開發都是業務開發,寫好業務沒bug渡過一天又一天,沒有遇到好專案或者沒有自主學習,導致做了很久的java開發工程師,都是做業務,寫CRUD、redis、mq等,會寫程式碼是一回事,但是有沒有好的技術方案就是另外一回事。

四、Java後端轉大資料工作做什麼

java換去做大資料其實只能做etl、爬蟲、實時離線流式計算,es、頂多就機器學習這些工程級的應用,也就換套工具寫業務程式碼,換套工具搬磚而已。

因為Java開發人員多數是使用、應用程度,而不是研究程度,所以Java工程師轉大資料很少有人會做到第3、4類的工作,如果做第3、4類估計是重新開始了。

其實第1、2類這些工作薪酬跟java後端沒什麼區別,畢竟兩個領域都有純業務搬磚和自帶技術體系的人。

這些大資料工程級應用(第1、2類),也有架構組,如同java後端一樣,也有業務架構和基礎架構。其實如果積累經驗java後端和這些大資料晉升我認為是一樣的。

舉例

假如表中的第2類,大資料工程級應用做spark、hadoop,一種是做應用開發,如雙11在頁面顯示華為、小米等品牌實時出貨量多少,就用實時流式計算。 另一種屬於架構工作,如開發個數坊系統(也叫資料倉儲、DataWareHouse)出來讓大資料應用開發同事在上面做 OLAP。這些架構組的人,一般需要對hadoop、spark、presto原始碼有過研究,或許會在上面二次開發,或者進行效能優化工作。 前者是換套工具搬磚,後者是架構組。如同java也有些業務程式碼和架構設計。

五、轉去大資料領域的各類方向與java後端比較衡量

考慮方向

  • 要麼轉做大資料架構,如研究spark、hadoop、presto,搞個數坊系統(又叫DataWareHouse、資料倉儲)、shuffle調優等,畢竟屬於架構組,工資會高一點。
  • 要麼轉做推薦演算法、使用者畫像、建模/演算法類。而這部分工作都是有要求的,演算法過硬、研究生、985、211 、數學專業,這些工作也會更高。資料探勘與分析不止會mathot、spark streaming,還有SAS/SPSS 。
  • 如果轉做大資料應用做實時流式計算、離線流式計算、es分詞統計,其實是相當於業務碼農,如果有java後端開發經驗的話,這種那還不如在java後端繼續深耕,畢竟換去做大資料應用開發深耕也是一樣的。

考慮晉升機會

  • 考慮另一部分,能晉升到領導位置的,一般是伴隨公司成長的核心員工。公司成長,開始是業務,一般都是java後端業務程式碼。等到中期、後期做報表才會用上大資料業務開發(第1、2類),有效能問題就會有架構組,再後期才到推薦演算法這些讓app更好體驗的東西,如淘寶首頁推薦。所以業務架構在前期就比較容易晉升。

  • 等公司成長起來了,公司有錢自然就會招很好的演算法、建模工程師做真正有價值的部分。 而實時流式計算、elastic-search這些業務碼農,也只是搬磚,現在做的人像安卓一樣多了,就不像2014年剛開始的時候那麼高工資了。

考慮所在城市的崗位數量

如第3、4類工作,崗位比較少,換公司換工作是否方便,有些公司如:中國移動 的第3類大資料工作就有外包出去,不是正式編制。 畫好跳槽路線,因為轉行第一間不一定是你的終點,所以要看其他的更上流的企業的要求是否能匹配自己。

BackUp作用

  • 多學大資料只是防止當前公司業務停止,沒有業務開發時,java後端開發工程師可能被裁員掉,學大資料和前端React.js類只是對於java後端開發另謀活路的backup。因為有些職位就希望你全棧,但現在很多都前後端分離的。
  • 而被淘汰掉的java後端只是寫業務程式碼,用用redis、mq。
  • java後端人人都會寫,java後端技術領域還是很廣的,但有沒有寫出好的技術方案就另外一回事。

總結

大資料、前端頁面開發對於java後端開發工程師來講,我覺得了解就可以了,知道有解決辦法,不必每個領域都精通,況且沒辦法每個領域都精通。

如果後端開發轉去做大資料、專案經理、產品經理崗位,估計都是java後端技術沒做上去(本身不喜歡做程式設計師的也有可能),或者是隻會做純業務程式碼這些被淘汰掉了,所以就換領域了,還有轉hr的。 不過同級別的java後端開發和產品經理薪資確實有差距,估計一兩千。

我覺得大資料工程級應用開發(第1、2類)和Java後端開發薪資就沒什麼差距,以前java後端能轉大資料應用開發,是因為那時候還缺人,現在不缺人了,要招都是招有真實經驗的。

如果你從事java後端開發幾年了,要轉大資料領域,相當於你有一個升高階java開發工程師的機會,還是選擇中級大資料應用開發工程師的機會,反正都是寫業務程式碼的。

如果你的條件過硬,如985/211學歷、數學專業、演算法研究經驗,如果要轉演算法/建模工程師就早點轉,大資料領域高工資的就是這類人。

如果java後端開發工作經驗4以上年了,沒有硬性條件,建議繼續深入後端學習。

如果java後端開發工作一兩年,你想怎麼轉都可以。

如想了解薪酬,可以在招聘網站搜大資料工程師(一般就是指第1、2類的),和演算法工程師、風控建模工程師、推薦演算法工程師、使用者畫像工程師。我所知道有個風控建模經理三萬多。

歡迎留言跟我討論


歡迎關注

我的公眾號 :地藏思維

地藏思維

掘金:地藏Kelvin

簡書:地藏Kelvin

CSDN:地藏Kelvin

我的Gitee: 地藏Kelvin gitee.com/dizang-kelv…

相關文章