怎樣學(xué)習(xí)才能從一名Java初級(jí)程序員成長(zhǎng)為一名合格的架構(gòu)師硼一,或者說(shuō)一名合格的架構(gòu)師應(yīng)該有怎樣的技術(shù)知識(shí)體系,這是不僅一個(gè)剛剛踏入職場(chǎng)的初級(jí)程序員也是工作三五年之后開(kāi)始迷茫的老程序員經(jīng)常會(huì)問(wèn)到的問(wèn)題。
什么是架構(gòu)桶雀,什么是架構(gòu)師空执?這似乎是聊架構(gòu)話題時(shí)永恒的問(wèn)題。
從內(nèi)心講我真的不想回答架構(gòu)具體需要做什么婴梧,架構(gòu)師應(yīng)該具體負(fù)責(zé)什么下梢。因?yàn)閺膶?shí)際情況看,在不同的系統(tǒng)層級(jí)塞蹭,不同的需求下架構(gòu)師的職責(zé)也會(huì)不同孽江;從不同的技術(shù)角度看,架構(gòu)師又是個(gè)變色龍——一時(shí)是技術(shù)的大拿番电,一時(shí)是技術(shù)的規(guī)劃者岗屏,一時(shí)是技術(shù)團(tuán)隊(duì)的指揮者。
那么漱办,該如何回答“什么是架構(gòu)这刷,什么是架構(gòu)師”這個(gè)問(wèn)題呢?這或許需要先搞清楚另外一個(gè)問(wèn)題——一名程序員是如何走上架構(gòu)師之路的娩井?我從許多朋友那里了解到了很多實(shí)際案例暇屋,程序員走上架構(gòu)師之路,總結(jié)起來(lái)最多的原因是因?yàn)樗缜按a寫(xiě)的好洞辣。
架構(gòu)師的定義咐刨?
個(gè)人覺(jué)得架構(gòu)師需要具有以下幾特點(diǎn):
知識(shí)廣度:需要知道主流技術(shù)為什么誕生昙衅,能解決什么問(wèn)題?如果同一種業(yè)務(wù)用不用的技術(shù)來(lái)實(shí)現(xiàn)定鸟,會(huì)有什么哪些優(yōu)缺點(diǎn)而涉?比如:流行的ORM框架Mybatis 和 hibernate ,他們之間的優(yōu)缺點(diǎn)是什么联予?要有清晰的認(rèn)識(shí)會(huì)能在技術(shù)造型時(shí)做出正確的決定啼县。
抽象能力:對(duì)業(yè)務(wù)和技術(shù)進(jìn)行抽象。業(yè)務(wù)抽象就是對(duì)需求進(jìn)行分析后躯泰,能夠建立完美的實(shí)體類(lèi)以及他們之間的聯(lián)系谭羔。技術(shù)抽象是對(duì)整體架構(gòu)進(jìn)行一個(gè)分層,各層之間的交互麦向。這至關(guān)重要瘟裸,如果技術(shù)抽象能力不足,這會(huì)導(dǎo)致整個(gè)系統(tǒng)的架構(gòu)不靈活诵竭,難以維護(hù)和擴(kuò)展话告。
知識(shí)的深度:至少是某個(gè)領(lǐng)域的專家,比如消息隊(duì)列卵慰,activeMQ熟悉其源碼沙郭,知道其實(shí)現(xiàn)。
優(yōu)秀的學(xué)習(xí)能力:對(duì)新的技術(shù)和前沿性的技術(shù)進(jìn)行學(xué)習(xí)裳朋,使用它來(lái)解決工作中的業(yè)務(wù)問(wèn)題病线。
那么你該如何去做呢?我覺(jué)得可以從以下幾個(gè)步驟開(kāi)始:
1: 扎實(shí)的JAVA 基礎(chǔ),Think in java上介紹的內(nèi)容都能理解鲤嫡,做到這一步恭喜成為了程序員送挑。
2:熟練使用主流框架,如:mybatis暖眼,spring 等惕耕。
3:研究過(guò)至少一種以web框架的源碼,如spring mvc 诫肠,struts 等司澎。
4:架構(gòu)過(guò)或者參與過(guò)高并發(fā)系統(tǒng)設(shè)計(jì),知道如何應(yīng)對(duì)突發(fā)情況栋豫。
5:對(duì)自己所處的業(yè)務(wù)能夠根據(jù)自己的知識(shí)維度挤安,提出優(yōu)化建議或者預(yù)測(cè)其風(fēng)險(xiǎn)點(diǎn)。
其實(shí)能否成為架構(gòu)師跟機(jī)遇有很大關(guān)系丧鸯,比如一個(gè)程序員蛤铜,以上都做到了,但是公司并沒(méi)有給他這個(gè)機(jī)會(huì)去做,一個(gè)真正架構(gòu)的機(jī)會(huì)昂羡。因?yàn)橹暗募軜?gòu)師不離職他就沒(méi)有機(jī)會(huì),這就是現(xiàn)實(shí)摔踱!
很多人不知道該怎么去學(xué)習(xí)架構(gòu)師所需的知識(shí)虐先,在此我分享給大家一個(gè)學(xué)習(xí)路線:
如果你想學(xué)習(xí)Java工程化、高性能及分布式派敷、高性能蛹批、深入淺出。性能調(diào)優(yōu)篮愉、Spring腐芍,MyBatis,Netty源碼分析和大數(shù)據(jù)等知識(shí)點(diǎn)可以來(lái)找我试躏。
而現(xiàn)在我就有一個(gè)平臺(tái)可以提供給你們學(xué)習(xí)猪勇,讓你在實(shí)踐中積累經(jīng)驗(yàn)掌握原理。主要方向是JAVA架構(gòu)師颠蕴。如果你想拿高薪泣刹,想突破瓶頸,想跟別人競(jìng)爭(zhēng)能取得優(yōu)勢(shì)的犀被,想進(jìn)BAT但是有擔(dān)心面試不過(guò)的椅您,可以加我的Java架構(gòu)進(jìn)階群:561614305
1、具有1-5工作經(jīng)驗(yàn)的寡键,面對(duì)目前流行的技術(shù)不知從何下手掀泳,需要突破技術(shù)瓶頸的可以加。
2西轩、在公司待久了员舵,過(guò)得很安逸,但跳槽時(shí)面試碰壁遭商。需要在短時(shí)間內(nèi)進(jìn)修固灵、跳槽拿高薪的可以加。
3劫流、如果沒(méi)有工作經(jīng)驗(yàn)巫玻,但基礎(chǔ)非常扎實(shí),對(duì)java工作機(jī)制祠汇,常用設(shè)計(jì)思想仍秤,常用java開(kāi)發(fā)框架掌握熟練的,可以加可很。
4诗力、覺(jué)得自己很牛B,一般需求都能搞定我抠。但是所學(xué)的知識(shí)點(diǎn)沒(méi)有系統(tǒng)化苇本,很難在技術(shù)領(lǐng)域繼續(xù)突破的可以加袜茧。
5.阿里Java高級(jí)大牛直播講解知識(shí)點(diǎn),分享知識(shí)瓣窄,多年工作經(jīng)驗(yàn)的梳理和總結(jié)笛厦,帶著大家全面、科學(xué)地建立自己的技術(shù)體系和技術(shù)認(rèn)知俺夕!