如何成为一个Java高薪架构师?
2019獨角獸企業重金招聘Python工程師標準>>>
從內心講我真的不想回答架構具體需要做什么,架構師應該具體負責什么。因為從實際情況看,在不同的系統層級,不同的需求下架構師的職責也會不同;從不同的技術角度看,架構師又是個變色龍——一時是技術的大拿,一時是技術的規劃者,一時是技術團隊的指揮者。
那么,該如何回答“什么是架構,什么是架構師”這個問題呢?這或許需要先搞清楚另外一個問題——一名程序員是如何走上架構師之路的?我從許多朋友那里了解到了很多實際案例,程序員走上架構師之路,總結起來最多的原因是因為他早前代碼寫的好。
那么,代碼寫的好就是架構嗎?顯然不是。代碼寫的好只是表象,做所有事情都需要規劃,尤其是一個復雜的軟件系統,這更需要規劃,否則可能連一行代碼都寫不出。復雜的軟件系統一定會需要做很多抽象設計、對象規劃、接口規劃等準備動作。也就是“上一輩程序員”口中所說的:詳細設計。做架構主要的事情也依舊如此,需要對整個系統進行系統的規劃:模塊、通訊、邊界、擴展、技術下沉等工作。這樣的規劃完成之后項目方能正常跑起來。
當然,架構也不僅僅是規劃,還要做的另一件大事就是技術識別。識別出系統中技術的難易區域,并分解復雜技術,使之成為一個個技術的黑盒子,在此之上再進行新的技術規劃,使整個系統從技術角度來看是分層次的,從難到易,從大到小,但各層之間又是互相的黑盒。這也常說的讓系統模塊間達到“雞犬相聞老死不相往來“的狀態。
一個架構師需要足夠的技術的寬度。從軟件到硬件,從開發到測試,從運維到安全等都需要面面俱到的了解。當然你可能不是這單方面領域里面最深入的人,但是你需要知道它們是怎么做的(不僅僅是皮毛,要深入原理),并且要知道它們組合起來是個什么樣的東西。技術面也足夠寬了之后,是不是就會成為完美架構師呢?
答案是不會,因為還有新的問題要過來。這次的問題諸如“系統在未來的運行過程中運維需要做什么?”“系統在未來的功能迭代中如何更方便的擴展?”“系統應該怎么修改?”“系統應該被怎么樣升級?”這時的你是不時很困惑?是不是感覺這個架構的世界好長啊,怎么像保姆一樣什么都要管。但仔細想想這是應該的,因為一個系統初次開發并交付只是它生命周期中的一小部分而已。后面的維護、改造、升級才占了整個軟件生命周期的絕大部分時間。你是它的架構設計者,是它靈魂之所在,你當然應該設計好它的未來。這也是架構師做好的最后一件事情:系統未來的設計。
架構師的定義?
個人覺得架構師需要具有以下幾特點:
知識廣度:需要知道主流技術為什么誕生,能解決什么問題?如果同一種業務用不用的技術來實現,會有什么哪些優缺點?比如:流行的ORM框架Mybatis 和 hibernate ,他們之間的優缺點是什么?要有清晰的認識會能在技術造型時做出正確的決定。
抽象能力:對業務和技術進行抽象。業務抽象就是對需求進行分析后,能夠建立完美的實體類以及他們之間的聯系。技術抽象是對整體架構進行一個分層,各層之間的交互。這至關重要,如果技術抽象能力不足,這會導致整個系統的架構不靈活,難以維護和擴展。
知識的深度:至少是某個領域的專家,比如消息隊列,activeMQ熟悉其源碼,知道其實現。
優秀的學習能力:對新的技術和前沿性的技術進行學習,使用它來解決工作中的業務問題。
那么你該如何去做呢?我覺得可以從以下幾個步驟開始:
1: 扎實的JAVA 基礎,Think in java上介紹的內容都能理解,做到這一步恭喜成為了程序員。
2:熟練使用主流框架,如:mybatis,spring 等。
3:研究過至少一種以web框架的源碼,如spring mvc ,struts 等。
4:架構過或者參與過高并發系統設計,知道如何應對突發情況。
5:對自己所處的業務能夠根據自己的知識維度,提出優化建議或者預測其風險點。
以上是我想分享給大家的,也許說的不夠好,不夠全面,但是希望對你們有所幫助。
哦對了,喜歡就別忘了關注一下哦~
轉載于:https://my.oschina.net/u/3990817/blog/2241369
總結
以上是生活随笔為你收集整理的如何成为一个Java高薪架构师?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Docker从入门到实战(四)
- 下一篇: 为元组的每个元素命名