百萬年薪架構師的java方向學習路線
百萬年薪架構師的java方向學習路線
很多人都問,技術人員如何成長,每個階段又是怎樣的,如何才能走出當前的迷茫,實現自我的突破。所以我結合我自己10多年的從業經驗,總結了技術人員成長的9個段位,希望對大家的職業生涯,有所幫助。
1.
剛接觸程式設計的時候,會覺得這是個很神奇東西,平淡的英文字母,再加上標點符號,竟然可以有這麼大魔力。會覺得程式設計是很有自豪感的事情,因為在我們看來,它就是在創造,用這些跳動的字元,創造我們想要的效果。
我當時第一次看到程式設計的時候,就是這種感覺,我也不知道它是什麼,如何做到的,但是就是感覺這很神奇,是一種不懂但是覺得很酷的感覺,然後就會著迷,開始想學。
2.
開始學程式設計的選擇,是沒有選擇的,因為什麼都不懂,可能最先從哪裡看到的,就模仿學什麼,然後就走上了程式設計之路。
我最先接觸的語言是Pascal語言,當時我不知道它是什麼,只知道它叫這個名字。這門語言是在高中的時候,計算機書本上的,我學了一些,與其說是學,還不如是記,因為我沒有練過,沒有執行過。
3.
走上了程式設計之路後,學習得方式主要看語法,這個是為了入門,但是並不太知道為什麼會這樣,但是能用,能模仿,這時候算是入門了。
入門後,會迫不及待的,使用實驗各種效果,而且這些結果可能都不是自己寫出來的,因為入門了,環境可以搭建,會執行,就會從很多地方拷貝一些程式碼,執行試試,然後感受成功後的自豪感。
我真正做出來東西的語言是VB,可以通過拖動生成介面,然後再填充需要的邏輯程式碼,就可以實現一些功能,比如MP3字尾名處理,HTML轉TXT,那時候主要的目的,還是滿足自己的需要,可以做一些酷的東西,並不是真的把它當成一門用於工作的技能系統的學習它,但是即使這樣,已經夠我在同學面前自豪了。
4.
真正的在走向工作之前,這時候的學習,就開始系統性,畢竟要決定靠這個謀生了。這時候我們會看一些實戰類的書籍,比如如何做網站,通過什麼框架,用到哪些資料庫、伺服器等等,這時候基本上已經走向正路了。
但是這個時候,我們只是會用階段,大部分人還不知道為什麼,比如Spring框架,我們知道這麼配置可以用,可以IoC反轉,但是不知道怎麼實現的,原理是什麼。
這個時候最大的特點就是,給分配的工作都能做,不太會的,也可以通過Google、百度解決,大不了拷貝別人的一份,改改即可。
不管怎麼樣,現在已經初步具備框架系統體系了,可以謀生了。
5.
隨著工作時間的加長,經驗的增加,你會漸漸的發展,很多常用的知識,自己只會用,但是並不懂,比如記憶體的分配,類的載入順序,IoC的原理等等。
這時候大概是工作2年左右,如果快的話,可能會在工作第一年就意識到。這時候你會刻意的去買了一些講解基礎類的書籍,比如以前從來沒有認真讀完的《Thinking In Java》又開始重讀了,並且讀的很仔細,還會配合例子測試一下,儼然像一個剛入門的,但是你知道你很清楚你缺少的是什麼,想從中學到什麼。
然後你可能還會嘗試買一些比較深入的書籍,比如講解原理的,高階特性分析得等等,這時候你會逐步的在你現在的這門語言開始深入,要跨過不光會用,還要懂為什麼的階段,這個階段是孤獨的,因為大部分都是語言特性、原理的學習。
跨過去,就是魚躍龍門,過不去,就是一個重複的螺絲釘。
6.
恭喜你能來到這個階段,你不光會用,還知道原理。這個時候可能你已經工作3年以上了,這時候你開始獨立負責一些專案,設計都是你來做。這時候對你的考驗不光是程式語言本身了,你還會考慮如何讓你的專案具備更好的擴充套件性,如何提高效能,如何和資料庫、伺服器、快取等配合,設計出更好的系統。
這時候你可能開始看設計模式,也會研究資料庫的優化,可能還會對Nginx研究,以便更好的使用。
這時候的主要特徵,就是抽象能力、複用能力、元件化、模組化的提升,同時可以和程式設計周邊(資料庫、伺服器等)進行更好的協調和搭配,以完成自己的專案設計。
這就是成為高階工程師之路。
7.
現在你來了第7段,這一段是資深工程師,是第6段的加強,並不會有質的突破。
在這個階段,你會對抽象、架構的理解更深。開始積累更多的模組,形成一個SDK或者一個微服務,你開始深入研究安全,併發,監控。如果你是服務端,你可能會考慮服務雙活甚至多活,考慮閘道器等等。
並且你可能已經開始跨多個端了解業務和架構設計,比如服務端和前端的分離,服務端和終端的協作,開始逐步的從全域性(不限於自己的技術棧)思考問題、設計系統。
這個階段,就是第6段的繼續深入,積累,擴充套件,然後積累到可以突破到架構師。
8.
現在你終於突破到架構師了,你的眼界不在侷限在你的技術棧,其他的語言你可能不懂,但是你知道如何使用他們,甚至你自己開始學習另外一門語言。
你設計的系統,不會只考慮自己的技術棧,你可能會選擇更合適的技術棧來實現。
你會跨語言、技術棧思考問題,並且可以提出好的方案,比如負責的一個專案,橫跨服務端、Android、iOS和前端,你會通盤考慮,兼顧哥哥技術棧,協調大家完成這個專案。
你不光可能完成分配的任務,還能對現有的系統提出更多有建設性的建議,進行優化,改進,甚至提前積累我們業務需要的技術、平臺、知識,為我們未來的使用和擴充套件做準備。
你還會熟悉業務,可能比其他更多的人對業務更熟悉,因為只有這樣,才能設計出更適合業務的架構。
你會藉助技術負責人的能力,幫你推動協調事情,讓你的想法更好的開展和實現。
你的考慮角度,永遠都是整個技術部門,而不是再侷限在某個專案,某個組,某個技術棧。
那麼恭喜你,現在你是一個合格的架構師了。
9.
現在,到了第9段,現在可能你已經做了10年了,你發現,所有的一切技術,都是實現業務的工具。業務才是根本,技術是為業務服務的,如果買個系統就能達到目的,那麼是不需要自己開發的。
這時候,你具備了再一次橫向擴充套件的能力,可以橫向到產品、市場、運營、設計、測試、運維等,這時候,你就不是一個單單的技術人了。
如果有一個稱呼的話,可以是技術總監、技術VP等等。
10.
以上9段,是我結合自己10多年的從業經驗,總結的技術人員成長的9段位,其中第5段是比較重要的,也是一個檻,第6,7段是一個積累的階段,也是培養抽象、架構能力的階段,這兩個階段,決定了你是否可以到第8段的架構師,所以第8段也是一個檻。
有些人,可能5年多就可以到第8段,但是可能需要10年才能到第9段,這是一個非常困難的過程,需要長期的積累,思想的蛻變,才能成長到第9段。
從第6段開始,你就不能只顧自己了,要更多的考慮協調、協作、體系、多角度。只有做的事情是讓整個團隊受益的,才能逐漸的突破第7段,進入第8段的架構師。
每一步,都踩實,多思考、多學習,在每個段位,都做一些超出這個段位的事情,很自然的就進入了下一個段位。