你是否認真思考過:畢業 3-5 年、10 年,乃至更久後,我們希望成為什麼樣的人?作為一名技術人,我們要如何規劃自己的職業發展生涯?
網上熱議的“35 歲中年危機”,本質上又因什麼而焦慮?今天,阿裡資深技術專家毗盧,将帶來自己的思考與了解,希望對大家有所啟發。
近期,我與團隊同學探讨了職業發展規劃的問題:
有些同學表示希望後續能進一步在技術領域(或管理方向)有進一步的積累。
有的同學表示希望在新的一年能具有更好的技術影響力,自己能做一些技術決定,去影響其他人,這樣自己會很有成就感。
是以,我也問了一些問題:
你希望技術能進一步積累,那你積累的方向和期望達到的結果分别是什麼?
你希望能有技術決策,希望有影響力,你覺得應該如何做到?是希望通過崗位任命的方式嗎?
你覺得是否成功的标志,就是今年或明年得到晉升嗎?
......
大部分同學在面對這些問題時,其實是比較迷茫的,也缺少真正可度量的衡量标準。
是否能在短期内獲得晉升成了大部分人作為“組織是否認可、自己是否認可”的衡量标準了。
當然,這個話題仁者見仁、智者見智,這裡我簡單地談談我的看法。我以相對比較口水化的方式,将職業發展分兩個階段來進行闡述:
第一階段:大學畢業 3 到 5 年。
第二階段:大學畢業 5 到 10 年。
第一階段:大學畢業 3 到 5 年
對于從事 Java 軟體開發的技術同學,在畢業後的 3 到 5 年内主要都是以學習、積累為主。
這個階段的工作幾乎每天都有驚喜,都有收獲。從一開始啥都不懂的校園“新鮮人”向“職業人”轉變。
在這個階段,你會學習:
基礎的 Java 知識:你會開始看《Java程式設計思想》、《Effective Java》。
高品質代碼進階知識:你會開始看《重構:改善既有代碼的設計》、《代碼大全》、《程式設計珠玑》。
常用的主流架構:比如 SSH 相關的《Spring實戰》、《Spring Boot實戰》、《Hibernate實戰(第2版)》。
當然,這些書已經不夠了,你會通過 Google、Baidu 大量地浏覽線上的資源:Apache官網、Spring官網、Hibernate官網。你會去 Stack Overflow 問問題或找答案。
系統設計與算法知識:《系統分析與設計方法》、《設計模式》、《需求分析與系統設計》、《面向對象分析與設計》、《UML使用者指南》、《算法導論》。
其他知識:比如資料庫調優、緩存架構、NoSQL 資料庫、日志架構等等。
在這 5 年間,快速地完成這些基礎知識的學習,并能在項目中快速地學以緻用。
不僅自身能獲得比較高的成就感,而且實際的用人機關、獵頭也會非常喜歡這類熟練工。
從大部分人的實際發展軌迹看,這個階段發展快的人和正常發展速度的人,差别還不是很大。
比如,發展非常快的人,從畢業就入職阿裡的 P5 到 P7(注:阿裡内部職稱評級),可能三年就可以做到。發展速度正常的人,可能需要 5-6 年也可以到 P7。
也就是說,這個階段正常發展速度的同學也僅僅比發展速度快的人慢2-3年而已。
這 2 到 3 年的差距,是可以通過有針對性的學習、重大項目的曆練等完成這些知識的學習。
無非是,有的同學會嚴格要求自己,有嚴格的學習計劃;有的同學趕早參加了一些重點的、痛苦的項目得到了鍛煉。隻要是做技術的,遲早都會經曆過,都會成長起來。
發現沒有?這個階段,我們能協調好的資源其實就是自己,更多的是一個“個人貢獻者”。隻要把自己管好了,學習計劃執行好了,工作高品質做好了就能得到認可。
第二階段:大學畢業 5 到 10 年
很多大學同學,特别是研究所學生同學。在畢業 10 年後,就已經到了 34、35 歲左右了。也是前段時間網上廣泛讨論的所謂 34+ 歲現象。
其實,年齡并不是問題的真正原因。真正的原因還是在于自身“競争力”是否符合這個年齡所應該具備的。
到了這個年齡的人,往往已經不是“個人貢獻者”了,而是“團隊貢獻者”。團隊貢獻者可能是帶團隊的 Team Leader,也可能是個架構師,在技術決策上具有團隊影響力和話語權。
那麼,為什麼這些人能管理團隊或者有影響力呢?從公司的經營視角看,一個管理團隊的人,他必須為業務的成功負責。
說個大白話,一個 Team Leader 管了 N 個人,他至少要能保證大家輸出所産生的價值,至少要高于這個團隊的工資、獎金、五險一金、OPEX、CAPEX 等等吧。
這個 Team Leader 為了大家輸出得有價值,他是不是需要能:
對所負責領域的業務特點、發展趨勢、友商競争分析有很好的洞察?能知道這個業務領域的客戶是誰?他們的需求是什麼?他們的痛點是什麼?
是以,這個 Team Leader 應該需要學習《咨詢的奧秘》、《探索需求》、《系統化思維導論》。對于技術型的 Team Leader,還應該了解《成為技術上司者:掌握全面解決問題的方法》。
服務于特定領域的客戶,我們需要了解我們客戶的企業架構、業務知識。要了解清楚規劃的産品、服務,什麼才是客戶所需要的。
那麼,從理論上,我們是否應該學習一些 TOGAF、NGOSS、ITIL 等業務理論以及業務知識?
作為 Team Leader,是否有必要能将自己對于市場的洞察轉換成業務規劃,并能向自己的老闆(或者投資人)說清楚、講明白?并争取到老闆的同意,包括資金、人力資源等。
對于,能否把事情講明白,我們可能需要學習《金字塔原理》,并能非常清晰、有邏輯性地進行表達與溝通。
當然,有些業務發展的事不一定特别有邏輯,是需要摸索、嘗試的,那麼你是否能将一個不确定的領域說服老闆并獲得支援,我們又需要什麼?《博弈論》、《影響力》等。
獲得老闆支援後,就需要開始帶着兄弟們幹活了。作為帶頭人,你看我們是否需要能将業務趨勢、客戶痛點進行業務模組化好讓團隊的 PD、技術都能了解?
在做業務進一步深入分析,可能就需要學習《領域驅動設計:軟體核心複雜性應對之道》、《實作領域驅動設計》、《企業應用架構模式》、《恰如其分的軟體架構》等等。
做完業務設計後,開始要帶着團隊做技術方案設計、接口設計以及編碼實作等。這個過程,Team Leader 又需要具備軟體項目管理的能力。
無論是《PMBOK指南》,還是《靈活軟體開發》、《人月神話》、《程式開發心理學》,相信總歸還是會有點幫助的。
對于一些有國際化要求的公司,還需要再學習英語吧!
嗯,還需要有個好的身體,還需要經常鍛煉,學習科學的健身吧(說起來自己臉紅)。
至少我明白了一個道理,以前我都是跟自己說,等這段時間過了,閑下來去鍛煉一下。其實,我發現,越是忙的時候,越需要鍛煉身體!
另外,在這 10 年内,比較關鍵的是——你還經曆過什麼有挑戰的業務、技術、産品、平台等方面的成功與失敗經驗?
在這些經曆裡,你可能會遇到這些困難與挑戰:團隊磨合的挑戰、技術方案上的争執、平台優先 or 業務優先的博弈、低落的團隊氛圍、個人的低谷等等。
這些困難與挑戰,你是退縮了?還是有成長?在帶團隊時,再次面臨這些挑戰時,這時你是否有解或者有勇氣了?
發現沒有?畢業 10 年後,作為一個團隊貢獻者,你可能需要具備這些能力,并且還遠遠不止。
而且,更可悲的時,當畢業 10 年後,突然發現自己不具備這個能力時(比如晉升失敗時發現了),這些能力 GAP 就不再是 2 到 3 年就能追得上的了。
我見過一些有準備的同學,他們給自己的目标是在畢業第 7 年就要具備這些能力,他有嚴格的學習計劃、實踐計劃、甚至是冒險的創業經曆。
當他到第 10 年這個點時,這些高階技能很可能已經有 3 年的實踐經驗了。
如果我們沒有做好準備,十年後,如何和這批人競争?這些軟、硬知識,從十年這個時間刻度倒排,學習計劃、實踐計劃的執行還是很緊張的。
是以,從現在開始給自己制定一個嚴格的學習計劃、嚴格執行,多實踐吧!
原文釋出時間為:2018-07-25
本文來自雲栖社群合作夥伴“
Java程式員聯盟”,了解相關資訊可以關注“
”