天天看點

Java黃金五年——1~5年一個Java程式員從入行到大牛的晉升之路

在程式界流行着一種預設的說法叫“黃金5年”,也就是一個程式員從入職的時候算起,前五年的選擇直接影響着整個職業生涯中的職業發展方向和薪資走向,如何走好這5年,徹底從一個剛入行的菜鳥蛻變成可以以不變應萬變的職業大牛,這是一個涉及到自身專業知識儲備和選擇的大難題,那麼,這五年裡,一個Java程式員如何做才能完成從入行到大牛的晉升之路呢?

參加工作0-1年之間,Java程式員必須要做得事兒

當你學會了Java的基礎知識以後,你還不足以參加工作,你還需要繼續深造。你必需要學會Java開發架構。公司裡為了提高開發的效率,會使用一些Java Web架構。目前比較主流的是SSM架構,即spring、springmvc、mybatis。你需要學會這三個架構的搭建,并用它們做出一個簡單的增删改查的Web項目。你可以不了解那些配置都是什麼含義,以及為什麼要這麼做,這些留着後面你去了解。

但你一定要可以快速的利用它們三個搭建出一個Web架構,你可以記錄下你第一次搭建的過程,在搭建的過程中,也可以順便了解一下maven的知識。在你目前這個階段,你隻需要在網絡上了解一下maven基本的使用方法即可,一些高端的用法随着你工作經驗的增加,會逐漸接觸到的。

參加工作1-2年之間,Java程式員必須要做得事兒

這部分時間段的同學,已經對Java有了一個更加深入的了解。這一年,你必須對于設計模式了如指掌,此外,設計模式并不是你這一年唯一的任務,你還需要看一些關于代碼編寫優化的書。總而言之,這個階段,你的核心任務就是提高你的代碼能力,要能寫出一手優雅的代碼。

另外,在過去2年的工作當中,你肯定或多或少接觸過并發。這個時候,你應該去更加深入的了解并發相關的知識,與此同時,這個階段你要做的事情還遠不止如此。這個時候,你應該對于你所使用的架構應該有了更深入的了解,對于Java的類庫也有了更深入的了解。是以,你需要去看一些JDK中的類的源碼,也包括你所使用的架構的源碼。總而言之,這個階段,你需要做的是深入了解Java底層和Java類庫,也就是JVM和JDK的相關内容。而且還要更深入的去了解你所使用的架構,方式比較推薦看源碼或者看官方文檔。

參加工作3-4年之間,Java程式員必須要做得事兒。

這個階段的同學,提升已經是很難了,而且這個階段的學習往往會比較多樣化。因為在前3年的過程中,你肯定或多或少接觸過一些其它的技術,比如大資料、分布式緩存、分布式消息服務、分布式計算、軟負載均衡等等。這些技術,你能精通任何一項,都将是你未來面試時巨大的優勢,是以如果你對某一項技術感興趣的話,這個時候可以深入去研究一下。這項技術不一定是你工作所用到的,但一定是相關的。

參加工作4-5年之間,Java程式員必須要做得事兒。

參加工作4年到5年的同學,相信你在自己所鑽研的領域已經有了自己一定的見解,這個時候,技術上你應該已經遇到瓶頸了。這個時候不要着急提高自己的技術,已經是時候提高你的影響力了,你可以嘗試去一些知名的公司去提高你的背景,你可以發表一些文章去影響更多的人。當然,你也可以去Github建立一個屬于你的開源項目,去打造自己的産品。技術學到這個階段,很容易遇到瓶頸,而且往往達到一定程度後,你再深入下去的收效就真的微乎其微了,除非你是專門搞學術研究的。然而很可惜,大部分程式猿做不到這一步,那是科學家做的事情。這個時候提高影響力不僅僅是因為技術上容易遇到瓶頸,更多的是影響力可以給你創造更多的機會。是以,在這個階段,你最大的任務是提高自己的影響力,為自己未來的十年工作生涯那一天做準備

具有一到五年開發經驗的Java程式員必須要掌握的内容列舉到以下:

設計模式

設計模式是可複用面向對象軟體的基礎,學習設計模試是每個程式員從菜鳥走向大神的必經之路,巧妙地運用設計模式可以使我們的代碼看似複雜實際簡潔、複用性更高、更容易被别人了解等好處,同時也是學習軟體工程的基礎和必然。

Java黃金五年——1~5年一個Java程式員從入行到大牛的晉升之路

并發程式設計

主要培養程式設計者深入了解最底層的運作原理,加強程式設計者邏輯思維,這樣才能寫出高效、安全、可靠的多線程并發程式。

Java黃金五年——1~5年一個Java程式員從入行到大牛的晉升之路

開發工具工程化

通過一小段描述資訊來管理項目的建構,報告和文檔的軟體項目管理工具。程式員的戰鬥,往往不是一個人的戰鬥,我們如何在一個平台下高效的去重,進行代碼review,對功能進行調整,debug,做到在統一的規劃下步步為營,混亂的堆代碼的過程中找到自己的記錄。這一切都依賴于有效的工具。

Java黃金五年——1~5年一個Java程式員從入行到大牛的晉升之路

性能調優

我們不僅僅對項目要運籌帷幄,還要能解決一切性能問題。隻有深入學習JVM底層原理,Mysql底層優化以及Tomcat調優,才能達到知其然,知其是以然的效果。除了性能優化之外,也能提供通用的常見思路以及方案選型的考慮點,幫助大家培養在方案選型時的意識、思維以及做各種權衡的能力。

Java黃金五年——1~5年一個Java程式員從入行到大牛的晉升之路

源碼分析

程式員每天都和代碼打交道。經過數年的基礎教育和職業教育訓練,大部分程式員都會「寫」代碼,或者至少會抄代碼和改代碼。但是,會讀代碼的并不在多數,會讀代碼又真正讀懂一些大項目的源碼的,少之又少。這也造成了很多錯誤看源碼的方式。

那要如何正确的分析源碼呢?

我們的目标應該放在最常用的架構上面,下面就介紹兩個:一個是Spring,另一個是大家用來覺得一直不怎麼出問題的Mybatis。

△spring源碼

Java黃金五年——1~5年一個Java程式員從入行到大牛的晉升之路

△mybatis源碼

Java黃金五年——1~5年一個Java程式員從入行到大牛的晉升之路

分布式架構

随着我們的業務量越來越大和越重要,單體的架構模式已經無法對應大規模的應用場景,而且系統中決不能存在單點故障導緻整體不可用,是以隻有垂直或是水準拆分業務系統,使其形成一個分布式的架構,利用分布式架構來備援系統消除單點的故障,進而提高整個系統的可用性。同時分布式系統的子產品重用度更高,速度更快,擴充性更高是大型的項目必不可少的環節。

Java黃金五年——1~5年一個Java程式員從入行到大牛的晉升之路

分布式架構(一)

Java黃金五年——1~5年一個Java程式員從入行到大牛的晉升之路

分布式架構(二)

Java黃金五年——1~5年一個Java程式員從入行到大牛的晉升之路

微服務

關于微服務架構的取舍

在合适的項目,合适的團隊,采用微服務架構收益會大于成本。

微服務架構有很多吸引人的地方,但在擁抱微服務之前,也需要認清它所帶來的挑戰。

需要避免為了“微服務”而“微服務”。

微服務架構引入政策 – 對傳統企業而言,開始時可以考慮引入部分合适的微服務架構原則對已有系統進行改造或建立微服務應用,逐漸探索及積累微服務架構經驗,而非全盤實施微服務架構。

Java黃金五年——1~5年一個Java程式員從入行到大牛的晉升之路

B2C項目實戰

要想立足于網際網路公司,且能在網際網路浪潮中不被淹沒,對于項目的開發實戰演練是不必可少的技能,也是對自身能力的一個衡量,有多少的量對等于獲得多少的回報。看似簡單的一個項目需求圖譜,其中的底層原理,實作原理又能知道多少?你搭建一個完整的B2C項目平台到底需要多少知識?這一切都是需要我們考量的。

Java黃金五年——1~5年一個Java程式員從入行到大牛的晉升之路

JVM和性能優化

Java黃金五年——1~5年一個Java程式員從入行到大牛的晉升之路

架構關鍵基礎設施

Java黃金五年——1~5年一個Java程式員從入行到大牛的晉升之路