https://mp.weixin.qq.com/s/0G_Ab94pG0uyHZfSs9G4OQ
這篇文章仁烹,跟大家聊一聊很多很多很多人問我的一個問題:中小公司的 Java 工程師應(yīng)該如何規(guī)劃準(zhǔn)備候齿,才能跳槽進入 BAT 這類一線互聯(lián)網(wǎng)公司?
80% Java 工程師都有的迷茫
之所以我用了三個 “很多” 來形容這個問題瞳筏,是因為實在這個問題太普遍了,因為國內(nèi) Java 工程師至少好幾十萬牡昆,但是在國內(nèi)互聯(lián)網(wǎng)大廠里干過的碼農(nóng)可能也就十分之一姚炕,或者五分之一的比例摊欠。
所以,其實這個也是符合 28 法則的柱宦,少部分人在大廠里干過些椒,發(fā)展的很好。但是大部分人還是在中小型公司掸刊,或者外包類傳統(tǒng)IT公司里工作免糕。
這些同學(xué)可能對自己的技術(shù)成長,職業(yè)發(fā)展感到非常的迷茫忧侧,自己有點追求石窑,也想去一下大廠,但是又不知道怎么規(guī)劃蚓炬。
我個人在國內(nèi)幾個最大的互聯(lián)網(wǎng)公司先后有著十余年工作經(jīng)歷松逊,面試和招聘過大量各種水平的開發(fā)人員。包括初肯夏、中经宏、高級開發(fā),技術(shù)專家驯击,高級技術(shù)專家烁兰,都面過。
同樣徊都,也指導(dǎo)過很多同學(xué)的職業(yè)發(fā)展規(guī)劃沪斟,看過大量的同學(xué)不順利的職業(yè)發(fā)展,所以打算從我個人的角度來聊聊這個問題:中小公司的同學(xué)應(yīng)該如何一步一步實現(xiàn)逆襲進入 BAT碟贾。
我相信以下情形很多同學(xué)應(yīng)該都有類似體會:一直徘徊在各種中小公司里開發(fā)一些沒技術(shù)難度的 Java 系統(tǒng)币喧,主要就是 CRUD。
哪怕是用了 MQ袱耽、緩存杀餐、分庫分表,但是也沒什么并發(fā)量朱巨,數(shù)據(jù)量也不算特別大史翘,自己的技術(shù)成長極為緩慢。
然后就是三五年冀续,七八年琼讽,甚至十多年,職業(yè)發(fā)展和技術(shù)水平都停滯在這個狀態(tài)洪唐,無法有更進一步的發(fā)展钻蹬。
現(xiàn)在寒冬到來,到處裁員凭需,中年碼農(nóng)的危機问欠,加不動班肝匆,體力越來越差,孩子壓力越來越大顺献,對自己何去何從很迷茫旗国。
有一些同學(xué)是一直徘徊在那種中小型互聯(lián)網(wǎng)公司里碰到上述情況,有一些同學(xué)是在一些外包類的 IT 公司里碰到上述情況注整。
你的技術(shù)為啥十年八年都無法進步能曾?
先來搞清楚一個問題,你的技術(shù)到底為什么十年八年都無法進步肿轨?拆解一下寿冕,你的能力集中在哪幾塊:
技術(shù)廣度
對 MQ、緩存萝招、NoSQL蚂斤、大數(shù)據(jù)翘簇、高并發(fā)吆倦、高可用伍宦、微服務(wù)芋齿,等一系列的相關(guān)技術(shù)都有一定的了解价淌,熟悉常見功能 在自己的項目里落地使用過福侈,有一定的技術(shù)使用經(jīng)驗填具,這可以解釋為技術(shù)廣度憨愉。
技術(shù)深度
讀過 Kafka 的底層源碼兼吓?對消息中間件的架構(gòu)設(shè)計思想有深刻的理解臂港?對分布式事務(wù)框架/中間件的架構(gòu)設(shè)計有過研究?在每秒百萬并發(fā)場景下做過底層系統(tǒng)的深入優(yōu)化和故障處理视搏?
如果你有類似這種過人之處审孽,那么你才能說你有某些技術(shù)深度。
項目經(jīng)驗
你有沒有整體負(fù)責(zé)過幾億注冊用戶浑娜,幾千萬日活用戶的大規(guī)模佑力、高并發(fā)、分布式筋遭、高可用打颤、高復(fù)雜度的系統(tǒng)架構(gòu)設(shè)計?
或者你負(fù)責(zé)的一直都是那種公司內(nèi)部使用的漓滔,幾十個人用的 OA 系統(tǒng)编饺,CRM 系統(tǒng)?這些就是你的項目經(jīng)驗响驴。
團隊管理
你在互聯(lián)網(wǎng)公司里帶過 20 人的團隊透且? 或者你在一個傳統(tǒng) IT 公司里帶過 3 個人的小組? 這都是你的團隊管理經(jīng)驗豁鲤。
拆解過后石蔗,再來看看罕邀,如果你在一些小型互聯(lián)網(wǎng)公司,或者是做一些傳統(tǒng)軟件開發(fā)养距,為什么技術(shù)無法進步?
其實道理很簡單日熬,可能你的公司推出了一款 App棍厌,但是不好意思,用戶量總共就 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ù)進入停滯狀態(tài),不是很正常么别威?
或者你做一些傳統(tǒng)的軟件開發(fā)躯舔,比如說建筑類軟件,辦公自動化軟件省古,類似這種的粥庄。總共就幾十個人用一個系統(tǒng)衫樊,或者幾百人用科侈,那你就更是如此了。
可能都不需要 Spring Cloud臀栈,直接單塊系統(tǒng),單機部署姑躲,就是在里面填充業(yè)務(wù)代碼就好了睡扬。
所以根本原因黍析,就是很多同學(xué)平時的工作環(huán)境阐枣,他沒有什么技術(shù)挑戰(zhàn)蔼两,所以只要把系統(tǒng)技術(shù)做的簡單一些,低成本就可以支撐公司業(yè)務(wù)了妙啃,那既然這樣揖赴,當(dāng)然技術(shù)就進展很緩慢了储笑。
然后可能你工作了八年十年突倍,技術(shù)廣度還可以羽历,對流行的技術(shù)自己都看過一些書秕磷,簡單用過澎嚣,玩過 Demo瘟芝。
你的項目經(jīng)驗積累了不少锌俱,但是都是一些各個傳統(tǒng)領(lǐng)域的系統(tǒng),業(yè)務(wù)理解較為深刻磕洪,沒有極高技術(shù)挑戰(zhàn)的項目經(jīng)驗析显。
有的人工作時間長叫榕,可能就是帶過一些人,有過一些帶團隊的經(jīng)驗括丁,能管人史飞。
大概就是如此了构资,每次換工作吐绵,還是只能換類似的公司己单,干類似的技術(shù)纹笼,依然沒有進步廷痘,依然是類似的項目經(jīng)驗笋额。
所以大伙兒先梳理清楚鳞陨,迷茫的根源究竟在哪里厦滤。
求卓越掏导,自己設(shè)立技術(shù)挑戰(zhàn)
通常來說趟咆,我個人站在公司角度是很反對架構(gòu)的過度設(shè)計的鳞贷,因為平白浪費很多時間搀愧,而且很多架構(gòu)過度復(fù)雜沒有必要咱筛。
但是如果是站在個人的職業(yè)發(fā)展角度而言迅箩,那么你的 Leader 必須要有對技術(shù)追求卓越的思維饲趋「菝常或者你是 Leader 的話,就得有對你的團隊技術(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)效率太低,我們來實踐一把最流行的微服務(wù)架構(gòu)吧延欠。
咱們一起來把系統(tǒng)重構(gòu)成微服務(wù)的架構(gòu)由捎,把 Spring Cloud 整套東西都用進去狞玛。
兄弟們:(認(rèn)真聽著)
Leader:咱們先得做技術(shù)調(diào)研,小 A 你來研究研究 Spring Cloud 核心技術(shù)組件硬鞍,小 B 你來研究研究配置中心,小 C 你來研究研究服務(wù)鏈路追蹤蹬音,等等著淆。
大家分頭行動永部,都開始學(xué)起來新技術(shù)懦砂。但是呢荞膘,咱們平時已經(jīng)很忙了羽资,要是占用工作時間搞這個屠升,老板會罵人,大家看微服,每個人每天額外加班抽 2 小時一起來搞一下,怎么樣辛孵?
**兄弟們:****領(lǐng)導(dǎo),為了大家的幸福冶匹,那肯定得趕緊上新技術(shù)啊嚼隘,大家都學(xué)點新東西谤狡。
最后大家辛苦了 2 個月墓懂,一起把系統(tǒng)重構(gòu)成了整套的微服務(wù)架構(gòu)捕仔,每個人都學(xué)到了東西,領(lǐng)導(dǎo)也學(xué)到了微服務(wù)整體架構(gòu)設(shè)計的能力斜做。
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)的實踐匹耕,積累相關(guān)的項目經(jīng)驗。
實際每個人在經(jīng)歷落地的這個過程的時候荠雕,方式肯定是不一樣的:有的人也許人微言輕稳其,只能對自己負(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ù)知識的。
在這個階段金拒,我見過最多的人犯的最大的一個錯誤就是:覺得自己這樣倒騰一些技術(shù)是沒用的蝉仇,沒有實際的真正的經(jīng)驗。
然后他們著急忙慌殖蚕,心浮氣躁轿衔,自怨自艾,總想著必須得先進一個好的公司睦疫,才能鍛煉技術(shù)害驹。
實際上,這是一種很浮躁的想法蛤育,你要進好的公司鍛煉宛官,你必須先打磨一下自己的技術(shù),然后才能有資本去一家更好的公司瓦糕。
幻想一步登天底洗?那只是你的黃粱美夢
很多人多學(xué)了一些技術(shù),有了一些經(jīng)驗咕娄,很容易開始有點膨脹亥揖,老是想著一步登天,一下子就進入 BAT圣勒。
關(guān)于這個费变,其實是有類似的一些成功經(jīng)歷,比如有的人是大專學(xué)歷圣贸,通過自己的努力學(xué)習(xí)挚歧,加上一些機緣巧合,直接一下子就從中小公司跳入了 BAT吁峻。
但是就現(xiàn)實情況來看滑负,不是每個人都一定可以一步登天在张,復(fù)制這個經(jīng)歷的。
在你學(xué)習(xí)了一些技術(shù)矮慕,同時自己多做了一些嘗試瞧掺,積累了一定的經(jīng)驗之后,此時應(yīng)該做的是:做最壞的打算凡傅,抱最好的希望。
你完全可以去試試 BAT 的面試肠缔,TMD 的面試夏跷,盡可能去爭取機會,但是如果沒面上也無所謂明未。
你可以降低期望槽华,人只要跟自己比就好了。
比如說你現(xiàn)在在某小型的傳統(tǒng)外包軟件公司趟妥,那么接下來如果你能面進一家小型創(chuàng)業(yè)互聯(lián)網(wǎng)公司猫态,有個幾百萬用戶量,日活用戶有幾十萬披摄,比之前的公司技術(shù)挑戰(zhàn)多一些亲雪,用的技術(shù)也更多一些,那么你就可以去了疚膊。
只要你每一步跳槽义辕,都比之前好,都讓自己有進步寓盗,那么整體的大方向就是沒錯的灌砖。
也許你先進一個創(chuàng)業(yè)型互聯(lián)網(wǎng)公司,然后下一家就可以進入一個市值幾十億美金的上市互聯(lián)網(wǎng)公司傀蚌,再下一步就可以進入 BAT基显。
在這個階段我見過很多人犯的最大的錯誤就是:老是覺得自己剛學(xué)了一點東西,就必須立馬進大公司善炫。
這些同學(xué)往往心態(tài)著急的不行撩幽,而忽略了自己的學(xué)歷、背景箩艺、經(jīng)驗導(dǎo)致了起點較低摸航。能立馬進 BAT 當(dāng)然很好,但是有時候機緣巧合緣分沒到舅桩,進不去也正常酱虎。
在這個階段最需要做的,就是跟自己比擂涛,別跟別人比读串,只要每一次跳槽都比上一次好聊记,公司更大,薪資更高恢暖,職位更高排监,技術(shù)挑戰(zhàn)更大,就可以了杰捂。
不斷提升自己舆床,最后進入 BAT
一旦你開始做到跳槽進入一家比之前更好的公司,有更高的技術(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ù),還有積累的一些實踐經(jīng)驗和思考趾浅,進入了一家創(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)思,可以開始真正做一些有點技術(shù)挑戰(zhàn)的工作了崔步。
但是稳吮,此時你還是需要繼續(xù)不停的學(xué)習(xí)技術(shù),學(xué)習(xí)更多的架構(gòu)上需要的技術(shù)井濒,深入的學(xué)習(xí)技術(shù)灶似,同時積累實踐經(jīng)驗列林。
然后帶著這份工作經(jīng)歷,同時加上你不斷加強的技術(shù)學(xué)習(xí)酪惭,你進入了一家比如 30 億美金估值的獨角獸公司希痴。
這家公司有 2000 萬用戶,日活用戶達到百萬級春感,高峰并發(fā)量可以過萬砌创,每天數(shù)據(jù)庫里日增數(shù)據(jù)量達到了數(shù)十萬。
此時你開始真正接觸一些所謂的:高并發(fā)鲫懒、高可用嫩实、高性能、海量數(shù)據(jù)的實際處理刀疙。
基于你開發(fā)的業(yè)務(wù)系統(tǒng),你開始更多的實踐扫倡,同時你還對各種涉及到的技術(shù)有了更加深入的研究谦秧,比如對一些核心中間件系統(tǒng)進行了源碼級別的閱讀和研究。
最后你終于等到一個機會撵溃,BAT 里某家公司讓你去面試疚鲤,經(jīng)歷了四五輪面試之后,對方給了你一個 Offer缘挑,是年薪 40 萬的高級 Java 工程師的職位集歇。
然后你進去之后,可以在最頂尖的互聯(lián)網(wǎng)公司里學(xué)習(xí)開發(fā)流程语淘、規(guī)范诲宇、架構(gòu),接觸到最大規(guī)模的用戶量惶翻,每天都有解決不完的技術(shù)挑戰(zhàn)姑蓝,在這個過程中,你又可以繼續(xù)成長吕粗。
最后可能你再次跳槽纺荧,就可以進入 TMD 中某一家,拿下技術(shù)專家的 Offer颅筋,在大公司里拿下技術(shù)專家的職位宙暇,帶一個團隊,達到人生第一個巔峰议泵。
接著你再跳槽占贫,可能一些創(chuàng)業(yè)公司就開始挖你去做一些技術(shù)管理層。
大家別以為這個僅僅是筆者捏造的一個故事先口,在筆者指導(dǎo)過的同學(xué)中靶剑,確實有同學(xué)按照這個路線蜻拨,實現(xiàn)了人生的逆襲!
最后的寄語
最后桩引,送大家一句話:九層之臺缎讼,始于壘土;千里之行坑匠,始于足下血崭。
這里面最難的就是開始的那一步,也就是大量的人都停留在一些完全沒太多技術(shù)含量的技術(shù)工作的情況下厘灼,這個時候是最難熬的夹纫。
其實只要能把第一步走好,自己拼命的積累技術(shù)设凹,努力跟其他工程師競爭舰讹,技術(shù)遠超跟自己同情況的其他工程師,那么你就有機會率先脫離這種困境闪朱,開始慢慢第二步月匣,第三步。
到了后面奋姿,就是讓公司的技術(shù)挑戰(zhàn) Push 你不斷努力和進步锄开,最后進入 BAT 這類一線互聯(lián)網(wǎng)公司。
作者:中華石杉
編輯:陶家龍称诗、孫淑娟
出處:轉(zhuǎn)載自微信公眾號:石杉的架構(gòu)筆記(ID:shishan100)
中華石杉:十余年 BAT 架構(gòu)經(jīng)驗萍悴,一線互聯(lián)網(wǎng)公司技術(shù)總監(jiān)。帶領(lǐng)上百人團隊開發(fā)過多個億級流量高并發(fā)系統(tǒng)≡⒚猓現(xiàn)將多年工作中積累下的研究手稿癣诱、經(jīng)驗總結(jié)整理成文,傾囊相授袜香。微信公眾號:石杉的架構(gòu)筆記(ID:shishan100)狡刘。