如何3年內成為java架構師
如何三年內成為java架構師
工作前三年是職業生涯中成長最快的幾年,在這段時間裡你會充滿激情,做事專注,也容易養成良好的習慣。在我們公司有些同學在前三年中就快速成為某一個領域的技術專家,有些同學也可能止步不前。本文和大家一起探討下如何在三年內快速成長為一名技術專家。
一:學習方法
1.1 空杯心態
首先要有空杯的學習心態,而不是傲嬌自滿,故步自封,空杯子才可以裝下更多的東西。首先要學會取百家之長,帶著欣賞的眼光看團隊的同事或學校的同學,欣賞每位同事或同學的優點,然後吸取他們的優點,每個同事都有其擅長的能力,比如有的同事技術能力強,那麼可以觀察下他如何學習的(或者找他請教學習方法),有的同學擅長解決線上問題,那麼觀察他是如何解決線上問題的,解決思路是什麼?如果他解決不了時,他是如何尋求幫助。有的同學擅長使用IDE或MAC的快捷鍵,那麼可以向他學習提高工作效率。有的同學能快速理解業務知識,觀察他是如何做到的,自己如何達到他的程度。溝通能力,解決問題能力以及規劃能力都可以向同事學習。
1.2 挑戰權威
從書上看到一個知識點,或者從別人那裡聽到一個知識點,一定要去挑戰和質疑這個知識點的正確性,否則學到的知識點可能是錯誤的。先用邏輯思維推測下,再實戰檢測下,一定要記住實踐是檢驗真理的唯一標準。比如同事說這個SQL加這個索引是最快的,首先要思考同事的結論是如何得出的,是靠歷史經驗還是測試過,如果我們沒有經驗,就加上這個索引跑下SQL,看看執行計劃和執行時間,再換下其他索引試試會不會更快。依次類推,併發一定比序列快嗎?無鎖一定比加鎖快嗎? 很多結論都是在特定的場景下才會產生的,一定要自己親手實踐驗證下。
1.3 堅持學習
有的同學可能工作了五年,但是學習的時間可能一年都不到。學技術不能急於求成,只要學習方法正確,量變一定會引起質變。我在大學剛學JAVA時,怎麼都學不會,但是堅持學習了幾個月,每天看張老師的JAVA視訊教學,買書按照書裡的程式碼一行一行的敲程式碼,白天睡覺,晚上學習和寫程式碼,寫到宿舍關燈時就去避風塘呆一晚上,早上6點鐘回宿舍睡覺,學到一定時間後,突然恍然大悟,才入了門。
在工作中,我曾經花了一個月的時間學習AOP的實現原理,學習了各種方式來實現AOP的原理,並寫了幾種實現方式的程式碼,雖然花的時間很多,但是到現在仍記憶猶新,對於排查問題和學習其他知識都非常有幫助。
要做到堅持學習,學習的環境非常重要。如果你想學,但是又不在學習狀態,可以考慮換個學習環境,我經常會去星巴克看書和學習。我聽說有的同事會週末抽一天去大學教師上自習。
1.4 把事情做精
對自己要求越高,進步越快。要有強烈的把事情做完美的心態,我剛開始工作的時候,總是快而不精,做事做的不夠細緻,總希望快速拿出結果證明自己,但是反而證明不了什麼,技術能力也得不到提升,缺少技術亮點,在團隊中也沒什麼影響力,後面就開始鍛鍊一次就把事情做對的心態和方法。我觀察過,很多人都擅長快速做事情,但是把事情做好做精緻的人會比較少,但是結果卻是 在精益求精的路上才會快速提高自己的能力 。比如用100行程式碼實現的功能,思考下是否可以用10行來實現,以便於降低運維成本,提高下次的編碼效率。引用GUAVA等類庫,提取公共方法,和使用JDK8新特性等。系統的方法壓測過後,單機只能承受1700QPS,可以思考和實踐能否優化下程式提高QPS,減少伺服器數量。
把事情做精,一定是要強迫自己多花心思多花時間在這件事情上。有位技術牛人給我分享了一個心得,我覺得說的非常好,老闆給你佈置了一個任務, 你要花百分之150的精力做到100分,這樣在老闆那裡你就能拿到80分或者60分 。
1.5 掌握系統化的學習方法
如果學習到的知識不成體系,那麼遇到問題時就會非常難解決。有些同學會出現這些情況,比如編碼時遇到問題百度搜索,如果百度上找不到答案,這個問題就解決不了。再比如,在開發中要用到某個技術點,就學習下API,程式調通後就不再深入研究,淺嘗輒止,如果程式遇到其他問題也不知道如何解決。
以上情況我認為叫 點狀學習 。遇到一個問題,解決一個問題,需要一項技術,學習一項技術。那麼如何由點到面,由面到體,形成系統化學習呢。
首先要確定學習的知識領域,需要達成的學習目標,針對目標制定學習計劃,就像你要寫一本書一樣,先把目錄寫出來,然後根據目錄上的知識點逐步去學習,最後把這些知識點關聯起來,形成一個系統化的知識體系。學習的時候,可以制定一個計劃,以周為單位,比如第一週學什麼,第二週學什麼。
1.6 廣度和深度的選擇
技術人員的學習路徑有兩個維度,深度和廣度。很多程式設計師都有這個疑問,是先深後廣,還是先廣後深呢?
通過這麼多年的學習和思考,我的建議先深後廣,因為當技術學到一定深度後,就會有觸類旁通的能力,自己掌握的廣度也自然有了深度。但是在實際學習過程中,深度和廣度相互穿插著學習,比如學習併發程式設計時,首先學習JDK原始碼,然後學進去之後,開始看JVM原始碼,最後看CPU架構,在技術點逐漸深度研究的過程中,廣度也得到了完善。
所以無論哪種學習方式,學習態度才是最重要的,在廣度學習的時候有深入研究的態度就能達到一定的深度,在深度學習的時候,主動學習相關的技術點,廣度也得到拓寬。
如果有小夥伴苦於尋求資料而不得,可以看下方圖自取資料。