這篇文章,跟大家聊一聊很多很多很多人問(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公司里工作。
這些同學(xué)可能對(duì)自己的技術(shù)成長(zhǎng),職業(yè)發(fā)展感到非常的迷茫,自己有點(diǎn)追求,也想去一下大廠,但是又不知道怎么規(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ì)自己何去何從很迷茫。
如有有收獲,喜歡小編的可以關(guān)注小編同時(shí)也歡迎大家加入小編的Java交流群851531810,逆襲BATJ.。..。..。..
有一些同學(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ò)一些書,簡(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)追求卓越,自己設(shè)立技術(shù)挑戰(zhàn)
通常來(lái)說(shuō),我個(gè)人站在公司角度是很反對(duì)架構(gòu)的過(guò)度設(shè)計(jì)的,因?yàn)槠桨桌速M(fèi)很多時(shí)間,而且很多架構(gòu)過(guò)度復(fù)雜沒(méi)有必要。
但是如果是站在個(gè)人的職業(yè)發(fā)展角度而言,那么你的leader必須要有對(duì)技術(shù)追求卓越的思維?;蛘吣闶莑eader的話,就得有對(duì)你的團(tuán)隊(duì)技術(shù)追求卓越的品質(zhì)。
什么叫追求卓越呢?
舉個(gè)例子,現(xiàn)在你開(kāi)發(fā)了一款辦公自動(dòng)化系統(tǒng),服務(wù)了某個(gè)公司,幾百人在用,那么技術(shù)一般,就是一個(gè)單塊系統(tǒng),直接Spring MVC + Spring + MyBatis就搞定了。大家都做著沒(méi)意思。
好,現(xiàn)在leader為了大家的幸福和未來(lái),咬咬牙說(shuō):
Leader
兄弟們,現(xiàn)在系統(tǒng)滿足公司的發(fā)展了,但是我們不如來(lái)大膽的追求一下卓越。
兄弟們
領(lǐng)導(dǎo)你是啥意思?。??
Leader
這樣,咱們首先為了提高系統(tǒng)的開(kāi)發(fā)效率,避免30個(gè)兄弟開(kāi)發(fā)一個(gè)單塊系統(tǒng)效率太低,我們來(lái)實(shí)踐一把最流行的微服務(wù)架構(gòu)吧。
咱們一起來(lái)把系統(tǒng)重構(gòu)成微服務(wù)的架構(gòu),把spring cloud整套東西都用進(jìn)去。
兄弟們
(認(rèn)真聽(tīng)著)
Leader
咱們先得做技術(shù)調(diào)研,小A你來(lái)研究研究Spring Cloud核心技術(shù)組件,小B你來(lái)研究研究配置中心,小C你來(lái)研究研究服務(wù)鏈路追蹤,等等。
大家分頭行動(dòng),都開(kāi)始學(xué)起來(lái)新技術(shù)。但是呢,咱們平時(shí)已經(jīng)很忙了,要是占用工作時(shí)間搞這個(gè),老板會(huì)罵人,大家看,每個(gè)人每天額外加班抽2小時(shí)一起來(lái)搞一下,怎么樣?
兄弟們
領(lǐng)導(dǎo),為了大家的幸福,那肯定得趕緊上新技術(shù)啊,大家都學(xué)點(diǎn)新東西。
最后大家辛苦了2個(gè)月,一起把系統(tǒng)重構(gòu)成了整套的微服務(wù)架構(gòu),每個(gè)人都學(xué)到了東西,領(lǐng)導(dǎo)也學(xué)到了微服務(wù)整體架構(gòu)設(shè)計(jì)的能力。
Leader
兄弟們,還想不想繼續(xù)為未來(lái)的幸福努力一下?
兄弟們
一切都聽(tīng)領(lǐng)導(dǎo)安排。
Leader
現(xiàn)在這破系統(tǒng)就幾百人用,忒沒(méi)意思了,咱們來(lái)大膽想象,假如說(shuō)以后這個(gè)系統(tǒng)要做成SaaS云產(chǎn)品,會(huì)有幾百個(gè)公司來(lái)用,有幾萬(wàn)人,甚至幾十萬(wàn)人同時(shí)使用一套后臺(tái)系統(tǒng)。大伙想想,那時(shí)會(huì)怎么樣?
兄弟們
貧窮限制了我的想象力。。。。
Leader
那小A你去根據(jù)現(xiàn)在系統(tǒng)的訪問(wèn)量估算一下,如果有幾十萬(wàn)人用,系統(tǒng)每天的并發(fā)量會(huì)有多少,數(shù)據(jù)庫(kù)能不能支撐住,需要用哪些高并發(fā)的技術(shù)來(lái)支撐?
小B,你去調(diào)研一下,如果有幾十萬(wàn)人用,我們會(huì)存儲(chǔ)多少數(shù)據(jù)量,性能會(huì)有多差,怎么支撐海量數(shù)據(jù)存儲(chǔ)?然后看看用什么技術(shù)來(lái)支撐一下?
兄弟們
好,領(lǐng)導(dǎo)一句話,上刀山、下火海。
幾個(gè)月后,大家研發(fā)了一套系統(tǒng),完成了測(cè)試,系統(tǒng)集成了緩存集群、MQ集群、分庫(kù)分表技術(shù),還有很多其他的一些東西。
這個(gè)時(shí)候領(lǐng)導(dǎo)就想辦法了,能不能跟老板建議一下,咱們就把產(chǎn)品做成SaaS云的模式呢?然后是不是可以就把這套系統(tǒng)給部署到生產(chǎn)環(huán)境里去?
到此為止,就通過(guò)一個(gè)例子,給大家闡述了一下,自己在公司里,如何通過(guò)想辦法不斷的追求系統(tǒng)的卓越,提高研發(fā)效率,支撐也許可能會(huì)存在的更高的并發(fā)量,更多的數(shù)據(jù)量,盡可能把系統(tǒng)做的更好一些。
多想想為了解決自己設(shè)想的一些技術(shù)挑戰(zhàn),如何盡可能把一些業(yè)界常用的技術(shù)都學(xué)習(xí)一下,比如緩存、消息、分布式、微服務(wù)、大數(shù)據(jù),等等。
如有有收獲,喜歡小編的可以關(guān)注小編同時(shí)也歡迎大家加入小編的Java交流群851531810,逆襲BATJ.。..。..。..
然后都盡可能進(jìn)行相關(guān)的實(shí)踐,積累相關(guān)的項(xiàng)目經(jīng)驗(yàn)。
實(shí)際每個(gè)人在落地的這個(gè)過(guò)程的時(shí)候,方式肯定是不一樣的:有的人也許人微言輕,只能對(duì)自己負(fù)責(zé)的模塊設(shè)想一些技術(shù)挑戰(zhàn),然后只能自己在本地拉一個(gè)公司代碼分支,嘗試對(duì)這些分支加入一些技術(shù),自己練習(xí)思考。
還有的人,可能是個(gè)小leader,無(wú)法左右公司產(chǎn)品發(fā)展方向,但是可以盡可能跟上級(jí)溝通,闡述自己對(duì)系統(tǒng)架構(gòu)追求卓越的一些構(gòu)想。
然后,爭(zhēng)取到一些時(shí)間,盡可能把系統(tǒng)多融入一些技術(shù),給做的好一些。
每個(gè)人都有每個(gè)人的方式,但是歸根到底一句話:如果你本身工作沒(méi)有技術(shù)挑戰(zhàn),那么盡可能多給自己設(shè)立一些挑戰(zhàn),多學(xué)一些技術(shù),多做一些嘗試和實(shí)踐。
這總是可以盡可能幫助你在一定程度上提高技術(shù),擴(kuò)展技術(shù)知識(shí)的。
在這個(gè)階段,我見(jiàn)過(guò)最多的人犯的最大的一個(gè)錯(cuò)誤就是:覺(jué)得自己這樣倒騰一些技術(shù)是沒(méi)用的,沒(méi)有實(shí)際的真正的經(jīng)驗(yàn)。
然后他們著急忙慌,心浮氣躁,自怨自艾,總想著必須得先進(jìn)一個(gè)好的公司,才能鍛煉技術(shù)。
實(shí)際上,這是一種很浮躁的想法,你要進(jìn)好的公司鍛煉,你必須先打磨一下自己的技術(shù),然后才能有資本去一家更好的公司。
如有有收獲,喜歡小編的可以關(guān)注小編同時(shí)也歡迎大家加入小編的Java交流群851531810,逆襲BATJ.。..。..。..
(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)公司。
-
工程師
+關(guān)注
關(guān)注
59文章
1573瀏覽量
68669 -
JAVA
+關(guān)注
關(guān)注
19文章
2976瀏覽量
105222
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論