從事java4年左右了,因為前幾年心思分散,所以一直沒有專注學習。后因為工作變動開始學習。目前來看自己的水平堪堪達到java高級的水平,也就是勉強p5的級別。當然還是缺點經驗。
這里分析一下初中高的差別,因為題主在二三線城市,所以和一線科班的人比基礎肯定會差些。
初級:初級剛從培訓班出來,其實只會增刪改查。這階段主要是提升代碼量減少bug還有形成將業務代碼轉為需求的能力,解決問題能力比較差,bug可能得花半天一天才解決。
中級:熟練掌握主流框架體系下的大部分業務實現,能夠撰寫比較復雜的sql,能夠較快處理自己和別人代碼中的bug。缺點就是:對於代碼底層實現原理理解不夠,無法寫出抽象的代碼
高級:1.了解了項目架構設計與每個模塊技術特點,對部分核心業務或者common里面的系統功能如何實現的有較為清晰的了解,
2.能夠較為熟練掌握並發編程,並用於解決實際問題。對於框架底層源碼實現原理有一定了解,並能夠了解框架源碼每個模塊是做什么的。
3.開始接觸管理,尤其是業務需求分配,git代碼管理與版本管理,運維環境熟悉,在當前主流技術下,必須掌握docker與k8s。至少要比較熟悉。
4.代碼上能夠較為靈活利用三大特性以及設計模式實現業務需求。並且在處理一些復雜bug要懂得如何用jvm工具分析,初步理解jvm調優原理。
5.分庫分表方案設計與工具使用,熟練掌握sql調優能力
6.對於微服務組件熟悉,能夠設計方案解決需求
資深:資深和高級區別主要在於,資深能夠初步設計一些高並發的方案,對於設計模式爛熟於心,對於spring等主要框架源碼爛熟。能夠開始寫一些復雜的組件,甚至內部的框架。對於算法和大數據方案
也能夠設計出相應方案。一般在二線城市,大部分的總監,甚至cto處於這個級別。
架構師:二線架構相當於一線資深,少部分大廠回來的。架構的能力主要在於能夠設計極端環境的一些問題解決方案,其他方面和資深並沒有本質變化,當然這階段的個別人已經是在開源項目貢獻的能力上開始展露出成果了。
總結:最難的的階段其實是高級到資深,這個階段基本上百分之80的人因為毅力以及不喜歡寫代碼的原因倒下。到高級了,雖然可以轉業務方向,主要負責管理。但是對於一個有追求的人來說,還是需要不斷學習,精進。否則,在國內大環境這么卷的情況下,很可能被市場淘汰。可能以后大數據會成為高級和和資深的標配技術棧。高級到資深最難的還是在於開源代碼的學習以及設計模式的融匯貫通,這些其實都是前面基礎階段忽略的,沒辦法,非科班學習這種思維設計方式還是很折磨人的,看完一遍就忘記了。