中小公司的Java工程師怎么進(jìn)BAT?

這篇文章,跟大家聊一聊很多很多很多人問(wèn)我的一個(gè)問(wèn)題:中小公司的Java工程師應(yīng)該如何規(guī)劃準(zhǔn)備,才能跳槽進(jìn)入BAT這類一線互聯(lián)網(wǎng)公司?

之所以我用了三個(gè) “很多” 來(lái)形容這個(gè)問(wèn)題,是因?yàn)閷?shí)在這個(gè)問(wèn)題太普遍了,因?yàn)閲?guó)內(nèi)Java工程師至少好幾十萬(wàn),但是在國(guó)內(nèi)互聯(lián)網(wǎng)大廠里干過(guò)的碼農(nóng)可能也就十分之一,或者五分之一的比例。

所以,其實(shí)這個(gè)也是符合28法則的,少部分人在大廠里干過(guò),發(fā)展的很好。但是大部分人還是在中小型公司,或者外包類傳統(tǒng)IT公司里工作。

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

這些同學(xué)可能對(duì)自己的技術(shù)成長(zhǎng),職業(yè)發(fā)展感到非常的迷茫,自己有點(diǎn)追求,也想去一下大廠,但是又不知道怎么規(guī)劃。

因?yàn)槲覀€(gè)人在國(guó)內(nèi)幾個(gè)最大的互聯(lián)網(wǎng)公司先后有著十余年工作經(jīng)歷,面試和招聘過(guò)大量各種水平的開(kāi)發(fā)人員。包括初、中、高級(jí)開(kāi)發(fā),技術(shù)專家,高級(jí)技術(shù)專家,都面過(guò)。

同樣,也指導(dǎo)過(guò)很多同學(xué)的職業(yè)發(fā)展規(guī)劃,看過(guò)大量的同學(xué)不順利的職業(yè)發(fā)展,所以打算從我個(gè)人的角度來(lái)聊聊這個(gè)問(wèn)題:中小公司的同學(xué)應(yīng)該如何一步一步實(shí)現(xiàn)逆襲進(jìn)入BAT。

我相信以下情形很多同學(xué)應(yīng)該都有類似體會(huì):一直徘徊在各種中小公司里開(kāi)發(fā)一些沒(méi)技術(shù)難度的Java系統(tǒng),主要就是CRUD。

哪怕是用了用MQ、緩存、分庫(kù)分表,但是也沒(méi)什么并發(fā)量,數(shù)據(jù)量也不算特別大,自己的技術(shù)成長(zhǎng)極為緩慢。

然后就是三五年,七八年,甚至十多年,職業(yè)發(fā)展和技術(shù)水平都停滯在這個(gè)狀態(tài),無(wú)法有更進(jìn)一步的發(fā)展。

隨著現(xiàn)在寒冬到來(lái),到處裁員,中年碼農(nóng)的危機(jī),加不動(dòng)班,體力越來(lái)越差,孩子壓力越來(lái)越大,對(duì)自己何去何從很迷茫。

有一些同學(xué)是一直徘徊在那種中小型互聯(lián)網(wǎng)公司里碰到上述情況,有一些同學(xué)是在一些外包類的IT公司里碰到上述情況。

(2)你的技術(shù)為啥十年八年都無(wú)法進(jìn)步?

先來(lái)搞清楚一個(gè)問(wèn)題,你的技術(shù)到底為什么十年八年都無(wú)法進(jìn)步?

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

技術(shù)廣度

對(duì)MQ、緩存、NoSQL、大數(shù)據(jù)、高并發(fā)、高可用、微服務(wù),等一系列的相關(guān)技術(shù)都有一定的了解,熟悉常見(jiàn)功能

在自己的項(xiàng)目里落地使用過(guò),有一定的技術(shù)使用經(jīng)驗(yàn)

這可以解釋為技術(shù)廣度。

技術(shù)深度

讀過(guò)Kafka的底層源碼?

對(duì)消息中間件的架構(gòu)設(shè)計(jì)思想有深刻的理解?

對(duì)分布式事務(wù)框架/中間件的架構(gòu)設(shè)計(jì)有過(guò)研究?

在每秒百萬(wàn)并發(fā)場(chǎng)景下做過(guò)底層系統(tǒng)的深入優(yōu)化和故障處理?

如果你有類似這種過(guò)人之處,那么你才能說(shuō)你有某些技術(shù)深度。

項(xiàng)目經(jīng)驗(yàn)

你有沒(méi)有整體負(fù)責(zé)過(guò)幾億注冊(cè)用戶,幾千萬(wàn)日活用戶的大規(guī)模、高并發(fā)、分布式、高可用、高復(fù)雜度的系統(tǒng)架構(gòu)設(shè)計(jì)?

或者你負(fù)責(zé)的一直都是那種公司內(nèi)部使用的,幾十個(gè)人用的OA系統(tǒng),CRM系統(tǒng)?

這些就是你的項(xiàng)目經(jīng)驗(yàn)

團(tuán)隊(duì)管理

你在互聯(lián)網(wǎng)公司里帶過(guò)20的團(tuán)隊(duì)?

或者你在一個(gè)傳統(tǒng)IT公司里帶過(guò)3個(gè)人的小組?

這都是你的團(tuán)隊(duì)管理經(jīng)驗(yàn)。

拆解過(guò)后,再來(lái)看看,如果你在一些小型互聯(lián)網(wǎng)公司,或者是做一些傳統(tǒng)軟件開(kāi)發(fā),為什么技術(shù)無(wú)法進(jìn)步?

其實(shí)道理很簡(jiǎn)單,可能你的公司推出了一款A(yù)PP,但是不好意思,用戶量總共就100萬(wàn),日活用戶就10萬(wàn)人。

那你覺(jué)得你的系統(tǒng)有技術(shù)挑戰(zhàn)嗎?沒(méi)有。

既然沒(méi)有技術(shù)挑戰(zhàn),你把系統(tǒng)搞那么復(fù)雜干嘛?或者你的架構(gòu)師搞那么復(fù)雜干嘛?不需要。

大家簡(jiǎn)單做一做,主要crud寫一下功能,最多現(xiàn)在spring cloud流行了,上一下拆成微服務(wù)的就夠了。

然后這套系統(tǒng)就穩(wěn)定支撐你公司的業(yè)務(wù)了,那你接觸不到很大的技術(shù)挑戰(zhàn),所以技術(shù)進(jìn)入停滯狀態(tài),不是很正常么?

或者你做一些傳統(tǒng)的軟件開(kāi)發(fā),比如說(shuō)建筑類軟件,辦公自動(dòng)化軟件,類似這種的。總共就幾十個(gè)人用一個(gè)系統(tǒng),或者幾百人用,那你就更是如此了。

可能都不需要spring cloud,直接單塊系統(tǒng),單機(jī)部署,就是在里面填充業(yè)務(wù)代碼就好了。

所以根本原因,就是很多同學(xué)平時(shí)的工作環(huán)境,他沒(méi)有什么技術(shù)挑戰(zhàn),所以只要把系統(tǒng)技術(shù)做的簡(jiǎn)單一些,低成本就可以支撐公司業(yè)務(wù)了,那既然這樣,當(dāng)然技術(shù)就進(jìn)展很緩慢了。

然后可能你工作了八年十年,技術(shù)廣度還可以,對(duì)流行的技術(shù)自己都看過(guò)一些書(shū),簡(jiǎn)單用過(guò),玩過(guò)demo。

你的項(xiàng)目經(jīng)驗(yàn)積累了不少,但是都是一些各個(gè)傳統(tǒng)領(lǐng)域的系統(tǒng)業(yè)務(wù)理解較為深刻,沒(méi)有極高技術(shù)挑戰(zhàn)的項(xiàng)目經(jīng)驗(yàn)。

有的人工作時(shí)間長(zhǎng),可能就是帶過(guò)一些人,有過(guò)一些帶團(tuán)隊(duì)的經(jīng)驗(yàn),能管人。

大概就是如此了,每次換工作,還是只能換類似的公司,干類似的技術(shù),依然沒(méi)有進(jìn)步,依然是類似的項(xiàng)目經(jīng)驗(yàn)。

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

(3)想進(jìn)BAT的你該掌握什么技術(shù)?

筆者在這里總結(jié)了一下,首先是基礎(chǔ)工作需要的,spring,IOC,AOP,spring mvc,mybatis,這些源碼都是需要讀的。

其次JVM,程序性能優(yōu)化,Tomcat,并發(fā)編程,MySQL,netty,Linux也是需要了解的。

高性能架構(gòu),分布式,Zookeeper,Nginx,active mq,rabbit mq,kafka,memcached,Redis,mongoDB。

微服務(wù),不用多說(shuō),spring boot ,spring cloud,docker。

團(tuán)隊(duì)開(kāi)發(fā),Git,Maven,Jenkins,sonar。

以上技術(shù),筆者整理了視頻,大家有需要可以加群免費(fèi)領(lǐng)取,還有相關(guān)面試題及電子書(shū),群號(hào):923116658。

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

很多人多學(xué)了一些技術(shù),有了一些經(jīng)驗(yàn),很容易開(kāi)始有點(diǎn)膨脹,老是想著一步登天,一下子就進(jìn)入BAT。

關(guān)于這個(gè),其實(shí)是有類似的一些成功經(jīng)歷,比如有的人是大專學(xué)歷,通過(guò)自己的努力學(xué)習(xí),加上一些機(jī)緣巧合,直接一下子就從中小公司跳入了BAT。

但是就現(xiàn)實(shí)情況來(lái)看,不是每個(gè)人都一定可以一步登天,復(fù)制這個(gè)經(jīng)歷的。

在你學(xué)習(xí)了一些技術(shù),同時(shí)自己多做了一些嘗試,積累了一定的經(jīng)驗(yàn)之后,此時(shí)應(yīng)該做的是:做最壞的打算,抱最好的希望。

你完全可以去試試BAT的面試,TMD的面試,盡可能去爭(zhēng)取機(jī)會(huì),但是如果沒(méi)面上也無(wú)所謂。

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

比如說(shuō)你現(xiàn)在在某小型的傳統(tǒng)外包軟件公司,那么接下來(lái)如果你能面進(jìn)一家小型創(chuàng)業(yè)互聯(lián)網(wǎng)公司,有個(gè)幾百萬(wàn)用戶量,日活用戶有幾十萬(wàn),比之前的公司技術(shù)挑戰(zhàn)多一些,用的技術(shù)也更多一些,那么你就可以去了。

只要你每一步跳槽,都比之前好,都讓自己有進(jìn)步,那么整體的大方向就是沒(méi)錯(cuò)的。

也許你先進(jìn)一個(gè)創(chuàng)業(yè)型互聯(lián)網(wǎng)公司,然后下一家就可以進(jìn)入一個(gè)市值幾十億美金的上市互聯(lián)網(wǎng)公司,再下一步就可以進(jìn)入BAT。

在這個(gè)階段我見(jiàn)過(guò)很多人犯的最大的錯(cuò)誤就是:老是覺(jué)得自己剛學(xué)了一點(diǎn)東西,就必須立馬進(jìn)大公司。

這些同學(xué)往往心態(tài)著急的不行,而忽略了自己的學(xué)歷、背景、經(jīng)驗(yàn)導(dǎo)致了起點(diǎn)較低。能立馬進(jìn)BAT當(dāng)然很好,但是有時(shí)候機(jī)緣巧合緣分沒(méi)到,進(jìn)不去也正常。

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

(5)不斷提升自己,最后進(jìn)入BAT

一旦你開(kāi)始做到跳槽進(jìn)入一家比之前更好的公司,有更高的技術(shù)挑戰(zhàn),那么公司本身的技術(shù)挑戰(zhàn)就會(huì)促使你快速成長(zhǎng),還是舉個(gè)例子吧。

比如說(shuō)你本來(lái)就在做傳統(tǒng)軟件的開(kāi)發(fā),用的都是單塊系統(tǒng)涉及的一些技術(shù),就是簡(jiǎn)單的spring mvc、spring、mybatis等技術(shù)做CRUD的業(yè)務(wù)開(kāi)發(fā)。

但是呢,你通過(guò)追求卓越,自己業(yè)余不停的學(xué)習(xí)技術(shù),然后對(duì)自己負(fù)責(zé)的一些模塊多設(shè)立了一些技術(shù)挑戰(zhàn),自己構(gòu)思了很多更高挑戰(zhàn)的場(chǎng)景下,可以給自己的模塊加入哪些更高階的技術(shù)。

接著你帶著自己學(xué)習(xí)的一些技術(shù),還有積累的一些實(shí)踐經(jīng)驗(yàn)和思考,進(jìn)入了一家創(chuàng)業(yè)型互聯(lián)網(wǎng)公司。

這家公司的好處就在于,互聯(lián)網(wǎng)公司技術(shù)氛圍更好,比如zookeeper、redis、rocketmq、sharding-jdbc,等各種技術(shù),在公司生產(chǎn)環(huán)境的系統(tǒng)里,都有落地和使用。

那么你此時(shí)是不是就不用停留于一些技術(shù)挑戰(zhàn)的構(gòu)思,可以開(kāi)始真正做一些有點(diǎn)技術(shù)挑戰(zhàn)的工作了。

但是,此時(shí)你還是需要繼續(xù)不停的學(xué)習(xí)技術(shù),學(xué)習(xí)更多的架構(gòu)上需要的技術(shù),深入的學(xué)習(xí)技術(shù),同時(shí)積累實(shí)踐經(jīng)驗(yàn)。

然后帶著這份工作經(jīng)歷,同時(shí)加上你不斷加強(qiáng)的技術(shù)學(xué)習(xí),你進(jìn)入了一家比如30億美金估值的獨(dú)角獸公司。

這家公司有2000萬(wàn)用戶,日活用戶達(dá)到百萬(wàn)級(jí),高峰并發(fā)量可以過(guò)萬(wàn),每天數(shù)據(jù)庫(kù)里日增數(shù)據(jù)量達(dá)到了數(shù)十萬(wàn)。

此時(shí)你開(kāi)始真正接觸一些所謂的:高并發(fā)、高可用、高性能、海量數(shù)據(jù)的實(shí)際處理。

基于你開(kāi)發(fā)的業(yè)務(wù)系統(tǒng),你開(kāi)始更多的實(shí)踐,同時(shí)你還對(duì)各種涉及到的技術(shù)有了更加深入的研究,比如對(duì)一些核心中間件系統(tǒng)進(jìn)行了源碼級(jí)別的閱讀和研究。

最后你終于等到一個(gè)機(jī)會(huì),BAT里某家公司讓你去面試,經(jīng)歷了四五輪面試之后,對(duì)方給了你一個(gè)offer,是年薪40萬(wàn)的高級(jí)Java工程師的職位。

然后你進(jìn)去之后,可以在最頂尖的互聯(lián)網(wǎng)公司里學(xué)習(xí)開(kāi)發(fā)流程、規(guī)范、架構(gòu),接觸到最大規(guī)模的用戶量,每天都有解決不完的技術(shù)挑戰(zhàn),在這個(gè)過(guò)程中,你又可以繼續(xù)成長(zhǎng)。

最后可能你再次跳槽,就可以進(jìn)入TMD中某一家,拿下技術(shù)專家的offer,在大公司里拿下技術(shù)專家的職位,帶一個(gè)團(tuán)隊(duì),達(dá)到人生第一個(gè)巔峰。

接著你再跳槽,可能一些創(chuàng)業(yè)公司就開(kāi)始挖你去做一些技術(shù)管理層。

大家別以為這個(gè)僅僅是筆者捏造的一個(gè)故事,在筆者指導(dǎo)過(guò)的同學(xué)中,確實(shí)有同學(xué)按照這個(gè)路線,實(shí)現(xiàn)了人生的逆襲!

(6)最后的寄語(yǔ)

最后,送大家一句話:九層之臺(tái),始于壘土;千里之行,始于足下。

這里面最難的就是開(kāi)始的那一步,也就是大量的人都停留在一些完全沒(méi)太多技術(shù)含量的技術(shù)工作的情況下,這個(gè)時(shí)候是最難熬的。

其實(shí)只要能把第一步走好,自己拼命的積累技術(shù),努力跟其他工程師競(jìng)爭(zhēng),技術(shù)遠(yuǎn)超跟自己同情況的其他工程師,那么你就有機(jī)會(huì)率先脫離這種困境,開(kāi)始慢慢第二步,第三步。

到了后面,就是讓公司的技術(shù)挑戰(zhàn)push你不斷努力和進(jìn)步,最后進(jìn)入BAT這類一線互聯(lián)網(wǎng)公司。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容