技術(shù)員如何在3年內(nèi)快速成長為技術(shù)專家?

在我們公司有些同學(xué)在前三年中就快速成為某一個領(lǐng)域的技術(shù)專家,有些同學(xué)也可能止步不前。

  本文將從學(xué)習(xí)方法和實戰(zhàn)技巧兩個方面和大家一起探討如何在三年內(nèi)快速成長為一名技術(shù)專家。

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

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

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

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

廣度和深度的選擇

實戰(zhàn)技巧:

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

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

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

  空杯心態(tài)

  首先要有空杯的學(xué)習(xí)心態(tài),而不是傲嬌自滿,固步自封,空杯子才可以裝下更多的東西。

  然后要學(xué)會取百家之長,帶著欣賞的眼光看團(tuán)隊的同事或?qū)W校的同學(xué),欣賞每位同事或同學(xué)的優(yōu)點,然后吸取他們的優(yōu)點,因為每個同事都有其擅長的能力。

  比如有的同事技術(shù)能力強(qiáng),那么可以觀察下他如何學(xué)習(xí)的(或者找他請教學(xué)習(xí)方法),有的同學(xué)擅長解決線上問題,那么觀察他是如何解決線上問題的,解決思路是什么?

  如果他解決不了時,他是如何尋求幫助。有的同學(xué)擅長使用 IDE 或 MAC 的快捷鍵,那么可以向他學(xué)習(xí)提高工作效率。

  有的同學(xué)能快速理解業(yè)務(wù)知識,觀察他是如何做到的,自己如何達(dá)到他的程度。溝通能力,解決問題能力以及規(guī)劃能力都可以向同事學(xué)習(xí)。

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

  從書上看到一個知識點,或者從別人那里聽到一個知識點,一定要去挑戰(zhàn)和質(zhì)疑這個知識點的正確性,否則學(xué)到的知識點可能是錯誤的。

  先用邏輯思維推測下,再實戰(zhàn)檢測下,一定要記住實踐是檢驗真理的唯一標(biāo)準(zhǔn)。

  比如同事說這個 SQL 加這個索引是最快的,首先要思考同事的結(jié)論是如何得出的,是靠歷史經(jīng)驗還是測試過?

  如果我們沒有經(jīng)驗,就加上這個索引跑下 SQL,看看執(zhí)行計劃和執(zhí)行時間,再換下其他索引試試會不會更快。

  依次類推,并發(fā)一定比串行快嗎?無鎖一定比加鎖快嗎? 很多結(jié)論都是在特定的場景下才會產(chǎn)生的,一定要自己親手實踐驗證下。

  堅持學(xué)習(xí)

  有的同學(xué)可能工作了五年,但是學(xué)習(xí)的時間可能一年都不到。學(xué)技術(shù)不能急于求成,只要學(xué)習(xí)方法正確,量變一定會引起質(zhì)變。

  我在大學(xué)剛學(xué) Java 時,怎么都學(xué)不會,但是堅持學(xué)習(xí)了幾個月,每天看張老師的 Java 視頻教學(xué)。然后買書,按照書里的代碼一行一行的敲代碼。

  我白天睡覺,晚上學(xué)習(xí)和寫代碼,寫到宿舍關(guān)燈時就去避風(fēng)塘呆一晚上,早上 6 點鐘回宿舍睡覺,學(xué)到一定時間后,突然恍然大悟,才入了門。

  在工作中,我曾經(jīng)花了一個月的時間學(xué)習(xí) AOP 的實現(xiàn)原理,學(xué)習(xí)了各種方式來實現(xiàn) AOP 的原理,并寫了幾種實現(xiàn)方式的代碼。

  雖然花的時間很多,但是到現(xiàn)在仍記憶猶新,對于排查問題和學(xué)習(xí)其他知識都非常有幫助。

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

  把事做精

  對自己要求越高,進(jìn)步越快,要有強(qiáng)烈的把事情做完美的心態(tài)。

  我剛開始工作的時候,總是快而不精,做事做的不夠細(xì)致,總希望快速拿出結(jié)果證明自己,但是反而證明不了什么,技術(shù)能力也得不到提升,缺少技術(shù)亮點,在團(tuán)隊中也沒什么影響力,后面就開始鍛煉一次就把事情做對的心態(tài)和方法。

  我觀察過,很多人都擅長快速做事情,但是把事情做好做精致的人會比較少,但是結(jié)果卻是在精益求精的路上才會快速提高自己的能力。

  比如用 100 行代碼實現(xiàn)的功能,思考下是否可以用 10 行來實現(xiàn),以便于降低運(yùn)維成本,提高下次的編碼效率。

  引用 GUAVA 等類庫,提取公共方法和使用 JDK8 新特性等。系統(tǒng)的方法壓測過后,單機(jī)只能承受 1700 QPS,可以思考和實踐能否優(yōu)化下程序提高 QPS,減少服務(wù)器數(shù)量。

  把事情做精,一定是要強(qiáng)迫自己多花心思多花時間在這件事情上。有位技術(shù)牛人給我分享了一個心得,我覺得說的非常好。

  老板給你布置了一個任務(wù),你要花百分之 150 的精力做到 100 分,這樣在老板那里你就能拿到 80 分或者 60 分。

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

  如果學(xué)習(xí)到的知識不成體系,那么遇到問題時就會非常難解決。有些同學(xué)會出現(xiàn)這些情況,比如編碼時遇到問題百度搜索,如果百度上找不到答案,這個問題就解決不了。

  再比如,在開發(fā)中要用到某個技術(shù)點,就學(xué)習(xí)下 API,程序調(diào)通后就不再深入研究,淺嘗輒止,如果程序遇到其他問題也不知道如何解決。

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

  首先要確定學(xué)習(xí)的知識領(lǐng)域,需要達(dá)成的學(xué)習(xí)目標(biāo),針對目標(biāo)制定學(xué)習(xí)計劃。

  就像你要寫一本書一樣,先把目錄寫出來,然后根據(jù)目錄上的知識點逐步去學(xué)習(xí),最后把這些知識點關(guān)聯(lián)起來,形成一個系統(tǒng)化的知識體系。

  學(xué)習(xí)的時候,可以制定一個計劃,以周為單位,比如第一周學(xué)什么,第二周學(xué)什么。

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

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

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

  框架:TensorFlow 等。

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

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

  作家格拉德威爾在《異類》一書中指出,1 萬小時的錘煉是任何人從平凡變成世界級大師的必要條件。

  1 萬小時有多久?每天學(xué)習(xí) 10 小時,需要大約三年。但是很多人都工作了五年甚至更長,但是為什么成為世界級大師的卻非常少?讀者可以先自己思考下這個問題,接下來談?wù)勎业目捶ā?/p>

  成長必須經(jīng)歷一個步驟,就是把知識內(nèi)化成能力。知識是用腦記住的,能力是用手練習(xí)出來的。

  在工作的幾年里,我們可能看過很多書,聽過很多技術(shù)講座和視頻,但是通過聽和看只是讓你能記住這些知識,這些知識還不能轉(zhuǎn)換成你的能力。

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

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

  然后使用 3F 練習(xí)法:

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

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

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

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

廣度和深度的選擇

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

  通過這么多年的學(xué)習(xí)和思考,我的建議先深后廣,因為當(dāng)技術(shù)學(xué)到一定深度后,就會有觸類旁通的能力,自己掌握的廣度也自然有了深度。

  但是在實際學(xué)習(xí)過程中,深度和廣度是相互穿插著學(xué)習(xí),比如學(xué)習(xí)并發(fā)編程時,首先學(xué)習(xí) JDK 源碼,然后學(xué)進(jìn)去之后,開始看 JVM 源碼,最后看 CPU 架構(gòu),在技術(shù)點逐漸深度研究的過程中,廣度也得到了完善。

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


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

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

  使用各種工具

  技術(shù)人員電腦盡量用 MAC,使用命令行效率一定比在 1024*1024 像素中找一個 10*10 像素的按鈕更快。IDE 用 IDEA,比 Eclipse 更智能。命令行工具用 iTerm 和 IDEA 里的 Terminal。

  寫文章用 MAC 的客戶端工具 MacDown,左邊編寫,右邊展示,比 Word 等工具方便快速很多。

  有時候我還會用按鍵精靈里配置腳本解決工作問題,比如通過點擊我們的系統(tǒng),來執(zhí)行任務(wù)。

  這樣的工具很多,只要能提高工作效率的工具,大家都可以嘗試使用。

  使用快捷鍵

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

  用腳本寫工具

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

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

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

  我一直在業(yè)務(wù)團(tuán)隊中做開發(fā),在業(yè)務(wù)團(tuán)隊最主要提高的能力是業(yè)務(wù)抽象和架構(gòu)能力,通過業(yè)務(wù)場景,不斷思考如何通過合理的架構(gòu)和業(yè)務(wù)抽象能快速支持業(yè)務(wù),降低運(yùn)維成本。

  同時在這個過程中鍛煉技術(shù)能力,比如寫一些技術(shù)框架來快速支持業(yè)務(wù),做到技術(shù)驅(qū)動業(yè)務(wù)。

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

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

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

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

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

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

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

  在業(yè)務(wù)團(tuán)隊,一定要不斷的思考如何利用技術(shù)來快速支持業(yè)務(wù),配置化是一種思路,但是有些功能配置復(fù)雜度比較高,配置加驗證的工作量,可能需要一個星期的時間。

  那么能不能減少人工配置,實現(xiàn)系統(tǒng)自動化配置?建議可以研究下人工智能,通過人工智能的方式實現(xiàn),系統(tǒng)告訴人需要配置哪些東西,然后交給人來進(jìn)行確認(rèn),這樣可以大大減少人工成本,更快的支持業(yè)務(wù)。

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

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

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