螞蟻金服技術(shù)專家分享:如何在三年內(nèi)快速成長為一名技術(shù)專家

工作前三年是職業(yè)生涯中成長最快的幾年,在這段時(shí)間里你會充滿激情,做事專注,也容易養(yǎng)成良好的習(xí)慣。在我們公司有些同學(xué)在前三年中就快速成為某一個(gè)領(lǐng)域的技術(shù)專家,有些同學(xué)也可能止步不前。本文和大家一起探討下如何在三年內(nèi)快速成長為一名技術(shù)專家。

學(xué)習(xí)方法

1:掌握良好的學(xué)習(xí)心態(tài)

2:掌握系統(tǒng)化的學(xué)習(xí)方法

3:知識如何內(nèi)化成能力

4:廣度和深度的選擇

實(shí)戰(zhàn)技巧

1:你需要學(xué)會的編碼習(xí)慣

2:在業(yè)務(wù)團(tuán)隊(duì)做開發(fā)如何成長

掌握良好的學(xué)習(xí)心態(tài)

空杯心態(tài)

首先要有空杯的學(xué)習(xí)心態(tài),而不是傲嬌自滿,故步自封,空杯子才可以裝下更多的東西。首先要學(xué)會取百家之長,帶著欣賞的眼光看團(tuán)隊(duì)的同事或?qū)W校的同學(xué),欣賞每位同事或同學(xué)的優(yōu)點(diǎn),然后吸取他們的優(yōu)點(diǎn),每個(gè)同事都有其擅長的能力,比如有的同事技術(shù)能力強(qiáng),那么可以觀察下他如何學(xué)習(xí)的(或者找他請教學(xué)習(xí)方法),有的同學(xué)擅長解決線上問題,那么觀察他是如何解決線上問題的,解決思路是什么?如果他解決不了時(shí),他是如何尋求幫助。有的同學(xué)擅長使用IDE或MAC的快捷鍵,那么可以向他學(xué)習(xí)提高工作效率。有的同學(xué)能快速理解業(yè)務(wù)知識,觀察他是如何做到的,自己如何達(dá)到他的程度。溝通能力,解決問題能力以及規(guī)劃能力都可以向同事學(xué)習(xí)。

挑戰(zhàn)權(quán)威

從書上看到一個(gè)知識點(diǎn),或者從別人那里聽到一個(gè)知識點(diǎn),一定要去挑戰(zhàn)和質(zhì)疑這個(gè)知識點(diǎn)的正確性,否則學(xué)到的知識點(diǎn)可能是錯(cuò)誤的。先用邏輯思維推測下,再實(shí)戰(zhàn)檢測下,一定要記住實(shí)踐是檢驗(yàn)真理的唯一標(biāo)準(zhǔn)。比如同事說這個(gè)SQL加這個(gè)索引是最快的,首先要思考同事的結(jié)論是如何得出的,是靠歷史經(jīng)驗(yàn)還是測試過,如果我們沒有經(jīng)驗(yàn),就加上這個(gè)索引跑下SQL,看看執(zhí)行計(jì)劃和執(zhí)行時(shí)間,再換下其他索引試試會不會更快。依次類推,并發(fā)一定比串行快嗎?無鎖一定比加鎖快嗎? 很多結(jié)論都是在特定的場景下才會產(chǎn)生的,一定要自己親手實(shí)踐驗(yàn)證下。

堅(jiān)持學(xué)習(xí)

有的同學(xué)可能工作了五年,但是學(xué)習(xí)的時(shí)間可能一年都不到。學(xué)技術(shù)不能急于求成,只要學(xué)習(xí)方法正確,量變一定會引起質(zhì)變。我在大學(xué)剛學(xué)JAVA時(shí),怎么都學(xué)不會,但是堅(jiān)持學(xué)習(xí)了幾個(gè)月,每天看張老師的JAVA視頻教學(xué),買書按照書里的代碼一行一行的敲代碼,白天睡覺,晚上學(xué)習(xí)和寫代碼,寫到宿舍關(guān)燈時(shí)就去避風(fēng)塘呆一晚上,早上6點(diǎn)鐘回宿舍睡覺,學(xué)到一定時(shí)間后,突然恍然大悟,才入了門。

在工作中,我曾經(jīng)花了一個(gè)月的時(shí)間學(xué)習(xí)AOP的實(shí)現(xiàn)原理,學(xué)習(xí)了各種方式來實(shí)現(xiàn)AOP的原理,并寫了幾種實(shí)現(xiàn)方式的代碼,雖然花的時(shí)間很多,但是到現(xiàn)在仍記憶猶新,對于排查問題和學(xué)習(xí)其他知識都非常有幫助。

要做到堅(jiān)持學(xué)習(xí),學(xué)習(xí)的環(huán)境非常重要。如果你想學(xué),但是又不在學(xué)習(xí)狀態(tài),可以考慮換個(gè)學(xué)習(xí)環(huán)境,我經(jīng)常會去星巴克看書和學(xué)習(xí)。我聽說有的同事會周末抽一天去大學(xué)教師上自習(xí)。

把事做精

對自己要求越高,進(jìn)步越快。要有強(qiáng)烈的把事情做完美的心態(tài),我剛開始工作的時(shí)候,總是快而不精,做事做的不夠細(xì)致,總希望快速拿出結(jié)果證明自己,但是反而證明不了什么,技術(shù)能力也得不到提升,缺少技術(shù)亮點(diǎn),在團(tuán)隊(duì)中也沒什么影響力,后面就開始鍛煉一次就把事情做對的心態(tài)和方法。我觀察過,很多人都擅長快速做事情,但是把事情做好做精致的人會比較少,但是結(jié)果卻是**在精益求精的路上才會快速提高自己的能力**。比如用100行代碼實(shí)現(xiàn)的功能,思考下是否可以用10行來實(shí)現(xiàn),以便于降低運(yùn)維成本,提高下次的編碼效率。引用GUAVA等類庫,提取公共方法,和使用JDK8新特性等。系統(tǒng)的方法壓測過后,單機(jī)只能承受1700QPS,可以思考和實(shí)踐能否優(yōu)化下程序提高QPS,減少服務(wù)器數(shù)量。

把事情做精,一定是要強(qiáng)迫自己多花心思多花時(shí)間在這件事情上。有位技術(shù)牛人給我分享了一個(gè)心得,我覺得說的非常好,老板給你布置了一個(gè)任務(wù),**你要花百分之150的精力做到100分,這樣在老板那里你就能拿到80分或者60分**。

掌握系統(tǒng)化的學(xué)習(xí)方法

如果學(xué)習(xí)到的知識不成體系,那么遇到問題時(shí)就會非常難解決。有些同學(xué)會出現(xiàn)這些情況,比如編碼時(shí)遇到問題百度搜索,如果百度上找不到答案,這個(gè)問題就解決不了。再比如,在開發(fā)中要用到某個(gè)技術(shù)點(diǎn),就學(xué)習(xí)下API,程序調(diào)通后就不再深入研究,淺嘗輒止,如果程序遇到其他問題也不知道如何解決。

以上情況我認(rèn)為叫**點(diǎn)狀學(xué)習(xí)**。遇到一個(gè)問題,解決一個(gè)問題,需要一項(xiàng)技術(shù),學(xué)習(xí)一項(xiàng)技術(shù)。那么如何由點(diǎn)到面,由面到體,形成系統(tǒng)化學(xué)習(xí)呢。

首先要確定學(xué)習(xí)的知識領(lǐng)域,需要達(dá)成的學(xué)習(xí)目標(biāo),針對目標(biāo)制定學(xué)習(xí)計(jì)劃,就像你要寫一本書一樣,先把目錄寫出來,然后根據(jù)目錄上的知識點(diǎn)逐步去學(xué)習(xí),最后把這些知識點(diǎn)關(guān)聯(lián)起來,形成一個(gè)系統(tǒng)化的知識體系。學(xué)習(xí)的時(shí)候,可以制定一個(gè)計(jì)劃,以周為單位,比如第一周學(xué)什么,第二周學(xué)什么。

比如我最近在學(xué)習(xí)人工智能,學(xué)習(xí)步驟是:

1: 高數(shù)基礎(chǔ)知識:線性代數(shù),微積分和統(tǒng)計(jì)學(xué)。最近在打德州撲克時(shí),我也會用統(tǒng)計(jì)學(xué)里的知識計(jì)算下輸贏的概率。

2: 人工智能基礎(chǔ):買幾本書人工智能的基礎(chǔ)書籍,如《機(jī)器學(xué)習(xí)基礎(chǔ)教程》《Python機(jī)器學(xué)習(xí)》

3:框架:TensorFlow等。

4:實(shí)戰(zhàn):在工作中找到一個(gè)應(yīng)用場景,把學(xué)到的知識運(yùn)用進(jìn)去。

知識如何內(nèi)化成能力

作家格拉德威爾在《異類》一書中指出,1萬小時(shí)的錘煉是任何人從平凡變成世界級大師的必要條件。1萬小時(shí)有多久?每天學(xué)習(xí)10小時(shí),需要大約三年。但是很多人都工作了五年甚至更長,但是為什么成為世界級大師的卻非常少。讀者可以先自己思考下這個(gè)問題。接下來談?wù)勎业目捶ā?/p>

成長必須經(jīng)歷一個(gè)步驟,就是把知識內(nèi)化成能力。**知識是用腦記住的,能力是用手練習(xí)出來的**。在工作的幾年里,我們可能看過很多書,聽過很多技術(shù)講座和視頻,但是通過聽和看只是讓你能記住這些知識,這些知識還不能轉(zhuǎn)換成你的能力。

聽和看只是第一步,更重要的是實(shí)踐,通過刻意練習(xí)把聽到和看到的知識內(nèi)化成你的能力。

刻意練習(xí),就是有目的的練習(xí),先規(guī)劃好,再去練習(xí)。首先給自己定一個(gè)目標(biāo),目標(biāo)可以有效的引導(dǎo)你學(xué)習(xí),然后使用3F練習(xí)法:

1: 專注(Focus),專注在眼前的任務(wù)上,在學(xué)習(xí)過程中保持專注,可以嘗試使用番茄工作法。

2:反饋(Feedback),意識到自己的不足,學(xué)習(xí)完之后進(jìn)行反思,思考下自己哪些方面不足,為什么不足,

3: 修正(Fix),改進(jìn)自己的不足。

不停的練習(xí)和思考可以改變大腦結(jié)構(gòu),大腦像肌肉一樣,挑戰(zhàn)越大,影響越大,學(xué)習(xí)更高效,并且也會產(chǎn)生突破性。

廣度和深度的選擇

技術(shù)人員的學(xué)習(xí)路徑有兩個(gè)維度,深度和廣度。很多程序員都有這個(gè)疑問,是先深后廣,還是先廣后深呢?

通過這么多年的學(xué)習(xí)和思考,我的建議先深后廣,因?yàn)楫?dāng)技術(shù)學(xué)到一定深度后,就會有觸類旁通的能力,自己掌握的廣度也自然有了深度。但是在實(shí)際學(xué)習(xí)過程中,深度和廣度相互穿插著學(xué)習(xí),比如學(xué)習(xí)并發(fā)編程時(shí),首先學(xué)習(xí)JDK源碼,然后學(xué)進(jìn)去之后,開始看JVM源碼,最后看CPU架構(gòu),在技術(shù)點(diǎn)逐漸深度研究的過程中,廣度也得到了完善。

所以無論哪種學(xué)習(xí)方式,學(xué)習(xí)態(tài)度才是最重要的,在廣度學(xué)習(xí)的時(shí)候有深入研究的態(tài)度就能達(dá)到一定的深度,在深度學(xué)習(xí)的時(shí)候,主動學(xué)習(xí)相關(guān)的技術(shù)點(diǎn),廣度也得到拓寬。

你需要學(xué)會的編碼習(xí)慣

程序員應(yīng)該學(xué)會通過技術(shù)的手段來提高效率。幾個(gè)常用的手段是使用工具,快捷鍵和編寫腳本。

1. 使用各種工具

技術(shù)人員電腦盡量用MAC,使用命令行效率一定比在1024*1024像素中找一個(gè)10*10像素的按鈕更快。IDE用IDEA,比Eclipse更智能。命令行工具用iTerm和IDEA里的Terminal。寫文章用MAC的客戶端工具M(jìn)acDown,左邊編寫,右邊展示,比Word等工具方便快速很多。有時(shí)候我還會用按鍵精靈里配置腳本需要解決工作問題,比如通過點(diǎn)擊我們的系統(tǒng),來執(zhí)行任務(wù)。這樣的工具很多,只要能提高工作效率的工具,大家都可以嘗試使用。

2. 使用快捷鍵

MAC,IDEA和Eclipse有很多快捷鍵都要學(xué)會使用,比如在MAC命令行中通過idea .快速打開工程,通過open . 快速的打開文件夾,把IDEA里通過快捷鍵把一段代碼抽成一個(gè)單獨(dú)的方法,快速生成getter setter方法。

3. 用腳本寫工具

當(dāng)我們用人工的方式做一件重復(fù)性很強(qiáng)的事情,首先要考慮使用工具來幫我們自動完成,如果沒有類似工具,可以自己寫個(gè)腳本來實(shí)現(xiàn),這樣除了能快速解決問題,還能提高自己的技術(shù)能力。

比如,我經(jīng)常要在兩個(gè)maven倉庫發(fā)布jar包,我就寫了個(gè)腳本來實(shí)現(xiàn)jar包的發(fā)布,deploy.sh代碼如下:

在業(yè)務(wù)團(tuán)隊(duì)做開發(fā)如何成長

我一直在業(yè)務(wù)團(tuán)隊(duì)中做開發(fā),在業(yè)務(wù)團(tuán)隊(duì)最主要的提高的能力是業(yè)務(wù)抽象和架構(gòu)能力,通過業(yè)務(wù)場景,不斷思考如何通過合理的架構(gòu)和業(yè)務(wù)抽象能快速支持業(yè)務(wù),降低運(yùn)維成本。同時(shí)在這個(gè)過程中鍛煉技術(shù)能力,比如寫一些技術(shù)框架來快速支持業(yè)務(wù),做到技術(shù)驅(qū)動業(yè)務(wù)。

可配置化的方式支持業(yè)務(wù)

設(shè)計(jì)業(yè)務(wù)的領(lǐng)域模型,把不隨著業(yè)務(wù)邏輯變化的領(lǐng)域模型做成系統(tǒng)能力,把隨著業(yè)務(wù)邏輯變化功能,做成可配置化,上一個(gè)新業(yè)務(wù),通過配置的方式或少量開發(fā)就能支持。

在做客戶后臺功能時(shí),由于需要展示的數(shù)據(jù)種類非常多,每種數(shù)據(jù)展示可能需要花費(fèi)幾天的時(shí)間,所以設(shè)計(jì)了一個(gè)通用的技術(shù)框架,實(shí)現(xiàn)了通過配置化的方式展示各種數(shù)據(jù)。

寫框架解決業(yè)務(wù)問題

我在上家公司經(jīng)常做一些CRUD的業(yè)務(wù)功能,我就自己開發(fā)了一個(gè)快速做CRUD的框架jdbcutil,通過配置實(shí)體生成SQL語句,實(shí)現(xiàn)了子類只要繼承父類,就自動擁有CRUD的能力。后面還寫過生成CRUD頁面代碼的程序。

目前我們團(tuán)隊(duì)在做的TITAN框架通過模塊化開發(fā)的方式,解決易變的業(yè)務(wù)系統(tǒng)在多人開發(fā)時(shí)遇到的問題。

技術(shù)驅(qū)動業(yè)務(wù)

在業(yè)務(wù)團(tuán)隊(duì),一定要不斷的思考如何利用技術(shù)來支持快速支持業(yè)務(wù),配置化是一種思路,但是有些功能配置復(fù)雜度比較高,配置加驗(yàn)證的工作量,可能需要一個(gè)星期的時(shí)間,那么能不能減少人工配置,實(shí)現(xiàn)系統(tǒng)自動化配置,于是可以研究下人工智能,通過人工智能的方式實(shí)現(xiàn),系統(tǒng)告訴人需要配置哪些東西,然后交給人來進(jìn)行確認(rèn),這樣可以大大減少人工成本,更快的支持業(yè)務(wù)。

很多問題其實(shí)答案很簡單,但是背后的思考和邏輯不簡單,要做到知其然還要知其所以然。如果想學(xué)習(xí)Java工程化、高性能及分布式、深入淺出。微服務(wù)、Spring,MyBatis,Netty源碼分析的朋友可以加我的Java進(jìn)階群:629740746,群里有阿里大牛直播講解技術(shù),以及Java大型互聯(lián)網(wǎng)技術(shù)的視頻免費(fèi)分享給大家。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容