怎樣學習才能從一名Java初級程序員成長為一名合格的架構師,或者說一名合格的架構師應該有怎樣的技術知識體系,這是不僅一個剛剛踏入職場的初級程序員也是工作三五年之后開始迷茫的老程序員經常會問到的問題。
什么是架構,什么是架構師?這似乎是聊架構話題時永恒的問題。
從內心講我真的不想回答架構具體需要做什么,架構師應該具體負責什么。因為從實際情況看,在不同的系統層級,不同的需求下架構師的職責也會不同;從不同的技術角度看,架構師又是個變色龍——一時是技術的大拿,一時是技術的規劃者,一時是技術團隊的指揮者。
那么,該如何回答“什么是架構,什么是架構師”這個問題呢?這或許需要先搞清楚另外一個問題——一名程序員是如何走上架構師之路的?我從許多朋友那里了解到了很多實際案例,程序員走上架構師之路,總結起來最多的原因是因為他早前代碼寫的好。
架構師的定義?
個人覺得架構師需要具有以下幾特點:
知識廣度:需要知道主流技術為什么誕生,能解決什么問題?如果同一種業務用不用的技術來實現,會有什么哪些優缺點?比如:流行的ORM框架Mybatis 和 hibernate ,他們之間的優缺點是什么?要有清晰的認識會能在技術造型時做出正確的決定。
抽象能力:對業務和技術進行抽象。業務抽象就是對需求進行分析后,能夠建立完美的實體類以及他們之間的聯系。技術抽象是對整體架構進行一個分層,各層之間的交互。這至關重要,如果技術抽象能力不足,這會導致整個系統的架構不靈活,難以維護和擴展。
知識的深度:至少是某個領域的專家,比如消息隊列,activeMQ熟悉其源碼,知道其實現。
優秀的學習能力:對新的技術和前沿性的技術進行學習,使用它來解決工作中的業務問題。
那么你該如何去做呢?我覺得可以從以下幾個步驟開始:
1: 扎實的JAVA 基礎,Think in java上介紹的內容都能理解,做到這一步恭喜成為了程序員。
2:熟練使用主流框架,如:mybatis,spring 等。
3:研究過至少一種以web框架的源碼,如spring mvc ,struts 等。
4:架構過或者參與過高并發系統設計,知道如何應對突發情況。
5:對自己所處的業務能夠根據自己的知識維度,提出優化建議或者預測其風險點。
其實能否成為架構師跟機遇有很大關系,比如一個程序員,以上都做到了,但是公司并沒有給他這個機會去做,一個真正架構的機會。因為之前的架構師不離職他就沒有機會,這就是現實!
很多人不知道該怎么去學習架構師所需的知識,在此我分享給你我收藏的視頻教程:
如果你想學習Java工程化、高性能及分布式、高性能、深入淺出。性能調優、Spring,MyBatis,Netty源碼分析和大數據等知識點可以來找我。
而現在我就有一個平臺可以提供給你們學習,讓你在實踐中積累經驗掌握原理。主要方向是JAVA架構師。如果你想拿高薪,想突破瓶頸,想跟別人競爭能取得優勢的,想進BAT但是有擔心面試不過的,可以加我的Java架構進階群:668395460
注:加群要求
1、具有1-5工作經驗的,面對目前流行的技術不知從何下手,需要突破技術瓶頸的可以加。
2、在公司待久了,過得很安逸,但跳槽時面試碰壁。需要在短時間內進修、跳槽拿高薪的可以加。
3、如果沒有工作經驗,但基礎非常扎實,對java工作機制,常用設計思想,常用java開發框架掌握熟練的,可以加。
4、覺得自己很牛B,一般需求都能搞定。但是所學的知識點沒有系統化,很難在技術領域繼續突破的可以加。
5.阿里Java高級大牛直播講解知識點,分享知識,多年工作經驗的梳理和總結,帶著大家全面、科學地建立自己的技術體系和技術認知!
6.小號加群一律不給過,謝謝。
轉發此文章請帶上原文鏈接,否則將追究法律責任!