2020 年,據說是程式設計師的本命年:
這一年,發生了很多事情,之前我也有提到,今年要實現收入翻倍的小目標,很幸運,我的確實現了,在 2020 這樣的大環境下,這是比較讓我欣慰的。
隨著工作的時間越久,就越能明白一個道理,不管你入行多少年、多喜歡或是多會 Java 程式設計,在學習和解決問題上總會碰到障礙。
01加快知識積累速度
在程式設計領域,因為知識的快速衰減,我們必須一直學習。
今年,我更像是處在知識的衰退和流失階段,經過了五、六年的學習和歸納,發現自己實際知道的有用的東西已經在逐年遞減了。
所以,這一年我加快了知識積累的速度,在知識獲取上,把精力投入在那些有更長衰減期的知識上,比如,原始碼分析、微服務、效能最佳化和架構等知識點。
現在不少公司都很重視高併發、高可用的技術,特別是一線網際網路大廠,分散式、JVM、Spring 原始碼分析等知識點已經是面試的必考題。
持續獲取新的經驗
我身邊有不少朋友、同事雖然獲得了豐厚的薪酬,但很少有機會接觸新興事物。而再過 3、5 年,大家會意識到,曾經的知識儲備已經過時,薪酬與實際價值相去甚遠。
所以,這一年我儘可能為自己爭取獲得新經驗的機會,並且,在學習新技術前也會考慮這幾個問題:
這個技術解決什麼樣的問題?
這個技術有沒有同類型的替換品?各自的優缺點是什麼?
我學習後對我有什麼好處?同樣的時間我花去學習其他技術是不是更好?
一個有能力的程式設計師,需要透過技術迭代,去影響公司的技術路線,逐步更新技術選型,從而去引導公司使用新的技術。
03
合理的職業規劃
先問你幾個問題:
這是你工作的第幾年?
你願意一直和新人一樣,做最基礎的重複性工作嗎?
你願意一直寫程式碼,不關心其他的業務內容和行業現狀嗎?
一個專案的前期需求、設計、後期部署維護,老闆給到你,你說搞不定,行嗎?
我經常和大家強調,千萬不要認為程式設計師就是寫程式碼的。
如果你不是剛入行的新人,而是有了 1-3 年甚至更久的工作經驗,你該學習怎麼進行需求分析,怎麼設計資料庫,怎麼寫各類文件,怎麼寫更好的程式碼等等。
而當你準備跳槽時,你會發現,面試,是你第一個需要面對的問題。
不同公司面試的著重點不同,但卻有一個共同點:Java 基礎。
你對 String 物件建立的理解、常用的框架是什麼、Java 記憶體分配機制是什麼、類是如何載入的、常用的設計模式是什麼,怎麼獨立完成一個模組等等,都是你需要學會解決的問題。
下面分享一張 Java 技能圖譜給大家,涵蓋了 Java 程式設計師必備的技術棧,大家可以根據圖譜進一步查漏補缺。
當你沒有明確的⽅向,沒有規劃,或者不知道自己有什麼收穫的時候,這就是最大的危機了。
我的建議是,在工作中你要保持隨時可以跳槽的能力,這個能力包括硬實力和軟實力。
可能很多人會說,我當然知道學習的重要性,也很想系統提升自己的能力,儘快升職加薪,但問題是根本不知道從哪兒開始,甚至我手頭上的業務問題都還沒有解決,更沒有精力去給自己的未來做規劃。
這門課程的學習路線,從原始碼剖析、框架最佳化和定製、分散式架構設計、再到海量資料處理、高併發處理、最後到效能最佳化和調優,該學的東西都涵蓋到了。