做爲一名程序員,你們都會爲本身將來的職業發展焦慮。程序員
網易高級Java架構師談,菜鳥如何發展成爲架構師
一方面是由於IT是知識密集型的行業。數據庫
知識體系複雜且知識更新速度很是快,「一日不學就會落後」。編程
另一方面,IT又是勞動密集型的行業。設計模式
從業人員多,我的在平時的開發過程當中有大量的重複勞動(如 CRUD),能力沒有隨年齡的增長而增加。架構
這種狀況下,就會應驗「35歲就失業」魔咒。函數式編程
那做爲一名 Java開發者,如何規劃本身的職業生涯呢?函數
通常來講,程序員的技術生涯會分爲技術新人、技術專家、架構師3個階段,這也是咱們的成長的路徑。工具
一,技術新人:夯實技術基礎學習
對於工做1~2年左右的技術新人來講,夯實基礎是立足之本。編碼
具體來講,技術基礎的能力尤爲反映在代碼品質上。
好比「大段重複代碼」,「極端狀況沒異常處理」,「麪條型代碼沒有任何架構」等,都是代碼品質差的表現。
提升的方式比較通用:
看書是最系統的提高方式。好比《Java編程思想》、《Effective Java》等。
在看書的過程當中必定要思考可否實踐,好比看到 voliate,就要想一想可否應用到本身的項目中。
代碼 Review是最有體感的提高方式。這個階段必定不要怕丟人。
讓本身組內的大牛來看看本身的代碼,確定會被批評,但這是成長最快速的方式。
二,技術專家:構建技術深度
技術專家的要求是在技術深度上必定有積累。
但說到技術深度,第一感受它很玄乎,多深才叫有深度,是否是掌握冷門的技巧就叫深度?
好比:你的同事花費了一週來「重構」代碼。
最後發現,僅僅是換了個語法糖:
把 for循環等換成了所謂的函數式編程 lambda表達式,並且 lambda表達式巨長到沒法下嚥;
還有同事在不休止的討論 if-else的100種寫法,各類設計模式堆砌,到最後除了他沒有別人能看懂。
很顯然,咱們最多會說他們有鑽研精神,語法糖使用的很厲害,但毫不會說他們有技術深度。
不少同窗始終沒法構建本身的深度。
就在於他們會把編碼過程當中的「奇淫技巧」看作是技術深度的體現,把炫技放在首位。
而這種想法顯然是片面的,也是錯誤的。
而真正的技術深度,通常要在學習的過程當中思考以下問題:
1.技術誕生的背景是什麼,這是理解技術理念的關鍵。
2.技術的優點和劣勢分別是什麼,技術沒有銀彈,只有適應場景,在某一方面有優點,那在其餘方面就確定有劣勢。
3.技術的底層原理和關鍵實現
4.和已有的其餘技術相比有什麼不一樣
提高的方式無非就是多看資料,尤爲去看官方英文文檔。
遇到不懂的能夠去社區提問,甚至還能夠仿照某個技術從新造個輪子(僅供學習之用,不建議工做中重複造輪子)。
技術深度的構建非一朝一夕,若是能按照上面的思路堅持學習三五年,就必定會在某一領域成爲專家。
三,架構師:擴大技術視野
在成爲某一領域的專家以後,想要承擔更大的職責,那麼還須要擴大本身的技術視野,通盤考慮整個業務和系統。
通俗來說,技術視野不只包含了技術深度,也包含了技術廣度,就是「既見樹木,又見森林」。
尤爲體如今技術選型與架構設計這兩個階段。
這個能力也是決定本身之後是繼續當「搬磚工」,仍是昇華爲「建築師」的關鍵。
要時刻保持跳出當前層級和環境來思考的習慣。
每一個人都有本身的侷限性,天天接觸的技術和工做都是固定的,工做經常使用的技能隨着時間就熟練了。
好比,你只用了關係型數據庫,有沒有想過數據一直產生,到達TB級別的時候該如何快速檢索與保存呢?
充分利用思惟導圖工具,不斷延展知識邊界。
架構師的知識必定是系統化的,當接觸到一個知識點後,要去追尋與現有技術的關係。
這樣就能夠將所學知識串聯,從而造成體系。
溝通與交流時提升視野的最快捷的方式。
相信每一個人都有感觸,當你偶然間得到某個知識點後,會不禁感嘆:原來如此啊,我還覺得有多難呢。
其實知識不難,就在那裏,只是你沒找到合適的途徑去觸達它。
對於Java來講,構建系統的化的知識體系能夠參考如下腦圖:
最後,在這裏分享一些源碼和Java核心知識點,能夠更好的幫你下降一點門檻。
獲取方式:請加JAVA架構技術交流羣:714827309
點擊連接加入羣聊【JAVA高級架構技術交流】:https://jq.qq.com/?_wv=1027&k...