導讀:你是否曾經認真思考過——畢業3-5年、10年,乃至更久後,咱們但願成爲何樣的人?做爲一名技術人,咱們要如何規劃本身的職業發展生涯?網上熱議的「35歲中年危機」,本質上又因什麼而焦慮?今天,阿里資深技術專家毗盧,將帶來本身的思考與理解,但願對你們有所啓發。面試
做者毗盧:近期,我與團隊同窗探討了職業發展規劃的問題。有些同窗表示但願後續能進一步在技術領域(或管理方向)有進一步的積累;有的同窗表示但願在新的一年能具備更好的技術影響力,本身能作一些技術決定,去影響其餘人,這樣本身會頗有成就感。算法
所以,我也問了一些問題:數據庫
你但願技術能進一步積累,那你積累的方向和指望達到的結果分別是啥?編程
你但願能有技術決策,但願有影響力,你以爲應該如何作到?是但願經過崗位任命的方式嗎?設計模式
你以爲是否成功的標誌,就是今年或明年獲得晉升嗎?緩存
等等架構
大部分同窗在面對這些問題時,實際上是比較迷茫的,也缺乏真正可度量的衡量標準。是否能在短時間內得到晉升成了大部分人做爲「組織是否定可、本身是否定可」的衡量標準了。框架
固然,這個話題仁者見仁、智者見智,這裏我簡單地談談個人見解。我以相對比較口水化的方式,將職業發展分兩個階段來進行闡述:學習
1)第一階段:大學畢業3到5年編碼
2)第二階段:大學畢業5到10年
第一階段:大學畢業3到5年
對於從事Java軟件開發的技術同窗,在畢業後的3到5年內主要都是以學習、積累爲主。這個階段的工做幾乎天天都有驚喜,都有收穫。從一開始啥都不懂的校園「新鮮人」向「職業人」轉變。在這個階段,你會學習:
基礎的Java知識:你會開始看《Java編程思想》、《Effective Java》。
高質量代碼進階知識:你會開始看《重構:改善既有代碼的設計》、《代碼大全》、《編程珠璣》。
經常使用的主流框架:好比SSH相關的《Spring實戰》、《Spring Boot實戰》、《Hibernate實戰(第2版)》。固然,這些書已經不夠了,你會經過Google、Baidu大量地瀏覽在線的資源:Apache官網、Spring官網、Hibernate官網。你會去StackOverflow問問題或找答案。
系統設計與算法知識:《系統分析與設計方法》、《設計模式》、《需求分析與系統設計》、《面向對象分析與設計》、《UML用戶指南》、《算法導論》
其餘知識:好比數據庫調優、緩存框架、NoSQL數據庫、日誌框架等等
在這5年間,快速地完成這些基礎知識的學習,並能在項目中快速地學以至用。不只自身能得到比較高的成就感,並且實際的用人的單位、獵頭也會很是喜歡這類熟練工。
從大部分人的實際發展軌跡看,這個階段發展快的人和正常發展速度的人,差異還不是很大。好比,發展很是快的人,從畢業就入職阿里的P5到P7(注:阿里內部職稱評級),可能三年就能夠作到。發展速度正常的人,可能須要5-6年也能夠到P7。也就是說,這個階段正常發展速度的同窗也僅僅比發展速度快的人慢2-3年而已。
這2到3年的差距,是能夠經過有針對性的學習、重大項目的歷練等完成這些知識的學習。無非是,有的同窗會嚴格要求本身,有嚴格的學習計劃;有的同窗趕早參加了一些重點的、痛苦的項目獲得了鍛鍊。只要是作技術的,其實早晚都會經歷過,都會成長起來。
發現沒有?這個階段,咱們能協調好的資源其實就是本身,更多的是一個「我的貢獻者」。只要把本身管好了,學習計劃執行好了,工做高質量作好了就能獲得承認。
第二階段:大學畢業5到10年
不少本科同窗,特別是研究生同窗。在畢業10年後,就已經到了3四、35歲左右了。也是前段時間網上普遍討論的所謂34+歲現象。其實,年齡並非問題的真正緣由。真正的緣由仍是在於自身「競爭力」是否符合這個年齡所應該具有的。
到了這個年齡的人,每每已經不是「我的貢獻者」了,而是「團隊貢獻者」。團隊貢獻者多是帶團隊的TL,也多是個架構師,在技術決策上具備團隊影響力和話語權。
那麼,爲何這些人能管理團隊或者有影響力呢?
從公司的經營視角看,一個管理團隊的人,他必須爲業務的成功負責。說個大白話,一個TL管了N我的,他至少要能保證你們輸出所產生的價值,至少要高於這個團隊的工資、獎金、五險一金、OPEX、CAPEX等等吧。這個TL爲了你們輸出得有價值,他是否是須要能:
能對所負責領域的業務特色、發展趨勢、友商競爭分析有很好的洞察?能知道這個業務領域的客戶是誰?他們的需求是什麼?他們的痛點是什麼?因此,這個TL應該須要學習《諮詢的奧祕》、《探索需求》、《系統化思惟導論》。對於技術型的TL,還應該瞭解《成爲技術領導者:掌握全面解決問題的方法》。
服務於特定領域的客戶,咱們須要能瞭解咱們的客戶企業架構、業務知識。要了解清楚規劃的產品、服務,什麼纔是客戶所須要的。那麼,從理論上,咱們是否應該學習一些TOGAF、NGOSS、ITIL等業務理論以及業務知識?
做爲TL,是否有必要能將本身對於市場的洞察轉換成業務規劃,並能向本身的老闆(或者投資人)說清楚、講明白?並爭取到老闆的贊成,包括資金、人力資源等。對於,可否把事情講明白,咱們可能須要學習《金字塔原理》,並能很是清晰、有邏輯性地進行表達與溝通。固然,有些業務發展的事不必定特別有邏輯,是須要摸索、嘗試,那麼你是否能將一個不肯定的領域說服老闆並得到支持,咱們又須要什麼?《博弈論》、《影響力》等。
得到老闆支持後,就須要開始帶着兄弟們幹活了。做爲帶頭人,你看咱們是否須要能將業務趨勢、客戶痛點進行業務建模好讓團隊的PD、技術都能理解?在作業務進一步深刻分析,可能就須要學習《領域驅動設計:軟件核心複雜性應對之道》、《實現領域驅動設計》、《企業應用架構模式》、《恰如其分的軟件架構》等等。
作完業務設計後,開始要帶着團隊作技術方案設計、接口設計以及編碼實現等。這個過程,TL又須要具有軟件項目管理的能力。不管是《PMBOK指南》,仍是《敏捷軟件開發》、《人月神話》、《程序開發心理學》,相信總歸仍是會有點幫助的。
對於一些有國際化要求的公司,還須要再學習英語吧!
嗯,還須要有個好的身體,還須要常常鍛鍊,學習科學的健身吧(提及來本身臉紅)。至少我明白了一個道理,之前我都是跟本身說,等這段時間過了,閒下來去鍛鍊一下。其實,我發現,越是忙的時候,越須要鍛鍊身體!
另外,在這10年內,比較關鍵的是——你還經歷過什麼有挑戰的業務、技術、產品、平臺等方面的成功與失敗經驗?在這些經歷裏,你可能會遇到這些困難與挑戰:團隊磨合的挑戰、技術方案上的爭執、平臺優先 or 業務優先的博弈、低落的團隊氛圍、我的的低谷等等。這些困難與挑戰,你是退縮了?仍是有成長?在帶團隊時,再次面臨這些挑戰時,這時你是否有解或者有勇氣了?
發現沒有?畢業10年後,做爲一個團隊貢獻者,你可能須要具有這些能力,而且還遠遠不止。並且,更可悲的時,當畢業10年後,忽然發現本身不具有這個能力時(好比晉升失敗時發現了),這些能力GAP就再也不是2到3年就能追得上的了。我見過一些有準備的同窗,他們給本身的目標是在畢業第7年就要具有這些能力,他有嚴格的學習計劃、實踐計劃、甚至是冒險的創業經歷。當他到第10年這個點時,這些高階技能極可能已經有3年的實踐經驗了。
若是咱們沒有作好準備,10年後,如何和這批人競爭?這些軟、硬知識,從十年這個時間刻度倒排,學習計劃、實踐計劃的執行仍是很緊張的。因此,從如今開始給本身制定一個嚴格的學習計劃、嚴格執行,多實踐吧!
歡迎工做一到五年的Java工程師朋友們加入Java架構開發:744677563
本羣提供免費的學習指導 架構資料 以及免費的解答
不懂得問題均可以在本羣提出來 以後還會有職業生涯規劃以及面試指導