這篇文章,跟大家聊一聊很多很多很多人問我的一個問題:中小公司的Java工程師應(yīng)該如何規(guī)劃準(zhǔn)備,才能跳槽進(jìn)入BAT這類一線互聯(lián)網(wǎng)公司?
之所以我用了三個 “很多” 來形容這個問題,是因?yàn)閷?shí)在這個問題太普遍了,因?yàn)閲鴥?nèi)Java工程師至少好幾十萬,但是在國內(nèi)互聯(lián)網(wǎng)大廠里干過的碼農(nóng)可能也就十分之一,或者五分之一的比例。
所以,其實(shí)這個也是符合28法則的,少部分人在大廠里干過,發(fā)展的很好。但是大部分人還是在中小型公司,或者外包類傳統(tǒng)IT公司里工作。
這些同學(xué)可能對自己的技術(shù)成長,職業(yè)發(fā)展感到非常的迷茫,自己有點(diǎn)追求,也想去一下大廠,但是又不知道怎么規(guī)劃。
同樣,也指導(dǎo)過很多同學(xué)的職業(yè)發(fā)展規(guī)劃,看過大量的同學(xué)不順利的職業(yè)發(fā)展,所以打算從我個人的角度來聊聊這個問題:中小公司的同學(xué)應(yīng)該如何一步一步實(shí)現(xiàn)逆襲進(jìn)入BAT。
我相信以下情形很多同學(xué)應(yīng)該都有類似體會:一直徘徊在各種中小公司里開發(fā)一些沒技術(shù)難度的Java系統(tǒng),主要就是CRUD。
哪怕是用了用MQ、緩存、分庫分表,但是也沒什么并發(fā)量,數(shù)據(jù)量也不算特別大,自己的技術(shù)成長極為緩慢。
然后就是三五年,七八年,甚至十多年,職業(yè)發(fā)展和技術(shù)水平都停滯在這個狀態(tài),無法有更進(jìn)一步的發(fā)展。
隨著現(xiàn)在寒冬到來,到處裁員,中年碼農(nóng)的危機(jī),加不動班,體力越來越差,孩子壓力越來越大,對自己何去何從很迷茫。
如有有收獲,喜歡小編的可以關(guān)注小編同時也歡迎大家加入小編的Java交流群851531810,逆襲BATJ.。..。..。..
有一些同學(xué)是一直徘徊在那種中小型互聯(lián)網(wǎng)公司里碰到上述情況,有一些同學(xué)是在一些外包類的IT公司里碰到上述情況。
(2)你的技術(shù)為啥十年八年都無法進(jìn)步?
先來搞清楚一個問題,你的技術(shù)到底為什么十年八年都無法進(jìn)步?
拆解一下,你的能力集中在哪幾塊:
技術(shù)廣度
對MQ、緩存、NoSQL、大數(shù)據(jù)、高并發(fā)、高可用、微服務(wù),等一系列的相關(guān)技術(shù)都有一定的了解,熟悉常見功能
在自己的項(xiàng)目里落地使用過,有一定的技術(shù)使用經(jīng)驗(yàn)
這可以解釋為技術(shù)廣度。
技術(shù)深度
讀過Kafka的底層源碼?
對消息中間件的架構(gòu)設(shè)計(jì)思想有深刻的理解?
對分布式事務(wù)框架/中間件的架構(gòu)設(shè)計(jì)有過研究?
在每秒百萬并發(fā)場景下做過底層系統(tǒng)的深入優(yōu)化和故障處理?
如果你有類似這種過人之處,那么你才能說你有某些技術(shù)深度。
項(xiàng)目經(jīng)驗(yàn)
你有沒有整體負(fù)責(zé)過幾億注冊用戶,幾千萬日活用戶的大規(guī)模、高并發(fā)、分布式、高可用、高復(fù)雜度的系統(tǒng)架構(gòu)設(shè)計(jì)?
或者你負(fù)責(zé)的一直都是那種公司內(nèi)部使用的,幾十個人用的OA系統(tǒng),CRM系統(tǒng)?
這些就是你的項(xiàng)目經(jīng)驗(yàn)
團(tuán)隊(duì)管理
你在互聯(lián)網(wǎng)公司里帶過20的團(tuán)隊(duì)?
或者你在一個傳統(tǒng)IT公司里帶過3個人的小組?
這都是你的團(tuán)隊(duì)管理經(jīng)驗(yàn)。
拆解過后,再來看看,如果你在一些小型互聯(lián)網(wǎng)公司,或者是做一些傳統(tǒng)軟件開發(fā),為什么技術(shù)無法進(jìn)步?
其實(shí)道理很簡單,可能你的公司推出了一款A(yù)PP,但是不好意思,用戶量總共就100萬,日活用戶就10萬人。
那你覺得你的系統(tǒng)有技術(shù)挑戰(zhàn)嗎?沒有。
既然沒有技術(shù)挑戰(zhàn),你把系統(tǒng)搞那么復(fù)雜干嘛?或者你的架構(gòu)師搞那么復(fù)雜干嘛?不需要。
大家簡單做一做,主要crud寫一下功能,最多現(xiàn)在spring cloud流行了,上一下拆成微服務(wù)的就夠了。
然后這套系統(tǒng)就穩(wěn)定支撐你公司的業(yè)務(wù)了,那你接觸不到很大的技術(shù)挑戰(zhàn),所以技術(shù)進(jìn)入停滯狀態(tài),不是很正常么?
或者你做一些傳統(tǒng)的軟件開發(fā),比如說建筑類軟件,辦公自動化軟件,類似這種的。總共就幾十個人用一個系統(tǒng),或者幾百人用,那你就更是如此了。
可能都不需要spring cloud,直接單塊系統(tǒng),單機(jī)部署,就是在里面填充業(yè)務(wù)代碼就好了。
所以根本原因,就是很多同學(xué)平時的工作環(huán)境,他沒有什么技術(shù)挑戰(zhàn),所以只要把系統(tǒng)技術(shù)做的簡單一些,低成本就可以支撐公司業(yè)務(wù)了,那既然這樣,當(dāng)然技術(shù)就進(jìn)展很緩慢了。
然后可能你工作了八年十年,技術(shù)廣度還可以,對流行的技術(shù)自己都看過一些書,簡單用過,玩過demo。
你的項(xiàng)目經(jīng)驗(yàn)積累了不少,但是都是一些各個傳統(tǒng)領(lǐng)域的系統(tǒng)業(yè)務(wù)理解較為深刻,沒有極高技術(shù)挑戰(zhàn)的項(xiàng)目經(jīng)驗(yàn)。
有的人工作時間長,可能就是帶過一些人,有過一些帶團(tuán)隊(duì)的經(jīng)驗(yàn),能管人。
大概就是如此了,每次換工作,還是只能換類似的公司,干類似的技術(shù),依然沒有進(jìn)步,依然是類似的項(xiàng)目經(jīng)驗(yàn)。
所以大伙兒先梳理清楚,迷茫的根源究竟在哪里。
(3)追求卓越,自己設(shè)立技術(shù)挑戰(zhàn)
通常來說,我個人站在公司角度是很反對架構(gòu)的過度設(shè)計(jì)的,因?yàn)槠桨桌速M(fèi)很多時間,而且很多架構(gòu)過度復(fù)雜沒有必要。
但是如果是站在個人的職業(yè)發(fā)展角度而言,那么你的leader必須要有對技術(shù)追求卓越的思維。或者你是leader的話,就得有對你的團(tuán)隊(duì)技術(shù)追求卓越的品質(zhì)。
什么叫追求卓越呢?
舉個例子,現(xiàn)在你開發(fā)了一款辦公自動化系統(tǒng),服務(wù)了某個公司,幾百人在用,那么技術(shù)一般,就是一個單塊系統(tǒng),直接Spring MVC + Spring + MyBatis就搞定了。大家都做著沒意思。
好,現(xiàn)在leader為了大家的幸福和未來,咬咬牙說:
Leader
兄弟們,現(xiàn)在系統(tǒng)滿足公司的發(fā)展了,但是我們不如來大膽的追求一下卓越。
兄弟們
領(lǐng)導(dǎo)你是啥意思啊??
Leader
這樣,咱們首先為了提高系統(tǒng)的開發(fā)效率,避免30個兄弟開發(fā)一個單塊系統(tǒng)效率太低,我們來實(shí)踐一把最流行的微服務(wù)架構(gòu)吧。
咱們一起來把系統(tǒng)重構(gòu)成微服務(wù)的架構(gòu),把spring cloud整套東西都用進(jìn)去。
兄弟們
(認(rèn)真聽著)
Leader
咱們先得做技術(shù)調(diào)研,小A你來研究研究Spring Cloud核心技術(shù)組件,小B你來研究研究配置中心,小C你來研究研究服務(wù)鏈路追蹤,等等。
大家分頭行動,都開始學(xué)起來新技術(shù)。但是呢,咱們平時已經(jīng)很忙了,要是占用工作時間搞這個,老板會罵人,大家看,每個人每天額外加班抽2小時一起來搞一下,怎么樣?
兄弟們
領(lǐng)導(dǎo),為了大家的幸福,那肯定得趕緊上新技術(shù)啊,大家都學(xué)點(diǎn)新東西。
最后大家辛苦了2個月,一起把系統(tǒng)重構(gòu)成了整套的微服務(wù)架構(gòu),每個人都學(xué)到了東西,領(lǐng)導(dǎo)也學(xué)到了微服務(wù)整體架構(gòu)設(shè)計(jì)的能力。
Leader
兄弟們,還想不想繼續(xù)為未來的幸福努力一下?
兄弟們
一切都聽領(lǐng)導(dǎo)安排。
Leader
現(xiàn)在這破系統(tǒng)就幾百人用,忒沒意思了,咱們來大膽想象,假如說以后這個系統(tǒng)要做成SaaS云產(chǎn)品,會有幾百個公司來用,有幾萬人,甚至幾十萬人同時使用一套后臺系統(tǒng)。大伙想想,那時會怎么樣?
兄弟們
貧窮限制了我的想象力。。。。
Leader
那小A你去根據(jù)現(xiàn)在系統(tǒng)的訪問量估算一下,如果有幾十萬人用,系統(tǒng)每天的并發(fā)量會有多少,數(shù)據(jù)庫能不能支撐住,需要用哪些高并發(fā)的技術(shù)來支撐?
小B,你去調(diào)研一下,如果有幾十萬人用,我們會存儲多少數(shù)據(jù)量,性能會有多差,怎么支撐海量數(shù)據(jù)存儲?然后看看用什么技術(shù)來支撐一下?
兄弟們
好,領(lǐng)導(dǎo)一句話,上刀山、下火海。
幾個月后,大家研發(fā)了一套系統(tǒng),完成了測試,系統(tǒng)集成了緩存集群、MQ集群、分庫分表技術(shù),還有很多其他的一些東西。
這個時候領(lǐng)導(dǎo)就想辦法了,能不能跟老板建議一下,咱們就把產(chǎn)品做成SaaS云的模式呢?然后是不是可以就把這套系統(tǒng)給部署到生產(chǎn)環(huán)境里去?
到此為止,就通過一個例子,給大家闡述了一下,自己在公司里,如何通過想辦法不斷的追求系統(tǒng)的卓越,提高研發(fā)效率,支撐也許可能會存在的更高的并發(fā)量,更多的數(shù)據(jù)量,盡可能把系統(tǒng)做的更好一些。
多想想為了解決自己設(shè)想的一些技術(shù)挑戰(zhàn),如何盡可能把一些業(yè)界常用的技術(shù)都學(xué)習(xí)一下,比如緩存、消息、分布式、微服務(wù)、大數(shù)據(jù),等等。
如有有收獲,喜歡小編的可以關(guān)注小編同時也歡迎大家加入小編的Java交流群851531810,逆襲BATJ.。..。..。..
然后都盡可能進(jìn)行相關(guān)的實(shí)踐,積累相關(guān)的項(xiàng)目經(jīng)驗(yàn)。
實(shí)際每個人在落地的這個過程的時候,方式肯定是不一樣的:有的人也許人微言輕,只能對自己負(fù)責(zé)的模塊設(shè)想一些技術(shù)挑戰(zhàn),然后只能自己在本地拉一個公司代碼分支,嘗試對這些分支加入一些技術(shù),自己練習(xí)思考。
還有的人,可能是個小leader,無法左右公司產(chǎn)品發(fā)展方向,但是可以盡可能跟上級溝通,闡述自己對系統(tǒng)架構(gòu)追求卓越的一些構(gòu)想。
然后,爭取到一些時間,盡可能把系統(tǒng)多融入一些技術(shù),給做的好一些。
每個人都有每個人的方式,但是歸根到底一句話:如果你本身工作沒有技術(shù)挑戰(zhàn),那么盡可能多給自己設(shè)立一些挑戰(zhàn),多學(xué)一些技術(shù),多做一些嘗試和實(shí)踐。
這總是可以盡可能幫助你在一定程度上提高技術(shù),擴(kuò)展技術(shù)知識的。
在這個階段,我見過最多的人犯的最大的一個錯誤就是:覺得自己這樣倒騰一些技術(shù)是沒用的,沒有實(shí)際的真正的經(jīng)驗(yàn)。
然后他們著急忙慌,心浮氣躁,自怨自艾,總想著必須得先進(jìn)一個好的公司,才能鍛煉技術(shù)。
實(shí)際上,這是一種很浮躁的想法,你要進(jìn)好的公司鍛煉,你必須先打磨一下自己的技術(shù),然后才能有資本去一家更好的公司。
如有有收獲,喜歡小編的可以關(guān)注小編同時也歡迎大家加入小編的Java交流群851531810,逆襲BATJ.。..。..。..
(4)幻想一步登天?那只是你的黃粱美夢
很多人多學(xué)了一些技術(shù),有了一些經(jīng)驗(yàn),很容易開始有點(diǎn)膨脹,老是想著一步登天,一下子就進(jìn)入BAT。
關(guān)于這個,其實(shí)是有類似的一些成功經(jīng)歷,比如有的人是大專學(xué)歷,通過自己的努力學(xué)習(xí),加上一些機(jī)緣巧合,直接一下子就從中小公司跳入了BAT。
但是就現(xiàn)實(shí)情況來看,不是每個人都一定可以一步登天,復(fù)制這個經(jīng)歷的。
在你學(xué)習(xí)了一些技術(shù),同時自己多做了一些嘗試,積累了一定的經(jīng)驗(yàn)之后,此時應(yīng)該做的是:做最壞的打算,抱最好的希望。
你完全可以去試試BAT的面試,TMD的面試,盡可能去爭取機(jī)會,但是如果沒面上也無所謂。
你可以降低期望,人只要跟自己比就好了。
比如說你現(xiàn)在在某小型的傳統(tǒng)外包軟件公司,那么接下來如果你能面進(jìn)一家小型創(chuàng)業(yè)互聯(lián)網(wǎng)公司,有個幾百萬用戶量,日活用戶有幾十萬,比之前的公司技術(shù)挑戰(zhàn)多一些,用的技術(shù)也更多一些,那么你就可以去了。
只要你每一步跳槽,都比之前好,都讓自己有進(jìn)步,那么整體的大方向就是沒錯的。
也許你先進(jìn)一個創(chuàng)業(yè)型互聯(lián)網(wǎng)公司,然后下一家就可以進(jìn)入一個市值幾十億美金的上市互聯(lián)網(wǎng)公司,再下一步就可以進(jìn)入BAT。
在這個階段我見過很多人犯的最大的錯誤就是:老是覺得自己剛學(xué)了一點(diǎn)東西,就必須立馬進(jìn)大公司。
這些同學(xué)往往心態(tài)著急的不行,而忽略了自己的學(xué)歷、背景、經(jīng)驗(yàn)導(dǎo)致了起點(diǎn)較低。能立馬進(jìn)BAT當(dāng)然很好,但是有時候機(jī)緣巧合緣分沒到,進(jìn)不去也正常。
在這個階段最需要做的,就是跟自己比,別跟別人比,只要每一次跳槽都比上一次好,公司更大,薪資更高,職位更高,技術(shù)挑戰(zhàn)更大,就可以了。
(5)不斷提升自己,最后進(jìn)入BAT
一旦你開始做到跳槽進(jìn)入一家比之前更好的公司,有更高的技術(shù)挑戰(zhàn),那么公司本身的技術(shù)挑戰(zhàn)就會促使你快速成長,還是舉個例子吧。
比如說你本來就在做傳統(tǒng)軟件的開發(fā),用的都是單塊系統(tǒng)涉及的一些技術(shù),就是簡單的spring mvc、spring、mybatis等技術(shù)做CRUD的業(yè)務(wù)開發(fā)。
但是呢,你通過追求卓越,自己業(yè)余不停的學(xué)習(xí)技術(shù),然后對自己負(fù)責(zé)的一些模塊多設(shè)立了一些技術(shù)挑戰(zhàn),自己構(gòu)思了很多更高挑戰(zhàn)的場景下,可以給自己的模塊加入哪些更高階的技術(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ù)挑戰(zhàn)的構(gòu)思,可以開始真正做一些有點(diǎn)技術(shù)挑戰(zhàn)的工作了。
但是,此時你還是需要繼續(xù)不停的學(xué)習(xí)技術(shù),學(xué)習(xí)更多的架構(gòu)上需要的技術(shù),深入的學(xué)習(xí)技術(shù),同時積累實(shí)踐經(jīng)驗(yàn)。
然后帶著這份工作經(jīng)歷,同時加上你不斷加強(qiáng)的技術(shù)學(xué)習(xí),你進(jìn)入了一家比如30億美金估值的獨(dú)角獸公司。
這家公司有2000萬用戶,日活用戶達(dá)到百萬級,高峰并發(fā)量可以過萬,每天數(shù)據(jù)庫里日增數(shù)據(jù)量達(dá)到了數(shù)十萬。
此時你開始真正接觸一些所謂的:高并發(fā)、高可用、高性能、海量數(shù)據(jù)的實(shí)際處理。
基于你開發(fā)的業(yè)務(wù)系統(tǒng),你開始更多的實(shí)踐,同時你還對各種涉及到的技術(shù)有了更加深入的研究,比如對一些核心中間件系統(tǒng)進(jìn)行了源碼級別的閱讀和研究。
最后你終于等到一個機(jī)會,BAT里某家公司讓你去面試,經(jīng)歷了四五輪面試之后,對方給了你一個offer,是年薪40萬的高級Java工程師的職位。
然后你進(jìn)去之后,可以在最頂尖的互聯(lián)網(wǎng)公司里學(xué)習(xí)開發(fā)流程、規(guī)范、架構(gòu),接觸到最大規(guī)模的用戶量,每天都有解決不完的技術(shù)挑戰(zhàn),在這個過程中,你又可以繼續(xù)成長。
最后可能你再次跳槽,就可以進(jìn)入TMD中某一家,拿下技術(shù)專家的offer,在大公司里拿下技術(shù)專家的職位,帶一個團(tuán)隊(duì),達(dá)到人生第一個巔峰。
接著你再跳槽,可能一些創(chuàng)業(yè)公司就開始挖你去做一些技術(shù)管理層。
大家別以為這個僅僅是筆者捏造的一個故事,在筆者指導(dǎo)過的同學(xué)中,確實(shí)有同學(xué)按照這個路線,實(shí)現(xiàn)了人生的逆襲!
(6)最后的寄語
最后,送大家一句話:九層之臺,始于壘土;千里之行,始于足下。
這里面最難的就是開始的那一步,也就是大量的人都停留在一些完全沒太多技術(shù)含量的技術(shù)工作的情況下,這個時候是最難熬的。
其實(shí)只要能把第一步走好,自己拼命的積累技術(shù),努力跟其他工程師競爭,技術(shù)遠(yuǎn)超跟自己同情況的其他工程師,那么你就有機(jī)會率先脫離這種困境,開始慢慢第二步,第三步。
到了后面,就是讓公司的技術(shù)挑戰(zhàn)push你不斷努力和進(jìn)步,最后進(jìn)入BAT這類一線互聯(lián)網(wǎng)公司。
-
工程師
+關(guān)注
關(guān)注
59文章
1571瀏覽量
68560 -
JAVA
+關(guān)注
關(guān)注
19文章
2972瀏覽量
104860
發(fā)布評論請先 登錄
相關(guān)推薦
評論