專訪 | 攜程架構師:1-5年Java工程師的職業規劃如何做?

經歷了2018年末的陣痛,大家都積攢着一股暗勁蠢蠢欲動。
即將迎來2019年互聯網行業換工作的大潮,技術工程師的升級換位對於一家互聯網公司來說無疑是命脈般的存在——技術強則公司強!
如何做一個搶手的技術工程師呢? 按部就班996、完成項目、清理Bug、儲備技能,這些就夠了嗎?
我邀請到攜程的一線架構師James,相信他數十年經驗也許能給正在找工作的你一些啓發。

嘉賓介紹

個人介紹

專訪 | 攜程架構師:1-5年Java工程師的職業規劃如何做?

James,十餘年Java行業經驗。曾就職於攜程、人人網等一線互聯網公司。 專注於java領域,精通軟件架構設計,對於高併發、高性能服務有深刻的見解 ,在服務化基礎架構和微服務技術有大量的設計和建設經驗。

同時,他也是攜程平臺的技術評審官,負責對新員工的轉正評審工作,對技術人才的選拔及考覈頗有心得。小到大學校招,再到工作2-3年的研發工程師,再到資深系統架構師都經常需要他把關面試。

以下爲專訪內容整理

老男孩:您面試過很多候選人,平時也經常幫助工程師同事答疑解惑,他們一般都會向您請教哪些問題呢?

James:一些工作時間較短的同事會找我諮詢一些求職和工作相關的問題,遇到的比較多的有3類:

■第一類:面試總失敗,找不到合適的工作怎麼辦?

很多面試的失敗,不是因爲技術能力不行,而是給出的回答並不是面試官想要的。面試是有目的性的考察,同樣也需要有目的性的進行準備,知招拆招。這就需要你對這個公司整體的業務、還有你面試的業務有很深的瞭解,同時也需要針對個人之前的工作經歷,進行相應的匹配,給出面試官他想要的答案。(Tips:會說話很重要,也是大多數工程師欠缺的)

■第二類:沒有方向感,不知道自己應該如何提高自己怎麼辦?

很多剛參加工作的同事經常問這個。問題本質很簡單——如何由學校的被動學習,轉變成職場中的主動學習。

這裏有個小經驗,給自己準備一個Todo的列表,把工作中遇到的不瞭解的,感興趣的內容,先記錄在Todo列表中,有了空閒的時間,就從Todo列表中挑選一個跟目前工作方向最接近的,或者自己最感興趣的、或者是自己職業規劃中需要掌握的內容,進行學習。

■第三類:我這個工作任務沒什麼技術含量,我不願意做,該怎麼辦?

其實一個技術人,不太可能上來就直接進行核心項目的核心業務開發,一般都會有一段磨合期。通過在小任務中的表現,來逐漸獲得領導的認可,進而逐漸獲得核心項目的研發機會。

另外,並不是小的任務就沒有技術挑戰,如果可以在任務場景中多一些思考,仍然可以從中有所收穫。不能眼高手低,從一開始就糾結選什麼項目,往往容易丟了西瓜撿了芝麻。

老男孩:2013年的攜程還是個非常新穎的互聯網平臺,在您自己的職業生涯中,有沒有遇到過當時覺得棘手的問題,是如何克服的呢?

James:我在攜程工作這麼久,從一個普通程序員到技術專家,也經歷了很多變動。我認爲一個技術人的成長,始終面臨着這3個問題:

■問題一:面臨有挑戰的任務和項目

開發工程師有自己的OKR,一般都是按部就班的完成自己的任務,但難免會臨時插入重要且緊急的需求,或者接到難度較高、很有挑戰性、需要自己探索的任務,很多技術人沒法平衡這種壓力,會把自己搞的很煩躁,甚至一怒之下衝動辭職。

我在微博也經歷了很多重要的項目,大小不一,但最難、印象最深的就是做一個跨語言服務化的項目,這個項目不是一個新業務的研發,而是一個需要配合不同語言體系,不同架構的業務的中間件方案研發。這個任務最大的困難就是業界沒有合適的方案進行參考,需要根據微博自身的需求、自身的業務特點,進行探索、研發、演進,一開始整個團隊都很難推動開展。

但很快我們就進行了任務的拆分和細化,在這個項目中,我們從最根本的業務需求出發,設計各種方案,快速試錯,逐漸演變成,與業界服務化最新趨勢Service Mesh思路不謀而合,我們設計的Weibo Mesh成爲了Service Mesh方向上爲數不多的大規模應用方案之一。

困難就是機會,面對突如其來的任務和挑戰,合理的調整自己的心態,相信問題總是可以解決的,將自己的模塊做到極致,也需要和團隊打好配合隨時補位。

■問題二:組織架構的變動

現在的互聯網節奏飛快,可能項目做了一段時間就被斃掉,在外人看來的高薪且穩定的技術人也要面臨裁員和轉崗的變動,2018年年底也看到了很多工程師被裁員的新聞。這種非主觀意願的變動,很容易讓人難以接受進而對自己能力產生質疑。

我也曾經歷過這種變動,當時加入到微博主要是負責支付相關的業務,後來因爲組織調整和方向的變動,進行了調崗,當時的心態就比較波動,一是覺得業務不熟悉自己可能無法開展工作,二是心理上有一定落差擔心與人溝通變得複雜。

年輕的時候心態調整是很難的,不過我覺得失落肯定是沒用的,積極的在找解決辦法。當時我快速瞭解新的工作,學習相關的領域知識,努力打造自己的技術品牌形象,也最終和這個團隊融入的很好,得到了大家的認可。

經此調整,我發現工程師的立足根本永遠是技術能力,無論是熟悉的領域或是不熟悉的領域,都需要能快速適應。我覺得面對這種問題,最重要的是提升自己的技術能力,不要將技術能力與業務綁定,也不要自怨自艾沉迷在頹廢失落的情緒之中。

■問題三:機會的錯失和爭取

之前的兩點主要和日常工作相關,但整個技術人的職業生涯發展,都面臨着機會的錯失和爭取。我發現大部分技術人都深知要努力提升自己的技術,相信只要技術好就能走天下的理論。但升職加薪的機會來臨時,他們卻往往抓不住。這個機會可能是一次職級調整的述職,也可能是一次換工作的面試.....

我在剛畢業1年半的時候,錯失過一次人人網的入職機會,當時的人人網還是鼎盛時期,是個金飯碗。面試失敗的原因可以歸結爲2點:

  • 1、忽略了面試前基礎知識的複習,從投簡歷到面試只有一天時間,基本等同於裸面;

  • 2、對面試的職位沒有提前溝通,面試到2面時,才發現不是自己喜歡的崗位,然後又調換了另外一個部門的面試官,這兩個問題導致了最後的面試失敗。

後來我面試攜程時,吸取了失敗的經驗,進行了充足的準備。對面試的工作崗位也進行了詳細的瞭解,當時面試的支付相關的崗位,我還專門在簡歷中突出了自己的做過支付的相關經歷,順利拿到了Offer,從而爲自己之後的發展鋪好了路。

老男孩:剛剛您提到了一些個人的經歷,您認爲一個技術工程師在工作中,或者晉升中面臨的最大的挑戰是什麼呢?

James:每個工程師在職業生涯中都可能會遇到一些迷茫和挑戰,例如職業生涯中的平臺期(技術沒有獲得明顯提升)、職業的轉型期等。

在我看來,一個最大的挑戰是:很多工程師在工作時,沒有從業務角度進行思考,甚至有時僅盲目的按照研發任務進行開發,雖然工作量很大,但在晉升時實際收穫卻並不理想,自己心裏也會委屈。

技術工程師的晉升,其實最主要的是看重工作成果。這種成果一定要由量變引發了質變,比如你爲了提高大家的開發效率,開發了一個公用平臺,節省了很多時間;或者你研發的東西,解決了公司的一個技術難點,這些比埋頭苦幹不計結果更有用。僅僅做常規的工作,很難讓別人看到你。要想成功晉級,我給大家4個建議:

1、從業務角度、產品角度思考問題,思考如何能在業務角度更好的爲公司產生價值

2、目的性要明確,隨時做好進度規劃

3、工作或階段性任務完成時,要及時做總結,既有助於發現不足日後進行改進,也有利於後續晉升答辯時提前準備內容

4、在工作中要儘量樹立起自身的技術品牌。例如言出必行、技術問題排查與分享等

老男孩:請您對1-5年經驗的技術開發工程師,分別給一些職場發展的建議吧!

James:對於不同工作經驗的技術人,工作的能力要求和個人的發展要求是不同的,我把它劃分成3個階段:

大學生/應屆生

求職:基礎知識的掌握和邏輯思維的培養最重要。實習經歷是非常重要的加分項,如果沒有實習經歷,可以自己進行一些小項目的開發或閱讀經典框架的源碼。

職場:工作前1、2年切記心浮氣躁,先打好基礎,注意知識廣度的培養,保持對新技術的好奇心。

3年左右經驗

求職:基礎知識是重點考察對象,對於知識的瞭解深度、項目、架構的理解是非常重要的加分項。

職場:需要多一些主動思考,培養自我學習能力,要有意識的加強鍛鍊團隊協作、跨團隊溝通、項目設計等能力

5年左右經驗

求職:項目經歷的考察是重中之重,對問題的解決方案、架構設計都會有較高的要求

職場:這個階段最重要的是樹立起自己的技術品牌。要經常思考業務或項目中存在什麼樣的問題(不僅僅是技術方面的問題),如何解決,解決後的收益是什麼。對於管理能力要進行有意識的加強

我們應該在不同時期應該培養不同的能力,才能在機會來臨的時候更有底氣。

老男孩:您在這一行這麼久了,可以給求職或者換工作的朋友一些建議嘛?

James:建議大家在面試前簡單對即將面試的公司業務和崗位職責做一些功課。有針對性的準備,才能事半功倍。臨時抱佛腳的成功機率肯定是不高的,因爲技術能力不是一朝一夕之功,更多的是要堅持學習。

學習首先你要有個框架,就像書的目錄一樣,先梗概後細節,在自己的腦海裏建立一套知識體系,再一塊一塊的填滿。在如何爭取到好的機會這方面,我也將自己多年的面試經驗,梳理出成套的面試方法論,結合拉勾的面試大數據,給大家共享一些面試的知識點和技巧。

高性能架構

有了大牛的代碼功底之後,接下來可以更好地學習分佈式架構技術。
透徹理解分佈式架構的好處和優點必然性,適應市場需求,能夠去找一些更大的平臺發展,提升自己的綜合技術能力和薪資。
瞭解從傳統架構到分佈式架構演變過程所帶來的技術變革,將理論和實戰相結合,透徹理解分佈式架構及其解決方案。
從分佈式架構原理,到分佈式架構策略,再到分佈式架構中間件,最後在加上分佈式架構實戰,讓程序員可以在技術深度和技術廣度上得到飛躍的提升,成爲互聯網行業所需要的T型人才。
專訪 | 攜程架構師:1-5年Java工程師的職業規劃如何做?

架構築基

大家都知道,性能一直是讓程序員比較頭疼的問題。當系統架構變得複雜而龐大之後,性能方面就會下降,如果想成爲一名優秀的架構師,性能優化就是你必須思考的問題。
所以性能優化專題從JVM底層原理到內存優化再到各個中間件的性能調優,比如Tomcat調優,MySQL調優等,讓你洞悉性能本質,全面認識性能優化,不再只是旁觀者。
專訪 | 攜程架構師:1-5年Java工程師的職業規劃如何做?

開源框架

這張圖詳細介紹了源碼中所用到的經典設計思想及常用設計模式,先打好內功基礎,瞭解大牛是如何寫代碼的,從而吸收大牛的代碼功力。

結合Spring5和MyBatis源碼,帶你理解作者框架思維,幫助大家尋找分析源碼的切入點,在思想上來一次巨大的昇華。
專訪 | 攜程架構師:1-5年Java工程師的職業規劃如何做?

微服務

隨着業務的發展,代碼量的膨脹和團隊成員的增加,傳統單體式架構的弊端越來越凸顯,嚴重製約了業務的快速創新和敏捷交付。爲了解決傳統單體架構面臨的挑戰,先後演進出了SOA服務化架構、RPC框架、分佈式服務框架,最後就是當今非常流行的微服務架構。微服務化架構並非銀彈,它的實施本身就會面臨很多陷阱和挑戰,涉及到設計、開發、測試、部署、運行和運維等各個方面,一旦使用不當,則會導致整個微服務架構改造的效果大打折扣,甚至失敗。
專訪 | 攜程架構師:1-5年Java工程師的職業規劃如何做?

團隊協作

一名優秀的架構師必須有適合自己的兵器,也就是工慾善其事必先利其器,不管是小白,還是資深開發,都需要先選擇好的工具。工程化專題的學習能幫助你和團隊提升開發效率,讓自己有更多時間來思考。
Git:可以更好地管理你和你團隊的代碼。
Maven:可以更好地管理jar包和項目的構建等。
Jenkins:可以更好地持續編譯,集成,發佈你的項目。
Sonar:一個開源的代碼質量分析平臺,便於管理代碼的質量,可檢查出項目代碼的漏洞和潛在的邏輯問題(提升代碼的質量,更加高效地提升開發效率)。
專訪 | 攜程架構師:1-5年Java工程師的職業規劃如何做?

B2C項目實戰

電商項目目的是把所學的分佈式,微服務,性能調優等知識運用起來,只有在項目中你才能鞏固知識,提升自己。實踐電商項目會利用雲服務器搭建真實的開發和部署環境,讓你從零到項目實戰,體驗真實的企業級項目開發過程,讓你具備獨立開發和搭建分佈架構系統的能力。
專訪 | 攜程架構師:1-5年Java工程師的職業規劃如何做?


從無到有的是架構;從表到裏的是抽象;從粗到細的是設計。大家對架構師有哪些看法,也歡迎在留言區留言,我們一起交流討論。

下文整理的這些架構技術希望對Java開發的朋友們有所參考以及少走彎路,本文的重點是你有沒有收穫與成長,其餘的都不重要,希望讀者們能謹記這一點。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章