1架構師是什嗎?
要想往架構師的方向發展首先要知道架構師是什嗎?
架構師是一個既需要掌控整體又需要洞悉局部瓶頸並依據具體的業務情境給出解決方案的團隊領導型人物。
一個架構師得需要足夠的想像力,能把各種目標需求進行不同維度擴充,為勘探提供更為全面的需求清單。
<figure style="margin: 1em 0px; color: rgb(26, 26, 26); font-family: -apple-system, system-ui, "Helvetica Neue", "PingFang SC", "Microsoft YaHei", "Source Han Sans SC", "Noto Sans CJK SC", "WenQuanYi Micro Hei", sans-serif; font-size: medium; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); text-decoration-style: initial; text-decoration-color: initial;">image
</figure>
架構師在軟體開發的整個過程中起著很重要的作用。
說的詳細一些,架構師就是確認和評估系統需求,給出開發規範,搭建系統實現的核心構架,並澄清技術細節、掃清主要痛點的技術人員。主要著眼於系統的“技術實現”。
2架構師的任務
架構師的主要任務不是從事具體的軟體程式的編寫,而是從事更高層次的開發構架工作。他必須對開發技術非常瞭解,並且需要有良好的組織管理能力。可以這樣說,一個架構師工作的好壞決定了整個軟體開發項目的成敗。
在成為Java架構師之前,應當先成為Java工程師。
熟練使用各種架構,並知道它們實現的原理。
jvm虛擬機器原理、調優,懂得jvm能讓你寫出效能更好的代碼;池技術,什麼對象池,串連池,線程池……Java反射技術,寫架構必備的技術,遇到有嚴重的效能問題,替代方案java位元組碼技術;nio,沒什麼好說的,值得注意的是"直接記憶體"的特點,使用情境;java多線程同步非同步;java各種集合對象的實現原理,瞭解這些可以讓你在解決問題時選擇合適的資料結構,高效的解決問題。
比如hashmap的實現原理,好多五年以上經驗的人都弄不清楚,還有為什擴容時有效能問題?
不弄清楚這些原理,就寫不出高效的代碼,還會認為自己做的很對。
總之一句話,越基礎的東西越重要,很多人認為自己會用它們寫代碼了,其實僅僅是知道如何調用api而已,離會用還差的遠。
如果你立志做架構,首先打好基礎,從最底層開始。
然後發展到各種技術和語言,什麼都要懂兩點,要全面且不膚淺。
為什麼不是懂一點?
你要看得透徹,必須盡量深入一些。別人懂一點,你要做架構師,必須再多懂一點。比如你發現golang很流行,別人可能寫一個helloworld就說自己玩過golang,但你至少要嘗試寫一個完整的應用。
不肯下苦功,如何高人一頭?
<figure style="margin: 1em 0px; color: rgb(26, 26, 26); font-family: -apple-system, system-ui, "Helvetica Neue", "PingFang SC", "Microsoft YaHei", "Source Han Sans SC", "Noto Sans CJK SC", "WenQuanYi Micro Hei", sans-serif; font-size: medium; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); text-decoration-style: initial; text-decoration-color: initial;">image
</figure>
你起碼要非常深入地瞭解至少一門語言,如果你的目標是java,那麼就學到極致,作為敲門磚,先吃飽了才能談理想。
3架構師都是從碼農過來的
而Java學到極致勢必涉及到設計模式,演算法和資料結構,多線程,檔案及網路IO,資料庫及ORM,不一而足。這些概念放之一切語言都適用。
先精一門,為全面且不膚淺打基礎。
另外就是向有經驗的架構師學習,和小夥伴們討論辯論爭論。
其實最重要的能力就是不斷學習。在思考新的技術是否能更好地解決你們遇到的問題之前,你首先得知道並瞭解新的技術。
架構師都是從碼農過來的,媳婦熬成婆。
千萬不要成為不寫代碼的架構師,有些公司專門產不寫技術的架構師。
所謂架構師,只是功底深厚的程式員而已。個人認為應該紮紮實實學習基礎知識,學習各種規範,架構,需要廣泛的知識面,懂的東西越多視野越開闊,設計的東西當然會越好越全面。
成為架構師需要時間的積累的,不但要知其然還要知其所以然。平時的一點一滴你感覺不到特別用處,但某天你會發現所有東西都沒有白學的。
4架構師知識體系
JAVA架構師必須掌握的技術知識有高並發多線程編程、網路通訊編程、JAVA虛擬機器、Linux、資料庫、中介軟體等,如果想往大資料等專項發展,需要掌握hadoop、storm、spark、flink等,並閱讀過kafka、netty等源碼,才能hold住各種項目挑戰。推薦一個視頻,關注公號“編碼前線”,回複架構師即可。
<figure style="margin: 1em 0px; color: rgb(26, 26, 26); font-family: -apple-system, system-ui, "Helvetica Neue", "PingFang SC", "Microsoft YaHei", "Source Han Sans SC", "Noto Sans CJK SC", "WenQuanYi Micro Hei", sans-serif; font-size: medium; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); text-decoration-style: initial; text-decoration-color: initial;">image
</figure>