2019將到,我的年終總結(7年開發經驗),獻給迷茫中的你
8
我越來越擔心我作為一個Java程式設計師的未來。
恍然間,發現自己在這個行業裡已經摸爬滾打了7年了,原以為自己就憑已有的專案經驗和工作經歷怎麼著也應該算得上是一個業內比較資歷的人士了,但是今年在換工作的過程中卻遭到了重大的挫折。詳細過程我就不再敘述,在此,只想給大家說一說被拒絕的原因,看看大家有沒有相似的經歷,和類似的感悟。
面試官對我的答覆大致是這樣的,我們不需要熟練工,我們需要在某領域擁有超過常人的積累認知,和擁有整套完整思維模式和優秀認知事物能力的人…他很誠懇地告訴我,你還年輕,真的應該好好地靜下心來,深入地研究一些東西,自己寫一些東西,而不是這也用過,那也知道,但是多半都是侷限於僅僅見過,會用,卻從來沒有認真思考過其程式碼背後蘊含的思想,更少有人研究過原始碼,進而體會大師們在某些問題的解決上秉承的思想和思維的風格。個人感覺,這也算是國內大部分程式設計師最讓人悲哀的地方了,當然這也與外界浮躁氛圍的蔓延不無關係。
不瞭解這一行的人總覺得程式設計師都是程式碼民工,如果自己也認為自己是敲程式碼的機器的話,我誠懇地建議您儘早轉行吧,也許我這麼說會得罪傷害一些同行,畢竟轉行對任何一個人來說都是有相當的風險和挑戰的。不過這絕對應該是善意的忠告。相反,我強烈地認為,程式設計師應該是最有活力和最有思想的一個群體,只要你不肯讓自己浮於表面,更重要的是,必須勤于思考。如果你認可我這句的話,就請您繼續往下看看我的感慨,否則,那就希望您好好利用好自己的時間做您最需要做的事吧。
由於面試中被問到Spring,MyBatis的時候,讓面試官問得人仰馬翻,啞口無言,所以回來之後洗心革面,下決心要把Spring,MyBatis好好研究個明白,再也無法容忍自己只知其一不知其二了。
清醒的認識自己
我一直擔驚受怕,過去,可能是因為我年輕,但現在,我已經不是那麼年輕了,我仍然發現有很多事情讓我害怕。
當年紀越來越大後,我開始變得不能加班。我開始用更多的時間和家人在一起,而不是坐在計算機前(儘管這樣,她們仍是抱怨)。我在本地教育委員會社群裡提供一些幫助,還組織開源興趣小組參加活動。
我在思考,為什麼以前會把如此多的時間全部用在程式設計上。大量的程式設計。那是我渴望深入研究一個類庫,一個框架或一門技術。
現在的技術的學習曲線的增加,讓我的忍耐性越來越低。各種新技術,因為新奇讓人興奮,但最終變成一場場爭論。我越來越無法忍受這些充滿市場宣傳氣息的喧囂。我對技術看重的是穩定,清晰。
據不完全統計,截至目前為止,中國Java程式設計師的數量已經超過了100萬。而且,隨著IT培訓業的持續發展和大量的應屆畢業生進入社會,Java程式設計師面臨的競爭壓力越來越大。那麼,作為一名Java程式設計師,怎樣努力才能快速成長為一名高階的程式設計師或者架構師,或者說一名優秀的高階工程師或架構師應該有怎樣的技術知識體系,這不僅是一個剛剛踏入職場的初級程式設計師,也是工作三五年之後開始迷茫的老程式設計師,都必須要面對和想明白的問題。為了幫助大家少走彎路,我總結出一個Java程式設計師的工作2-7年成長路線圖。
一、開源框架解析
程式設計師每天都和程式碼打交道。經過數年的基礎教育和職業培訓,大部分程式設計師都會「寫」程式碼,或者至少會抄程式碼和改程式碼。但是,會讀程式碼的並不在多數,會讀程式碼又真正讀懂一些大專案的原始碼的,少之又少。這也造成了很多錯誤看原始碼的方式。
那要如何正確的分析原始碼呢? 我們的目標應該放在最常用的框架上面:
二、架構師築基
從架構設計,到應用層調優,再深入瞭解底層原理,紮實的Java基本功才能讓自己變為掃地神僧:記憶體模型,併發模式,執行緒模型,鎖細節等等
三、高效能架構
我們不僅僅對專案要運籌帷幄,還要能解決一切效能問題。只有深入學習JVM底層原理,Mysql底層優化以及Tomcat調優,才能達到知其然,知其所以然的效果。除了效能優化之外,也能提供通用的常見思路以及方案選型的考慮點,幫助大家培養在方案選型時的意識、思維以及做各種權衡的能力。
四、微服務架構
關於微服務架構的取捨
- 在合適的專案,合適的團隊,採用微服務架構收益會大於成本。
- 微服務架構有很多吸引人的地方,但在擁抱微服務之前,也需要認清它所帶來的挑戰。
- 需要避免為了“微服務”而“微服務”。
- 微服務架構引入策略 – 對傳統企業而言,開始時可以考慮引入部分合適的微服務架構原則對已有系統進行改造或新建微服務應用,逐步探索及積累微服務架構經驗,而非全盤實施微服務架構。
五、團隊協作
開發工具工程化
通過一小段描述資訊來管理專案的構建,報告和文件的軟體專案管理工具。程式設計師的戰鬥,往往不是一個人的戰鬥,我們如何在一個平臺下高效的去重,進行程式碼review,對功能進行調整,debug,做到在統一的規劃下步步為營,混亂的堆程式碼的過程中找到自己的記錄。這一切都依賴於有效的工具。
六、B2C專案實戰
專案實戰
要想立足於網際網路公司,且能在網際網路浪潮中不被淹沒,對於專案的開發實戰演練是不必可少的技能,也是對自身能力的一個衡量,有多少的量對等於獲得多少的回報。看似簡單的一個專案需求圖譜,其中的底層原理,實現原理又能知道多少?你搭建一個完整的B2C專案平臺到底需要多少知識?這一切都是需要我們考量的。
最後我特意整理了一下,在面試中遇到的很多問題不是靠幾句話能講清楚,所以乾脆找朋友錄製了一些視訊,很多問題其實答案很簡單,但是背後的思考和邏輯不簡單,要做到知其然還要知其所以然。
如果你也對Java工程化、高效能及分散式、JVM。效能調優、Spring、MyBatis,Netty原始碼分析感覺興趣,或者打算明年跳槽的朋友可以加我的Java高階架構師學習交流群:828545509,群裡有也一些BAT的大神,跟大家交流分享,看看大神們是怎麼學習提升自己的,另外我收集了一些Java大型網際網路技術的視訊,以及BAT等大型網際網路的面試題,加群免費分享給大家!!