Java程序員入門容易,進階很難,想要在競爭中保持優勢,腳踏實地的同時也要仰望星空規划自己的未來。時間在流逝,年齡在增加,你期望的薪水也在不斷增多,你總得讓自己能力持續增加以配得上想要的收入吧。
從初級的Java程序員做起,就要注重修煉自己扎實的基本功,開闊工作思路多思考需求背后的目標。不論是業務還是技術都要多問為什么,在完成工作的前提下尋根溯源是讓個人快速的提升的有效方法。
另外,在縱向的積累沉淀自己技術的同時,橫向擴展自己的知識面。有自己深入的知識領域,同時又有廣闊的知識面,是個人競爭力的很好體現。
最后,勇於挑戰困難的工作,提升自己的溝通能力,思考技術發展趨勢,學着從業務角度進行技術規划,並學着做好技術團隊的管理與激勵。
1、初級 Java 程序員的核心考核要素
這個階段的候選人一般都剛加入工作,工作時間不超過 3 年,對於這一部分候選人,公司的需求通常是解決一些基礎的業務問題。他們會考察應聘者的基本功是否扎實、工作思路開闊。以下是一份典型的初級 Java 工程師的 JD:
扎實的基本功
從任職需求上看,面試官對於候選人的期望主要掉現在扎實的計算機理論基礎,熟悉面向對象編程,了解常用框架等等。「因為這個階段,公司所需要的 Java 后端開發,主要是為了解決一些基本業務功能的實現,扎實的基本功能夠幫助候選人更快、更好地熟悉業務」100offer 的人才顧問 Tony 如此概括這者階段的公司需求。因此,在這個階段,即使是非互聯網公司的候選人,也能得到一些面試邀請,表現突出,則可成功轉行。
(上圖為工作1年,曾在某硬件公司任職的候選人)
工作思路開闊
在某獨角獸企業帶領一個業務方向的技術 leader 陳程為我們描述了這個階段的 Java 程序員最具競爭的力的品質:能夠站在業務的角度去思考問題。
這些品質的 Java 程序員直觀上的表現就是,不會單一地去思考需求,而是會考慮需求背后的目標。「這些特質其實沒有那么難以鍛煉,不是孤立地處理問題,多和產品經理溝通交流,就很容易培養出從業務角度考慮技術開發的意識」。陳程覺得這個階段的程序員反而是最好提升的,「害怕的就是,你不願意去做這些溝通,閉門造車這種事情,其實不是程序員長期規划中的一個好習慣。」
2、高級 Java 程序員考核要素
這個階段的 Java 程序員不僅要熟悉 Java 語言本身,公司對候選人會有進一步的要求,具體表現在能夠快速的進行工作的輸出,能夠獨立負責小系統或者系統群。在這個階段,公司在考察工作經驗和項目的同時,還看中的是你解決問題的思路和方式。
這個階段的JD要求如下:
縱向的技術沉淀
對於技術沉淀的考察主要是從項目經驗中來,通過對項目經驗的考察過程中,觀察候選人是否能夠把工作內容轉化成自己的技術能力或者系統能力。
在 17 年收獲 30+ 個面試邀請的專科生王朋依靠着他在大型項目中的技術積累,在 100offer 平台上收獲了包括阿里巴巴、網易等在內的 36 個面試邀請。
(候選人王朋在100offer上的具體情況)
橫向知識面的拓展
除了縱向的技術沉淀外,在這個階段,作為系統群或者項目的負責人的橫向知識面也是非常重要的考核因素。橫向的知識面一方面包括技術上的,表現為不僅能夠有架構上的整體認識,還能利用技術組件解決一些比較專業的問題。另外還包括業務上的,比如是否能夠在解決具體的需求同時,考慮到整體業務線上會涉及的各個環節,提前考慮並且部署這些環節會出現的問題。
3、資深 Java 程序員考核要素
先來看這個階段的 JD 要求:
JD 中除了一系列的 Java 架構、生態體系上的要求外,又增加了「技術發展趨勢」、「溝通能力」、「勇於擔當」等關鍵詞。這些關鍵詞背后的訴求其實也側面反映了這個階段的 Java 程序員需要承擔的工作:負責一個業務方向或者業務群。
業務角度進行技術規划
除了扎實的技術功底外,能夠結合業務方向進行技術規划和有效管理技術團隊,保證團隊產出成為最重要的兩個因素。怎么樣可以做到從業務的角度進行技術規划,這里考驗的就是你能否發產品經理提出的每一個孤立的點的邏輯和目標系統的建立起來,並且能夠在資源有限的情況下,爭取到最優的解決方案。
技術團隊的管理與激勵
如何在團隊成員有限的情況下,完成需求量大的開發需求;如何能夠更好地讓團隊中的程序員發揮作用,建立有效的溝通反饋機制等等。這些都是作為這個階段的 Java 程序員或者說是技術經理無法避開的問題。
從這些建議中,我們抽象的看,整體來說就是作為一個 Java 程序員「宏觀」能力和「微觀」能力的把控。這兩點需要你不斷的循序漸進,一步一個台階地走上去。