資深大牛分享:一個合格的Java程序員如何成長為優秀的架構師
資深大牛分享:一個合格的Java程序員如何成長為優秀的架構師
如果大家如果在自學遇到困難,想找一個java的學習環境,可以加入我們的java學習圈,點擊我加入吧,會節約很多時間,減少很多在學習中遇到的難題。
我認為,架構師的內功主要包含三部分:判斷力、執行力、創新力,簡單解釋如下:
判斷力:能夠準確判斷系統的復雜度在哪裏,就像武俠高手一樣,能準確地看出對手的破綻和弱點。
執行力:能夠使用合適的方案解決復雜度問題,就像武俠高手一樣,能選擇合適的招式或者方法打敗對手。
創新力:能夠創造新的解決方案解決復雜度問題,就像武俠世界裏,小一些的創新是創新招式,而武學宗師能夠創立新的武學或者心法,例如張三豐創立太極拳一樣。
因此,要成為一個優秀的架構師,就需要不斷地提升自己這幾方面的內功,而這三方面的能力主要來源於經驗、視野、思考。
經驗:設計過的系統越多、系統越復雜,架構師的內功也就越強,不管是成功的架構,還是失敗的架構,不管是踩坑的經驗,還是填坑的經驗,都將成為架構師內功的一部分。
視野:掌握的知識和技能越多、越深,架構師的內功也就越強,他山之石可以攻玉,站在巨人的肩膀上會看的更高更遠。
思考:經驗和視野都是外部輸入,類似於我們吃的食物,但光吃還不行,還要消化,將其變為我們自己的營養,這就是思考的作用。思考能夠將經驗和視野中的模式、判斷、選擇、技巧等提煉出來為我所用,思考也能促使我們產生新的創意和靈感。
結合上面的分析,從程序員到架構師的成長之路,總的指導原則是:積累經驗,拓寬視野,深度思考。按照這個總的原則為指導,接下來我們看看從程序員到架構師的成長過程中,具體如何實踐。
合格的工程師需要 1~3 年時間,其典型特征是“在別人的指導下完成開發”。工程師階段是最原始的“基礎技能積累階段”,主要積累基礎知識,包括編程語言、編程工具、各類系統的基本使用。
高級工程師需要 2~5 年時間,其典型特征是“獨立完成開發”,包括需求分析、方案設計、編碼實現,其中需求分析和方案設計已經包含了“判斷”和“選擇”,只是範圍相對來說小一些,更多是在已有架構下進行設計。
從普通工程師成長為高級工程師,主要需要“積累方案設計經驗”,簡單來說就是業務當前用到的相關技術的設計經驗。包括:表設計經驗、緩存設計經驗、業務流程設計經驗、接口設計經驗等。當接到一個業務需求的時候,高級工程師能夠組合這些設計經驗,最終完成業務需求。
技術專家需要 4~8 年時間,其典型的特征是“某個領域的專家”,通俗地講,只要是這個領域的問題,技術專家都可以解決。
從高級工程師成長為技術專家,主要需要“拓展技術寬度”,因為一個“領域”必然會涉及眾多的技術面。要成為一個 Java 開發專家,需要掌握 Java 多線程、JDBC、Java 虛擬機、面向對象、設計模式、Netty、Elasticsearch、Memcache、Redis、MySQL 等眾多技術。
初級架構師需要 5~10 年時間,其典型特征就是能夠“獨立完成一個系統的架構設計”,可以是從 0 到 1 設計一個新系統,也可以是將架構從 1.0 重構到 2.0。初級架構師負責的系統復雜度相對來說不高,例如後臺管理系統、某個業務下的子系統、100 萬 PV 量級的網站等。
初級架構師和技術專家的典型區別是:架構師是基於完善的架構設計方法論的指導來進行架構設計,而技術專家更多的是基於經驗進行架構設計。簡單來說,即使是同樣一個方案,初級架構師能夠清晰地闡述架構設計的理由和原因,而技術專家可能就是因為自己曾經這樣做過,或者看到別人這樣做過而選擇設計方案。
從技術專家成長為初級架構師,最主要的是形成自己的“架構設計方法論”
中級架構師需要 8 年以上時間,其典型特征是“能夠完成復雜系統的架構設計”,包含高性能、高可用、可擴展、海量存儲等復雜系統,例如設計一個和 Kafka 性能匹敵的消息隊列系統、將業務改造為異地多活、設計一個總共 100 人參與開發的業務系統等。中級架構師與初級架構師的典型區別在於系統復雜度的不同。
從初級架構師成長為中級架構師,最關鍵的是“技術深度和技術理論的積累”
高級架構師需要 10 年以上時間,其典型特征是“創造新的架構模式”
高級架構師與中級架構師相比,典型區別在於“創造性”,高級架構師能夠創造新的架構模式,開創新的技術潮流。
關於如何在專業領域內提升,有條著名的“10000 小時定律”,簡單來說要成為某個領域頂尖的專業人才,需要持續不斷 10000 小時的練習,我認為技術人員成長也基本遵循這個定律,最關鍵的還是技術人員對技術的熱情以及持續不斷地投入,包括學習、實踐、思考、總結等。
接下來為大家提煉一條通用的成長路徑供你參考
資深大牛分享:一個合格的Java程序員如何成長為優秀的架構師
?
資深大牛分享:一個合格的Java程序員如何成長為優秀的架構師
無論你在哪裏。技術的提高都是靠自己。現在是互聯網時代,即使你在深山,你依然與世界同步。
1、具有1-5工作經驗的,面對目前流行的技術不知從何下手,
需要突破技術瓶頸的。
2、在公司待久了,過得很安逸,
但跳槽時面試碰壁。需要在短時間內進修、跳槽拿高薪的。
3、如果沒有工作經驗,但基礎非常紮實,對java工作機制,
常用設計思想,常用java開發框架掌握熟練的。
4、覺得自己很牛B,一般需求都能搞定。
但是所學的知識點沒有系統化,很難在技術領域繼續突破的。
6.阿裏Java高級大牛直播講解知識點,分享知識,
多年工作經驗的梳理和總結,帶著大家全面、
科學地建立自己的技術體系和技術認知!
就以這段話共勉吧。越努力、越幸運,如果你不是官二代、富二代、紅二代,那麽請記住:勤奮才是改變你命運的唯一捷徑。
資深大牛分享:一個合格的Java程序員如何成長為優秀的架構師