Java架構(gòu)師之路:從Java碼農(nóng)到資深架構(gòu)師
寫在開篇
不管是開發(fā)、測(cè)試、運(yùn)維,每個(gè)技術(shù)人員心里都有一個(gè)成為技術(shù)大牛的夢(mèng),畢竟“夢(mèng)想總是要有的,萬一實(shí)現(xiàn)了呢”!正是對(duì)技術(shù)夢(mèng)的追求,促使我們不斷地努力和提升自己。
然而“夢(mèng)想是美好的,現(xiàn)實(shí)卻是殘酷的”,很多同學(xué)在實(shí)際工作后就會(huì)發(fā)現(xiàn),夢(mèng)想是成為大牛,但做的事情看起來跟大牛都不沾邊,例如,程序員說“天天寫業(yè)務(wù)代碼還加班,如何才能成為技術(shù)大牛”,測(cè)試說“每天都有執(zhí)行不完的測(cè)試用例”,運(yùn)維說“扛機(jī)器接網(wǎng)線敲shell命令,這不是我想要的運(yùn)維人生”。
提升技術(shù)的誤區(qū):
有人認(rèn)為想成為技術(shù)大牛最簡單直接、快速有效的方式是“拜團(tuán)隊(duì)技術(shù)大牛為師”,讓他們平時(shí)給你開小灶,給你分配一些有難度的任務(wù)。
有這種想法是錯(cuò)誤的,主要有這幾個(gè)原因:
- 首先,大牛是很忙的,一個(gè)團(tuán)隊(duì)里面,如果大牛平時(shí)經(jīng)常給你開小灶,難免會(huì)引起其他團(tuán)隊(duì)成員的疑惑,我個(gè)人認(rèn)為如果團(tuán)隊(duì)里的大牛如果真正有心的話,多給團(tuán)隊(duì)培訓(xùn)是***的。然而做過培訓(xùn)的都知道,準(zhǔn)備一場(chǎng)培訓(xùn)是很耗費(fèi)時(shí)間的,課件和材料至少2個(gè)小時(shí)(還不能是碎片時(shí)間),講解1個(gè)小時(shí),大牛們一個(gè)月做一次培訓(xùn)已經(jīng)是很高頻了。
- 大牛不多,不太可能每個(gè)團(tuán)隊(duì)都有技術(shù)大牛,只能說團(tuán)隊(duì)里面會(huì)有比你水平高的人,即使他每天給你開小灶,最終你也只能提升到他的水平;而如果是跨團(tuán)隊(duì)的技術(shù)大牛,由于工作安排和分配的原因,直接請(qǐng)教和輔導(dǎo)的機(jī)會(huì)是比較少的,單憑參加幾次大牛的培訓(xùn),是不太可能就成為技術(shù)大牛的。
學(xué)習(xí)方式
很多人以為要學(xué)習(xí)就要像學(xué)校上課一樣,給你一整天時(shí)間來上課才算學(xué)習(xí),而我們平時(shí)加班又比較多,周末累的只想睡懶覺,或者只想去看看電影打打游戲來放松,所以就沒有時(shí)間學(xué)習(xí)了。
實(shí)際上的做法正好相反:首先我們應(yīng)該在工作中學(xué)習(xí)和提升,因?yàn)閷W(xué)以致用或者有實(shí)例參考,學(xué)習(xí)的效果是***的;其次工作后學(xué)習(xí)不需要大段時(shí)間,而是要擠出時(shí)間,利用時(shí)間碎片來學(xué)習(xí)
如何想辦法真正的提升自己:more and more
做的更多,做的比你主管安排給你的任務(wù)更多。熟悉更多業(yè)務(wù),不管是不是你負(fù)責(zé)的;熟悉更多代碼,不管是不是你寫的。
這樣做有很多好處,舉幾個(gè)簡單的例子:
- 需求分析的時(shí)候更加準(zhǔn)確,能夠在需求階段就識(shí)別風(fēng)險(xiǎn)、影響、難點(diǎn)
- 問題處理的時(shí)候更加快速,因?yàn)橄嚓P(guān)的業(yè)務(wù)和代碼都熟悉,能夠快速的判斷問題可能的原因并進(jìn)行排查處理。
- 方案設(shè)計(jì)的時(shí)候考慮更加周全,由于有對(duì)全局業(yè)務(wù)的理解,能夠設(shè)計(jì)出更好的方案
找到正確的學(xué)習(xí)路線
1. 構(gòu)成架構(gòu)師的技能體系
2. 閱讀源碼,分析源碼知識(shí)點(diǎn)總匯
這張圖詳細(xì)介紹了源碼中所用到的經(jīng)典設(shè)計(jì)思想及常用設(shè)計(jì)模式,先打好內(nèi)功基礎(chǔ),了解大牛是如何寫代碼的,從而吸收大牛的代碼功力。
結(jié)合Spring5和MyBatis源碼,帶你理解作者框架思維,幫助大家尋找分析源碼的切入點(diǎn),在思想上來一次巨大的升華。
3. 分布式架構(gòu)
有了大牛的代碼功底之后,接下來可以更好地學(xué)習(xí)分布式架構(gòu)技術(shù)。
透徹理解分布式架構(gòu)的好處和優(yōu)點(diǎn)
- 必然性,適應(yīng)市場(chǎng)需求,能夠去找一些更大的平臺(tái)發(fā)展,提升自己的綜合技術(shù)能力和薪資。
- 了解從傳統(tǒng)架構(gòu)到分布式架構(gòu)演變過程所帶來的技術(shù)變革,將理論和實(shí)戰(zhàn)相結(jié)合,透徹理解分布式架構(gòu)及其解決方案。
- 從分布式架構(gòu)原理,到分布式架構(gòu)策略,再到分布式架構(gòu)中間件,***在加上分布式架構(gòu)實(shí)戰(zhàn),讓程序員可以在技術(shù)深度和技術(shù)廣度上得到飛躍的提升,成為互聯(lián)網(wǎng)行業(yè)所需要的T型人才。
4. 微服務(wù)架構(gòu)技能總匯
隨著業(yè)務(wù)的發(fā)展,代碼量的膨脹和團(tuán)隊(duì)成員的增加,傳統(tǒng)單體式架構(gòu)的弊端越來越凸顯,嚴(yán)重制約了業(yè)務(wù)的快速創(chuàng)新和敏捷交付。為了解決傳統(tǒng)單體架構(gòu)面臨的挑戰(zhàn),先后演進(jìn)出了SOA服務(wù)化架構(gòu)、RPC框架、分布式服務(wù)框架,***就是當(dāng)今非常流行的微服務(wù)架構(gòu)。微服務(wù)化架構(gòu)并非銀彈,它的實(shí)施本身就會(huì)面臨很多陷阱和挑戰(zhàn),涉及到設(shè)計(jì)、開發(fā)、測(cè)試、部署、運(yùn)行和運(yùn)維等各個(gè)方面,一旦使用不當(dāng),則會(huì)導(dǎo)致整個(gè)微服務(wù)架構(gòu)改造的效果大打折扣,甚至失敗。
5. 并發(fā)編程
從Java基礎(chǔ)接觸多線程,到分布式架構(gòu)環(huán)境下的高并發(fā)訪問,并發(fā)編程充分利用好各個(gè)服務(wù)器處理器,以***的效率處理各個(gè)任務(wù)協(xié)同有序工作。透徹理解鎖的應(yīng)用。
6. 六、性能優(yōu)化
大家都知道,性能一直是讓程序員比較頭疼的問題。當(dāng)系統(tǒng)架構(gòu)變得復(fù)雜而龐大之后,性能方面就會(huì)下降,如果想成為一名優(yōu)秀的架構(gòu)師,性能優(yōu)化就是你必須思考的問題。
所以性能優(yōu)化專題從JVM底層原理到內(nèi)存優(yōu)化再到各個(gè)中間件的性能調(diào)優(yōu),比如Tomcat調(diào)優(yōu),MySQL調(diào)優(yōu)等,讓你洞悉性能本質(zhì),全面認(rèn)識(shí)性能優(yōu)化,不再只是旁觀者。
7. Java開發(fā)必知工具
一名優(yōu)秀的架構(gòu)師必須有適合自己的兵器,也就是工欲善其事必先利其器,不管是小白,還是資深開發(fā),都需要先選擇好的工具。工程化專題的學(xué)習(xí)能幫助你和團(tuán)隊(duì)提升開發(fā)效率,讓自己有更多時(shí)間來思考。
- Git:可以更好地管理你和你團(tuán)隊(duì)的代碼。
- Maven:可以更好地管理jar包和項(xiàng)目的構(gòu)建等。
- Jenkins:可以更好地持續(xù)編譯,集成,發(fā)布你的項(xiàng)目。
- Sonar:一個(gè)開源的代碼質(zhì)量分析平臺(tái),便于管理代碼的質(zhì)量,可檢查出項(xiàng)目代碼的漏洞和潛在的邏輯問題(提升代碼的質(zhì)量,更加高效地提升開發(fā)效率)。
8. 實(shí)踐一個(gè)雙十一電商項(xiàng)目
電商項(xiàng)目目的是把所學(xué)的分布式,微服務(wù),性能調(diào)優(yōu)等知識(shí)運(yùn)用起來,只有在項(xiàng)目中你才能鞏固知識(shí),提升自己。實(shí)踐電商項(xiàng)目會(huì)利用云服務(wù)器搭建真實(shí)的開發(fā)和部署環(huán)境,讓你從零到項(xiàng)目實(shí)戰(zhàn),體驗(yàn)真實(shí)的企業(yè)級(jí)項(xiàng)目開發(fā)過程,讓你具備獨(dú)立開發(fā)和搭建分布架構(gòu)系統(tǒng)的能力。
總結(jié)
要想有機(jī)會(huì),首先你得從人群中冒出來,要想冒出來,你就必須做到與眾不同,要做到與眾不同,你就要做得更多! 成為技術(shù)大牛夢(mèng)想雖然很美好,但是要付出很多,不管是Do more還是Do better還是Do exercise,都需要花費(fèi)時(shí)間和精力,這個(gè)過程中可能很苦逼,也可能很枯燥,這里我想特別強(qiáng)調(diào)一下:前面我講的都是一些方法論的東西,但真正起決定作用的,其實(shí)還是我們對(duì)技術(shù)的熱情和興趣!
【本文來自51CTO專欄作者張開濤的微信公眾號(hào)(開濤的博客),公眾號(hào)id: kaitao-1234567】