中小公司的Java工程師怎麼進BAT?

這篇文章,跟大家聊一聊很多很多很多人問我的一個問題:中小公司的Java工程師應該如何規劃準備,才能跳槽進入BAT這類一線互聯網公司?

之所以我用了三個 “很多” 來形容這個問題,是因爲實在這個問題太普遍了,因爲國內Java工程師至少好幾十萬,但是在國內互聯網大廠裏幹過的碼農可能也就十分之一,或者五分之一的比例。

所以,其實這個也是符合28法則的,少部分人在大廠裏幹過,發展的很好。但是大部分人還是在中小型公司,或者外包類傳統IT公司裏工作。

(1)80% Java工程師都有的迷茫

這些同學可能對自己的技術成長,職業發展感到非常的迷茫,自己有點追求,也想去一下大廠,但是又不知道怎麼規劃。

因爲我個人在國內幾個最大的互聯網公司先後有着十餘年工作經歷,面試和招聘過大量各種水平的開發人員。包括初、中、高級開發,技術專家,高級技術專家,都面過。

同樣,也指導過很多同學的職業發展規劃,看過大量的同學不順利的職業發展,所以打算從我個人的角度來聊聊這個問題:中小公司的同學應該如何一步一步實現逆襲進入BAT。

我相信以下情形很多同學應該都有類似體會:一直徘徊在各種中小公司裏開發一些沒技術難度的Java系統,主要就是CRUD。

哪怕是用了用MQ、緩存、分庫分表,但是也沒什麼併發量,數據量也不算特別大,自己的技術成長極爲緩慢。

然後就是三五年,七八年,甚至十多年,職業發展和技術水平都停滯在這個狀態,無法有更進一步的發展。

隨着現在寒冬到來,到處裁員,中年碼農的危機,加不動班,體力越來越差,孩子壓力越來越大,對自己何去何從很迷茫。

有一些同學是一直徘徊在那種中小型互聯網公司裏碰到上述情況,有一些同學是在一些外包類的IT公司裏碰到上述情況。

(2)你的技術爲啥十年八年都無法進步?

先來搞清楚一個問題,你的技術到底爲什麼十年八年都無法進步?

拆解一下,你的能力集中在哪幾塊:

技術廣度

對MQ、緩存、NoSQL、大數據、高併發、高可用、微服務,等一系列的相關技術都有一定的瞭解,熟悉常見功能

在自己的項目裏落地使用過,有一定的技術使用經驗

這可以解釋爲技術廣度。

技術深度

讀過Kafka的底層源碼?

對消息中間件的架構設計思想有深刻的理解?

對分佈式事務框架/中間件的架構設計有過研究?

在每秒百萬併發場景下做過底層系統的深入優化和故障處理?

如果你有類似這種過人之處,那麼你才能說你有某些技術深度。

項目經驗

你有沒有整體負責過幾億註冊用戶,幾千萬日活用戶的大規模、高併發、分佈式、高可用、高複雜度的系統架構設計?

或者你負責的一直都是那種公司內部使用的,幾十個人用的OA系統,CRM系統?

這些就是你的項目經驗

團隊管理

你在互聯網公司裏帶過20的團隊?

或者你在一個傳統IT公司裏帶過3個人的小組?

這都是你的團隊管理經驗。

拆解過後,再來看看,如果你在一些小型互聯網公司,或者是做一些傳統軟件開發,爲什麼技術無法進步?

其實道理很簡單,可能你的公司推出了一款APP,但是不好意思,用戶量總共就100萬,日活用戶就10萬人。

那你覺得你的系統有技術挑戰嗎?沒有。

既然沒有技術挑戰,你把系統搞那麼複雜幹嘛?或者你的架構師搞那麼複雜幹嘛?不需要。

大家簡單做一做,主要crud寫一下功能,最多現在spring cloud流行了,上一下拆成微服務的就夠了。

然後這套系統就穩定支撐你公司的業務了,那你接觸不到很大的技術挑戰,所以技術進入停滯狀態,不是很正常麼?

或者你做一些傳統的軟件開發,比如說建築類軟件,辦公自動化軟件,類似這種的。總共就幾十個人用一個系統,或者幾百人用,那你就更是如此了。

可能都不需要spring cloud,直接單塊系統,單機部署,就是在裏面填充業務代碼就好了。

所以根本原因,就是很多同學平時的工作環境,他沒有什麼技術挑戰,所以只要把系統技術做的簡單一些,低成本就可以支撐公司業務了,那既然這樣,當然技術就進展很緩慢了。

然後可能你工作了八年十年,技術廣度還可以,對流行的技術自己都看過一些書,簡單用過,玩過demo。

你的項目經驗積累了不少,但是都是一些各個傳統領域的系統業務理解較爲深刻,沒有極高技術挑戰的項目經驗。

有的人工作時間長,可能就是帶過一些人,有過一些帶團隊的經驗,能管人。

大概就是如此了,每次換工作,還是隻能換類似的公司,幹類似的技術,依然沒有進步,依然是類似的項目經驗。

所以大夥兒先梳理清楚,迷茫的根源究竟在哪裏。

(3)想進BAT的你該掌握什麼技術?

筆者在這裏總結了一下,首先是基礎工作需要的,spring,IOC,AOP,spring mvc,mybatis,這些源碼都是需要讀的。


其次JVM,程序性能優化,Tomcat,併發編程,MySQL,netty,Linux也是需要了解的。


高性能架構,分佈式,Zookeeper,Nginx,active mq,rabbit mq,kafka,memcached,Redis,mongoDB。


微服務,不用多說,spring boot ,spring cloud,docker。


團隊開發,Git,Maven,Jenkins,sonar。


以上技術,筆者整理了視頻,大家有需要可以加羣免費領取,還有相關面試題及電子書,羣號:923116658。

(4)幻想一步登天?那只是你的黃粱美夢

很多人多學了一些技術,有了一些經驗,很容易開始有點膨脹,老是想着一步登天,一下子就進入BAT。

關於這個,其實是有類似的一些成功經歷,比如有的人是大專學歷,通過自己的努力學習,加上一些機緣巧合,直接一下子就從中小公司跳入了BAT。

但是就現實情況來看,不是每個人都一定可以一步登天,複製這個經歷的。

在你學習了一些技術,同時自己多做了一些嘗試,積累了一定的經驗之後,此時應該做的是:做最壞的打算,抱最好的希望。

你完全可以去試試BAT的面試,TMD的面試,儘可能去爭取機會,但是如果沒面上也無所謂。

你可以降低期望,人只要跟自己比就好了。

比如說你現在在某小型的傳統外包軟件公司,那麼接下來如果你能面進一家小型創業互聯網公司,有個幾百萬用戶量,日活用戶有幾十萬,比之前的公司技術挑戰多一些,用的技術也更多一些,那麼你就可以去了。

只要你每一步跳槽,都比之前好,都讓自己有進步,那麼整體的大方向就是沒錯的。

也許你先進一個創業型互聯網公司,然後下一家就可以進入一個市值幾十億美金的上市互聯網公司,再下一步就可以進入BAT。

在這個階段我見過很多人犯的最大的錯誤就是:老是覺得自己剛學了一點東西,就必須立馬進大公司。

這些同學往往心態着急的不行,而忽略了自己的學歷、背景、經驗導致了起點較低。能立馬進BAT當然很好,但是有時候機緣巧合緣分沒到,進不去也正常。

在這個階段最需要做的,就是跟自己比,別跟別人比,只要每一次跳槽都比上一次好,公司更大,薪資更高,職位更高,技術挑戰更大,就可以了。

(5)不斷提升自己,最後進入BAT

一旦你開始做到跳槽進入一家比之前更好的公司,有更高的技術挑戰,那麼公司本身的技術挑戰就會促使你快速成長,還是舉個例子吧。

比如說你本來就在做傳統軟件的開發,用的都是單塊系統涉及的一些技術,就是簡單的spring mvc、spring、mybatis等技術做CRUD的業務開發。

但是呢,你通過追求卓越,自己業餘不停的學習技術,然後對自己負責的一些模塊多設立了一些技術挑戰,自己構思了很多更高挑戰的場景下,可以給自己的模塊加入哪些更高階的技術。

接着你帶着自己學習的一些技術,還有積累的一些實踐經驗和思考,進入了一家創業型互聯網公司。

這家公司的好處就在於,互聯網公司技術氛圍更好,比如zookeeper、redis、rocketmq、sharding-jdbc,等各種技術,在公司生產環境的系統裏,都有落地和使用。

那麼你此時是不是就不用停留於一些技術挑戰的構思,可以開始真正做一些有點技術挑戰的工作了。

但是,此時你還是需要繼續不停的學習技術,學習更多的架構上需要的技術,深入的學習技術,同時積累實踐經驗。

然後帶着這份工作經歷,同時加上你不斷加強的技術學習,你進入了一家比如30億美金估值的獨角獸公司。

這家公司有2000萬用戶,日活用戶達到百萬級,高峯併發量可以過萬,每天數據庫裏日增數據量達到了數十萬。

此時你開始真正接觸一些所謂的:高併發、高可用、高性能、海量數據的實際處理。

基於你開發的業務系統,你開始更多的實踐,同時你還對各種涉及到的技術有了更加深入的研究,比如對一些核心中間件系統進行了源碼級別的閱讀和研究。

最後你終於等到一個機會,BAT裏某家公司讓你去面試,經歷了四五輪面試之後,對方給了你一個offer,是年薪40萬的高級Java工程師的職位。

然後你進去之後,可以在最頂尖的互聯網公司裏學習開發流程、規範、架構,接觸到最大規模的用戶量,每天都有解決不完的技術挑戰,在這個過程中,你又可以繼續成長。

最後可能你再次跳槽,就可以進入TMD中某一家,拿下技術專家的offer,在大公司裏拿下技術專家的職位,帶一個團隊,達到人生第一個巔峯。

接着你再跳槽,可能一些創業公司就開始挖你去做一些技術管理層。

大家別以爲這個僅僅是筆者捏造的一個故事,在筆者指導過的同學中,確實有同學按照這個路線,實現了人生的逆襲!

(6)最後的寄語

最後,送大家一句話:九層之臺,始於壘土;千里之行,始於足下

這裏面最難的就是開始的那一步,也就是大量的人都停留在一些完全沒太多技術含量的技術工作的情況下,這個時候是最難熬的。

其實只要能把第一步走好,自己拼命的積累技術,努力跟其他工程師競爭,技術遠超跟自己同情況的其他工程師,那麼你就有機會率先脫離這種困境,開始慢慢第二步,第三步。

到了後面,就是讓公司的技術挑戰push你不斷努力和進步,最後進入BAT這類一線互聯網公司。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章