同樣是搞Java,年薪15W和50W的到底差在哪里?

在這個(gè)IT系統(tǒng)動(dòng)輒就是上億流量的時(shí)代,Java作為大數(shù)據(jù)時(shí)代應(yīng)用最廣泛的語(yǔ)言,誕生了一批又一批的新技術(shù),包括HBase、Hadoop、MQ、Netty、SpringCloud等等 。

一些獨(dú)角獸公司以及騰訊、阿里、百度、網(wǎng)易等知名大廠對(duì)Java人才的需求量連年升級(jí),有2年工作經(jīng)驗(yàn)的優(yōu)秀程序員能輕松達(dá)到30w+的水平,但與此同時(shí)對(duì)人才的要求也越來(lái)越高

比如,大廠的面試官經(jīng)常會(huì)以如下句式來(lái)詢問(wèn):

聊一聊你對(duì)JVM的原理,如何減少Full?GC的情況?

針對(duì)高并發(fā)場(chǎng)景,如何優(yōu)化,都采用了什么技術(shù)?

相比關(guān)系型數(shù)據(jù)庫(kù),NoSQL的優(yōu)勢(shì)在哪里,你們?cè)谑裁磮?chǎng)景下會(huì)用到?

可以看到,對(duì)于社招同學(xué)而言(特別是有2~5年工作經(jīng)驗(yàn)的同學(xué)),不僅僅會(huì)問(wèn)一些編程語(yǔ)言、設(shè)計(jì)模式等基礎(chǔ)問(wèn)題,還要對(duì)一些項(xiàng)目有深入的實(shí)戰(zhàn)經(jīng)驗(yàn)。

但現(xiàn)實(shí)卻是,很多同學(xué)在技術(shù)生涯最初幾年都會(huì)沉浸在業(yè)務(wù)開發(fā)中,忽視了對(duì)系統(tǒng)知識(shí)的梳理和技術(shù)視野的擴(kuò)展。日復(fù)一日,導(dǎo)致很多同學(xué)就以為這就是技術(shù)的全部,同時(shí)在重復(fù)的體力勞動(dòng)中也喪失了對(duì)技術(shù)細(xì)節(jié)的深入探討。

每個(gè)程序員都追求“成就感”,而獲得成就感最好的方式就是自己在技術(shù)上的突破。

技術(shù)的突破需要依賴業(yè)務(wù)場(chǎng)景的需求和自身刻意的規(guī)劃學(xué)習(xí),二者缺一不可,但前者是機(jī)會(huì),往往不是自己能完全把控的,如果在自己工作中沒(méi)有實(shí)踐場(chǎng)景,最好的辦法就是系統(tǒng)的學(xué)習(xí)與梳理,為自己制定一個(gè)不同時(shí)間段的發(fā)展道路,待機(jī)會(huì)來(lái)臨時(shí)就能一展身手。

以工作前5年的規(guī)劃為例,至少需要突破三個(gè)層次:

對(duì)代碼精益求精

最開始工作的時(shí)候,我們會(huì)抱怨業(yè)務(wù)需求對(duì)技術(shù)沒(méi)挑戰(zhàn),覺(jué)得在學(xué)校學(xué)到的這么多知識(shí)卻沒(méi)有用武之地。

實(shí)質(zhì)上這是忽略了技術(shù)開發(fā)的本質(zhì),技術(shù)開發(fā)是一個(gè)工程項(xiàng)目,而工程項(xiàng)目的落地最重要的就是細(xì)節(jié)控制,也就是代碼的品質(zhì),比如:

代碼是否遵循了規(guī)約?接口設(shè)計(jì)的是否隨意?測(cè)試用例是否都通過(guò)?

滿屏的if-else是否可以用合理的設(shè)計(jì)模式來(lái)替代?有沒(méi)有遵循SOLID原則,KISS原則?

有沒(méi)有考慮用更合理的數(shù)據(jù)結(jié)構(gòu)和算法改變代碼的復(fù)雜性,提升運(yùn)行的性能?

代碼出bug的概率有多大,能否降低?

這是程序員的立足之本,基本是工作1年左右要達(dá)到的。在這一階段看書是比較好的提升方式,比如:《Java編程思想》、《effective java》等。但要注意的是,在看書的過(guò)程中一定要思考能否運(yùn)用書中的經(jīng)驗(yàn)來(lái)改善自己寫的代碼,運(yùn)用到實(shí)處,比如看到final和static,想想自己代碼中用的是否合理。

此外,還可以看些常用的開源框架,如果你用的是Spring框架等,那么下面一個(gè)很好的知識(shí)結(jié)構(gòu):

跳出來(lái),主動(dòng)了解技術(shù)全貌

在將基礎(chǔ)打牢之后,需要主動(dòng)突破舒適區(qū),不斷的去擴(kuò)大自己的技術(shù)視野,做到有廣度。

這一步比較難,因?yàn)楹芏嗤瑢W(xué)會(huì)被公司的技術(shù)和業(yè)務(wù)牽著走,比如公司當(dāng)前的業(yè)務(wù)規(guī)模決定了技術(shù)上不需要分布式技術(shù),那么很多同學(xué)就不會(huì)去思考如果規(guī)模大了之后,如何利用分布式技術(shù)解決該問(wèn)題。

如何解決這個(gè)問(wèn)題?除了尋找更大規(guī)模的業(yè)務(wù)外,要時(shí)刻保持時(shí)刻跳出當(dāng)前層級(jí)和環(huán)境來(lái)思考的習(xí)慣。比如,你只用了關(guān)系型數(shù)據(jù)庫(kù),那么有沒(méi)有想過(guò)數(shù)據(jù)一直產(chǎn)生,到達(dá)TB級(jí)別的時(shí)候該如何快速檢索與保存呢?

此外,技術(shù)的全貌還包括各種技術(shù)之間的關(guān)系,你用了Dubbo,那么Duboo和Netty是什么關(guān)系,為什么會(huì)用到Zookeeper呢,和Spring Cloud又是什么關(guān)系?如果能在學(xué)習(xí)新技術(shù)的時(shí)候,將繁雜的技術(shù)關(guān)系理順,會(huì)有一覽眾山小的感覺(jué)。

在工作的2~3年時(shí)間內(nèi)達(dá)到這個(gè)水平,30w的年薪就離你不遠(yuǎn)了。如果你對(duì)高并發(fā)和分布式技術(shù)感興趣,那么下面一幅圖會(huì)有幫助:

不去造輪子,

提是得知道輪子的內(nèi)部結(jié)構(gòu)

如果說(shuō),第二步是增加你的知識(shí)廣度,那么造輪子就是增加你的技術(shù)深度,通過(guò)造輪子,才能真正把握技術(shù)的來(lái)龍去脈。

很多人信奉“不去造輪子”,看似性價(jià)比很高的一句話,卻不知道這句話是有前提的,那就是“你得知道輪子的內(nèi)部結(jié)構(gòu)”,否則就是自我麻痹。接下來(lái)需要選擇某一個(gè)或幾個(gè)方面深入研究下去,構(gòu)建自己的核心競(jìng)爭(zhēng)力。

比如,消息隊(duì)列在高并發(fā)分布式系統(tǒng)中一個(gè)及其重要的組件,起到削峰填谷、系統(tǒng)解耦的作用。我們以消費(fèi)端如何快速獲取數(shù)據(jù)來(lái)看思維是如何一步步深入的:

首先消費(fèi)端要想及時(shí)獲取數(shù)據(jù),是否需要建立一個(gè)長(zhǎng)連接?長(zhǎng)連接的實(shí)現(xiàn)方式如何?

數(shù)據(jù)是通過(guò)push還是pull方式給到消費(fèi)端,各自有什么弊端?

如果消費(fèi)失敗,可能是哪些原因引起?如果是因?yàn)榫W(wǎng)絡(luò)原因引起,該如何解決?

這些問(wèn)題都會(huì)在你自己造輪子的過(guò)程中暴露出來(lái),從而加深你的理解和技術(shù)深度,一個(gè)有技術(shù)深度的程序員才是有靈魂的。而大廠也是愿意為有趣的靈魂買單的,這個(gè)時(shí)候看的就不僅僅是工資水平,更多的是在于晉升和發(fā)展前景的廣闊性。

在Java語(yǔ)言上有所建樹的開發(fā)者,都經(jīng)歷過(guò)以上3個(gè)層次。但可惜的是,囿于外界環(huán)境和自身設(shè)限,大部分的Java開發(fā)者卻只停留在了第一個(gè)層次中,在日復(fù)一日的體力勞動(dòng)中喪失了對(duì)技術(shù)細(xì)節(jié)的深入探討,也喪失了晉升和薪資談判中的籌碼。

如何過(guò)渡到第二、三個(gè)層次?除了上文談到的內(nèi)容,這里我還想給你2個(gè)切身的建議:

1、擴(kuò)寬自己的眼界,學(xué)著從全局看待問(wèn)題,并且勇于挑戰(zhàn)別人眼中的難題

2、持續(xù)提升你的學(xué)習(xí)能力,雖然有很多人以「在公司學(xué)不到東西」為理由離職,但你要知道:公司的目的是盈利。盈利的前提下,公司會(huì)盡力培養(yǎng)你,但是更多的時(shí)候能力成長(zhǎng)還是得靠自己。學(xué)習(xí)能力弱的人,在哪里都沒(méi)用。

在此我向大家推薦一個(gè)架構(gòu)學(xué)習(xí)交流群。交流學(xué)習(xí)群號(hào):938837867 暗號(hào):555 里面會(huì)分享一些資深架構(gòu)師錄制的視頻錄像:有Spring,MyBatis,Netty源碼分析,高并發(fā)、高性能、分布式、微服務(wù)架構(gòu)的原理,JVM性能優(yōu)化、分布式架構(gòu)等這些成為架構(gòu)師必備

?著作權(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)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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