您好,登錄后才能下訂單哦!
經(jīng)歷了2018年末的陣痛,大家都積攢著一股暗勁蠢蠢欲動(dòng)。
即將迎來2019年互聯(lián)網(wǎng)行業(yè)換工作的大潮,技術(shù)工程師的升級(jí)換位對于一家互聯(lián)網(wǎng)公司來說無疑是命脈般的存在——技術(shù)強(qiáng)則公司強(qiáng)!
如何做一個(gè)搶手的技術(shù)工程師呢? 按部就班996、完成項(xiàng)目、清理Bug、儲(chǔ)備技能,這些就夠了嗎?
我邀請到攜程的一線架構(gòu)師James,相信他數(shù)十年經(jīng)驗(yàn)也許能給正在找工作的你一些啟發(fā)。
James,十余年Java行業(yè)經(jīng)驗(yàn)。曾就職于攜程、人人網(wǎng)等一線互聯(lián)網(wǎng)公司。 專注于java領(lǐng)域,精通軟件架構(gòu)設(shè)計(jì),對于高并發(fā)、高性能服務(wù)有深刻的見解 ,在服務(wù)化基礎(chǔ)架構(gòu)和微服務(wù)技術(shù)有大量的設(shè)計(jì)和建設(shè)經(jīng)驗(yàn)。
同時(shí),他也是攜程平臺(tái)的技術(shù)評(píng)審官,負(fù)責(zé)對新員工的轉(zhuǎn)正評(píng)審工作,對技術(shù)人才的選拔及考核頗有心得。小到大學(xué)校招,再到工作2-3年的研發(fā)工程師,再到資深系統(tǒng)架構(gòu)師都經(jīng)常需要他把關(guān)面試。
以下為專訪內(nèi)容整理
■第一類:面試總失敗,找不到合適的工作怎么辦?
很多面試的失敗,不是因?yàn)榧夹g(shù)能力不行,而是給出的回答并不是面試官想要的。面試是有目的性的考察,同樣也需要有目的性的進(jìn)行準(zhǔn)備,知招拆招。這就需要你對這個(gè)公司整體的業(yè)務(wù)、還有你面試的業(yè)務(wù)有很深的了解,同時(shí)也需要針對個(gè)人之前的工作經(jīng)歷,進(jìn)行相應(yīng)的匹配,給出面試官他想要的答案。(Tips:會(huì)說話很重要,也是大多數(shù)工程師欠缺的)
■第二類:沒有方向感,不知道自己應(yīng)該如何提高自己怎么辦?
很多剛參加工作的同事經(jīng)常問這個(gè)。問題本質(zhì)很簡單——如何由學(xué)校的被動(dòng)學(xué)習(xí),轉(zhuǎn)變成職場中的主動(dòng)學(xué)習(xí)。
這里有個(gè)小經(jīng)驗(yàn),給自己準(zhǔn)備一個(gè)Todo的列表,把工作中遇到的不了解的,感興趣的內(nèi)容,先記錄在Todo列表中,有了空閑的時(shí)間,就從Todo列表中挑選一個(gè)跟目前工作方向最接近的,或者自己最感興趣的、或者是自己職業(yè)規(guī)劃中需要掌握的內(nèi)容,進(jìn)行學(xué)習(xí)。
■第三類:我這個(gè)工作任務(wù)沒什么技術(shù)含量,我不愿意做,該怎么辦?
其實(shí)一個(gè)技術(shù)人,不太可能上來就直接進(jìn)行核心項(xiàng)目的核心業(yè)務(wù)開發(fā),一般都會(huì)有一段磨合期。通過在小任務(wù)中的表現(xiàn),來逐漸獲得領(lǐng)導(dǎo)的認(rèn)可,進(jìn)而逐漸獲得核心項(xiàng)目的研發(fā)機(jī)會(huì)。
另外,并不是小的任務(wù)就沒有技術(shù)挑戰(zhàn),如果可以在任務(wù)場景中多一些思考,仍然可以從中有所收獲。不能眼高手低,從一開始就糾結(jié)選什么項(xiàng)目,往往容易丟了西瓜撿了芝麻。
■問題一:面臨有挑戰(zhàn)的任務(wù)和項(xiàng)目
開發(fā)工程師有自己的OKR,一般都是按部就班的完成自己的任務(wù),但難免會(huì)臨時(shí)插入重要且緊急的需求,或者接到難度較高、很有挑戰(zhàn)性、需要自己探索的任務(wù),很多技術(shù)人沒法平衡這種壓力,會(huì)把自己搞的很煩躁,甚至一怒之下沖動(dòng)辭職。
我在微博也經(jīng)歷了很多重要的項(xiàng)目,大小不一,但最難、印象最深的就是做一個(gè)跨語言服務(wù)化的項(xiàng)目,這個(gè)項(xiàng)目不是一個(gè)新業(yè)務(wù)的研發(fā),而是一個(gè)需要配合不同語言體系,不同架構(gòu)的業(yè)務(wù)的中間件方案研發(fā)。這個(gè)任務(wù)最大的困難就是業(yè)界沒有合適的方案進(jìn)行參考,需要根據(jù)微博自身的需求、自身的業(yè)務(wù)特點(diǎn),進(jìn)行探索、研發(fā)、演進(jìn),一開始整個(gè)團(tuán)隊(duì)都很難推動(dòng)開展。
但很快我們就進(jìn)行了任務(wù)的拆分和細(xì)化,在這個(gè)項(xiàng)目中,我們從最根本的業(yè)務(wù)需求出發(fā),設(shè)計(jì)各種方案,快速試錯(cuò),逐漸演變成,與業(yè)界服務(wù)化最新趨勢Service Mesh思路不謀而合,我們設(shè)計(jì)的Weibo Mesh成為了Service Mesh方向上為數(shù)不多的大規(guī)模應(yīng)用方案之一。
困難就是機(jī)會(huì),面對突如其來的任務(wù)和挑戰(zhàn),合理的調(diào)整自己的心態(tài),相信問題總是可以解決的,將自己的模塊做到極致,也需要和團(tuán)隊(duì)打好配合隨時(shí)補(bǔ)位。
■問題二:組織架構(gòu)的變動(dòng)
現(xiàn)在的互聯(lián)網(wǎng)節(jié)奏飛快,可能項(xiàng)目做了一段時(shí)間就被斃掉,在外人看來的高薪且穩(wěn)定的技術(shù)人也要面臨裁員和轉(zhuǎn)崗的變動(dòng),2018年年底也看到了很多工程師被裁員的新聞。這種非主觀意愿的變動(dòng),很容易讓人難以接受進(jìn)而對自己能力產(chǎn)生質(zhì)疑。
我也曾經(jīng)歷過這種變動(dòng),當(dāng)時(shí)加入到微博主要是負(fù)責(zé)支付相關(guān)的業(yè)務(wù),后來因?yàn)榻M織調(diào)整和方向的變動(dòng),進(jìn)行了調(diào)崗,當(dāng)時(shí)的心態(tài)就比較波動(dòng),一是覺得業(yè)務(wù)不熟悉自己可能無法開展工作,二是心理上有一定落差擔(dān)心與人溝通變得復(fù)雜。
年輕的時(shí)候心態(tài)調(diào)整是很難的,不過我覺得失落肯定是沒用的,積極的在找解決辦法。當(dāng)時(shí)我快速了解新的工作,學(xué)習(xí)相關(guān)的領(lǐng)域知識(shí),努力打造自己的技術(shù)品牌形象,也最終和這個(gè)團(tuán)隊(duì)融入的很好,得到了大家的認(rèn)可。
經(jīng)此調(diào)整,我發(fā)現(xiàn)工程師的立足根本永遠(yuǎn)是技術(shù)能力,無論是熟悉的領(lǐng)域或是不熟悉的領(lǐng)域,都需要能快速適應(yīng)。我覺得面對這種問題,最重要的是提升自己的技術(shù)能力,不要將技術(shù)能力與業(yè)務(wù)綁定,也不要自怨自艾沉迷在頹廢失落的情緒之中。
■問題三:機(jī)會(huì)的錯(cuò)失和爭取
之前的兩點(diǎn)主要和日常工作相關(guān),但整個(gè)技術(shù)人的職業(yè)生涯發(fā)展,都面臨著機(jī)會(huì)的錯(cuò)失和爭取。我發(fā)現(xiàn)大部分技術(shù)人都深知要努力提升自己的技術(shù),相信只要技術(shù)好就能走天下的理論。但升職加薪的機(jī)會(huì)來臨時(shí),他們卻往往抓不住。這個(gè)機(jī)會(huì)可能是一次職級(jí)調(diào)整的述職,也可能是一次換工作的面試.....
我在剛畢業(yè)1年半的時(shí)候,錯(cuò)失過一次人人網(wǎng)的入職機(jī)會(huì),當(dāng)時(shí)的人人網(wǎng)還是鼎盛時(shí)期,是個(gè)金飯碗。面試失敗的原因可以歸結(jié)為2點(diǎn):
1、忽略了面試前基礎(chǔ)知識(shí)的復(fù)習(xí),從投簡歷到面試只有一天時(shí)間,基本等同于裸面;
后來我面試攜程時(shí),吸取了失敗的經(jīng)驗(yàn),進(jìn)行了充足的準(zhǔn)備。對面試的工作崗位也進(jìn)行了詳細(xì)的了解,當(dāng)時(shí)面試的支付相關(guān)的崗位,我還專門在簡歷中突出了自己的做過支付的相關(guān)經(jīng)歷,順利拿到了Offer,從而為自己之后的發(fā)展鋪好了路。
在我看來,一個(gè)最大的挑戰(zhàn)是:很多工程師在工作時(shí),沒有從業(yè)務(wù)角度進(jìn)行思考,甚至有時(shí)僅盲目的按照研發(fā)任務(wù)進(jìn)行開發(fā),雖然工作量很大,但在晉升時(shí)實(shí)際收獲卻并不理想,自己心里也會(huì)委屈。
技術(shù)工程師的晉升,其實(shí)最主要的是看重工作成果。這種成果一定要由量變引發(fā)了質(zhì)變,比如你為了提高大家的開發(fā)效率,開發(fā)了一個(gè)公用平臺(tái),節(jié)省了很多時(shí)間;或者你研發(fā)的東西,解決了公司的一個(gè)技術(shù)難點(diǎn),這些比埋頭苦干不計(jì)結(jié)果更有用。僅僅做常規(guī)的工作,很難讓別人看到你。要想成功晉級(jí),我給大家4個(gè)建議:
1、從業(yè)務(wù)角度、產(chǎn)品角度思考問題,思考如何能在業(yè)務(wù)角度更好的為公司產(chǎn)生價(jià)值
2、目的性要明確,隨時(shí)做好進(jìn)度規(guī)劃
3、工作或階段性任務(wù)完成時(shí),要及時(shí)做總結(jié),既有助于發(fā)現(xiàn)不足日后進(jìn)行改進(jìn),也有利于后續(xù)晉升答辯時(shí)提前準(zhǔn)備內(nèi)容
4、在工作中要盡量樹立起自身的技術(shù)品牌。例如言出必行、技術(shù)問題排查與分享等
求職:基礎(chǔ)知識(shí)的掌握和邏輯思維的培養(yǎng)最重要。實(shí)習(xí)經(jīng)歷是非常重要的加分項(xiàng),如果沒有實(shí)習(xí)經(jīng)歷,可以自己進(jìn)行一些小項(xiàng)目的開發(fā)或閱讀經(jīng)典框架的源碼。
職場:工作前1、2年切記心浮氣躁,先打好基礎(chǔ),注意知識(shí)廣度的培養(yǎng),保持對新技術(shù)的好奇心。
求職:基礎(chǔ)知識(shí)是重點(diǎn)考察對象,對于知識(shí)的了解深度、項(xiàng)目、架構(gòu)的理解是非常重要的加分項(xiàng)。
職場:需要多一些主動(dòng)思考,培養(yǎng)自我學(xué)習(xí)能力,要有意識(shí)的加強(qiáng)鍛煉團(tuán)隊(duì)協(xié)作、跨團(tuán)隊(duì)溝通、項(xiàng)目設(shè)計(jì)等能力
求職:項(xiàng)目經(jīng)歷的考察是重中之重,對問題的解決方案、架構(gòu)設(shè)計(jì)都會(huì)有較高的要求
職場:這個(gè)階段最重要的是樹立起自己的技術(shù)品牌。要經(jīng)常思考業(yè)務(wù)或項(xiàng)目中存在什么樣的問題(不僅僅是技術(shù)方面的問題),如何解決,解決后的收益是什么。對于管理能力要進(jìn)行有意識(shí)的加強(qiáng)
我們應(yīng)該在不同時(shí)期應(yīng)該培養(yǎng)不同的能力,才能在機(jī)會(huì)來臨的時(shí)候更有底氣。
學(xué)習(xí)首先你要有個(gè)框架,就像書的目錄一樣,先梗概后細(xì)節(jié),在自己的腦海里建立一套知識(shí)體系,再一塊一塊的填滿。在如何爭取到好的機(jī)會(huì)這方面,我也將自己多年的面試經(jīng)驗(yàn),梳理出成套的面試方法論,結(jié)合拉勾的面試大數(shù)據(jù),給大家共享一些面試的知識(shí)點(diǎn)和技巧。
有了大牛的代碼功底之后,接下來可以更好地學(xué)習(xí)分布式架構(gòu)技術(shù)。
透徹理解分布式架構(gòu)的好處和優(yōu)點(diǎn)必然性,適應(yīng)市場需求,能夠去找一些更大的平臺(tái)發(fā)展,提升自己的綜合技術(shù)能力和薪資。
了解從傳統(tǒng)架構(gòu)到分布式架構(gòu)演變過程所帶來的技術(shù)變革,將理論和實(shí)戰(zhàn)相結(jié)合,透徹理解分布式架構(gòu)及其解決方案。
從分布式架構(gòu)原理,到分布式架構(gòu)策略,再到分布式架構(gòu)中間件,最后在加上分布式架構(gòu)實(shí)戰(zhàn),讓程序員可以在技術(shù)深度和技術(shù)廣度上得到飛躍的提升,成為互聯(lián)網(wǎng)行業(yè)所需要的T型人才。
大家都知道,性能一直是讓程序員比較頭疼的問題。當(dāng)系統(tǒng)架構(gòu)變得復(fù)雜而龐大之后,性能方面就會(huì)下降,如果想成為一名優(yōu)秀的架構(gòu)師,性能優(yōu)化就是你必須思考的問題。
所以性能優(yōu)化專題從JVM底層原理到內(nèi)存優(yōu)化再到各個(gè)中間件的性能調(diào)優(yōu),比如Tomcat調(diào)優(yōu),MySQL調(diào)優(yōu)等,讓你洞悉性能本質(zhì),全面認(rèn)識(shí)性能優(yōu)化,不再只是旁觀者。
這張圖詳細(xì)介紹了源碼中所用到的經(jīng)典設(shè)計(jì)思想及常用設(shè)計(jì)模式,先打好內(nèi)功基礎(chǔ),了解大牛是如何寫代碼的,從而吸收大牛的代碼功力。
結(jié)合Spring5和MyBatis源碼,帶你理解作者框架思維,幫助大家尋找分析源碼的切入點(diǎn),在思想上來一次巨大的升華。
隨著業(yè)務(wù)的發(fā)展,代碼量的膨脹和團(tuán)隊(duì)成員的增加,傳統(tǒng)單體式架構(gòu)的弊端越來越凸顯,嚴(yán)重制約了業(yè)務(wù)的快速創(chuàng)新和敏捷交付。為了解決傳統(tǒng)單體架構(gòu)面臨的挑戰(zhàn),先后演進(jìn)出了SOA服務(wù)化架構(gòu)、RPC框架、分布式服務(wù)框架,最后就是當(dāng)今非常流行的微服務(wù)架構(gòu)。微服務(wù)化架構(gòu)并非銀彈,它的實(shí)施本身就會(huì)面臨很多陷阱和挑戰(zhàn),涉及到設(shè)計(jì)、開發(fā)、測試、部署、運(yùn)行和運(yùn)維等各個(gè)方面,一旦使用不當(dāng),則會(huì)導(dǎo)致整個(gè)微服務(wù)架構(gòu)改造的效果大打折扣,甚至失敗。
一名優(yōu)秀的架構(gòu)師必須有適合自己的兵器,也就是工欲善其事必先利其器,不管是小白,還是資深開發(fā),都需要先選擇好的工具。工程化專題的學(xué)習(xí)能幫助你和團(tuán)隊(duì)提升開發(fā)效率,讓自己有更多時(shí)間來思考。
Git:可以更好地管理你和你團(tuán)隊(duì)的代碼。
Maven:可以更好地管理jar包和項(xiàng)目的構(gòu)建等。
Jenkins:可以更好地持續(xù)編譯,集成,發(fā)布你的項(xiàng)目。
Sonar:一個(gè)開源的代碼質(zhì)量分析平臺(tái),便于管理代碼的質(zhì)量,可檢查出項(xiàng)目代碼的漏洞和潛在的邏輯問題(提升代碼的質(zhì)量,更加高效地提升開發(fā)效率)。
電商項(xiàng)目目的是把所學(xué)的分布式,微服務(wù),性能調(diào)優(yōu)等知識(shí)運(yùn)用起來,只有在項(xiàng)目中你才能鞏固知識(shí),提升自己。實(shí)踐電商項(xiàng)目會(huì)利用云服務(wù)器搭建真實(shí)的開發(fā)和部署環(huán)境,讓你從零到項(xiàng)目實(shí)戰(zhàn),體驗(yàn)真實(shí)的企業(yè)級(jí)項(xiàng)目開發(fā)過程,讓你具備獨(dú)立開發(fā)和搭建分布架構(gòu)系統(tǒng)的能力。
從無到有的是架構(gòu);從表到里的是抽象;從粗到細(xì)的是設(shè)計(jì)。大家對架構(gòu)師有哪些看法,也歡迎在留言區(qū)留言,我們一起交流討論。
下文整理的這些架構(gòu)技術(shù)希望對Java開發(fā)的朋友們有所參考以及少走彎路,本文的重點(diǎn)是你有沒有收獲與成長,其余的都不重要,希望讀者們能謹(jǐn)記這一點(diǎn)。同時(shí)我經(jīng)過多年的收藏目前也算收集到了一套完整的學(xué)習(xí)資料,希望對想成為架構(gòu)師的朋友有一定的參考和幫助。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。