<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          技術(shù)大佬們都是怎么學(xué)習(xí)的?

          共 4069字,需瀏覽 9分鐘

           ·

          2021-03-19 11:43

          整理:小林

          來(lái)源:oschina.net/question/3774191_2320056

          不論是在什么技術(shù)領(lǐng)域,學(xué)習(xí)策略/方法決定了你能走多遠(yuǎn)。想要成為某個(gè)技術(shù)領(lǐng)域的大牛,單單努力是沒(méi)用的!

          很多小伙伴都非常好奇哪些成為技術(shù)大佬的人是怎么學(xué)習(xí)的?某問(wèn)答平臺(tái)上就有這樣一個(gè)問(wèn)題。

          在這個(gè)問(wèn)題下面,有位“無(wú)名大佬”回答了這個(gè)問(wèn)題,我看完后覺(jué)得相當(dāng)不錯(cuò),重新排版和整理了下,分享給大家一起共勉。

          無(wú)論你是在校學(xué)生,還是職場(chǎng)老鳥(niǎo),我相信這些想法和建議都會(huì)對(duì)你有所啟發(fā)。

          熟悉更多業(yè)務(wù)

          熟悉更多代碼,不管是不是你寫(xiě)的。

          這樣做有很多好處,舉幾個(gè)簡(jiǎn)單的例子:

          • 需求分析的時(shí)候更加準(zhǔn)確,能夠在需求階段就識(shí)別風(fēng)險(xiǎn)、影響、難點(diǎn)。
          • 問(wèn)題處理的時(shí)候更加快速,因?yàn)橄嚓P(guān)的業(yè)務(wù)和代碼都熟悉,能夠快速的判斷問(wèn)題可能的原因并進(jìn)行排查處理。
          • 方案設(shè)計(jì)的時(shí)候考慮更加周全,由于有對(duì)全局業(yè)務(wù)的理解,能夠設(shè)計(jì)出更好的方案。
          • 避免項(xiàng)目成員的單點(diǎn)問(wèn)題(寫(xiě)某一塊業(yè)務(wù)代碼的人突然離職或者生病了,你可以很快可以頂上)。

          熟悉端到端

          比如說(shuō)你負(fù)責(zé) Web 后臺(tái)開(kāi)發(fā),但實(shí)際上用戶(hù)發(fā)起一個(gè) HTTP 請(qǐng)求,要經(jīng)過(guò)很多中間步驟才到你的服務(wù)器(例如瀏覽器緩存、DNS、Nginx 等)。

          服務(wù)器一般又會(huì)經(jīng)過(guò)很多處理才到你寫(xiě)的那部分代碼(路由、權(quán)限等)這整個(gè)流程中的很多系統(tǒng)或者步驟,絕大部分人是不可能去參與寫(xiě)代碼的。

          但掌握了這些知識(shí)對(duì)你的綜合水平有很大作用,例如方案設(shè)計(jì)、線(xiàn)上故障處理這些更加有含金量的技術(shù)工作都需要綜合技術(shù)水平。

          “系統(tǒng)性”、“全局性”、“綜合性”這些字眼看起來(lái)比較虛,但其實(shí)都是技術(shù)大牛的必備的素質(zhì),要達(dá)到這樣的境界,必須去熟悉更多系統(tǒng)、業(yè)務(wù)、代碼。

          自學(xué)

          一般在比較成熟的團(tuán)隊(duì),由于框架或者組件已經(jīng)進(jìn)行了大量的封裝,寫(xiě)業(yè)務(wù)代碼所用到的技術(shù)確實(shí)也比較少。

          但我們要明白“唯一不變的只有變化”,框架有可能要改進(jìn),組件可能要替換,或者你換了一家公司,新公司既沒(méi)有組件也沒(méi)有框架,要你從頭開(kāi)始來(lái)做。

          這些都是機(jī)會(huì),也是挑戰(zhàn),而機(jī)會(huì)和挑戰(zhàn)只會(huì)分配給有準(zhǔn)備的人,所以這種情況下我們更加需要自學(xué)更多東西,因?yàn)檎嬲鹊揭玫臅r(shí)候再來(lái)學(xué)已經(jīng)沒(méi)有時(shí)間了。

          以 Java 為例,大部分業(yè)務(wù)代碼就是 if-else 加個(gè)數(shù)據(jù)庫(kù)操作,但我們完全可以自己學(xué)些更多 Java 的知識(shí),例如垃圾回收,調(diào)優(yōu),網(wǎng)絡(luò)編程等。

          這些可能暫時(shí)沒(méi)用,但真要用的時(shí)候,不是 Google 一下就可以了,這個(gè)時(shí)候誰(shuí)已經(jīng)掌握了相關(guān)知識(shí)和技能,機(jī)會(huì)就是誰(shuí)的

          以垃圾回收為例,我自己平時(shí)就抽時(shí)間學(xué)習(xí)了這些知識(shí),學(xué)了 1 年都沒(méi)用上,但后來(lái)用上了幾次,每次都解決了卡死的大問(wèn)題。

          而有的同學(xué),寫(xiě)了幾年的 Java 代碼,對(duì)于 stop-the-world 是什么概念都不知道,更不用說(shuō)去優(yōu)化了。

          你負(fù)責(zé)的系統(tǒng)和業(yè)務(wù),總有不合理和可以改進(jìn)的地方,這些“不合理”和“可改進(jìn)”的地方,都是更高級(jí)別的怪物,打完后能夠增加更多的經(jīng)驗(yàn)值。

          識(shí)別出這些地方,并且給出解決方案,然后向主管提出,一次不行兩次,多提幾次,只要有一次落地了,這就是你的機(jī)會(huì)。

          例如:

          • 重復(fù)代碼太多,是否可以引入設(shè)計(jì)模式?
          • 系統(tǒng)性能一般,可否進(jìn)行優(yōu)化?
          • 目前是單機(jī),如果做成雙機(jī)是否更好?
          • 版本開(kāi)發(fā)質(zhì)量不高,是否引入高效的單元測(cè)試和集成測(cè)試方案?
          • 目前的系統(tǒng)太龐大,是否可以通過(guò)重構(gòu)和解耦改為 3 個(gè)系統(tǒng)?
          • 阿里中間件有一些系統(tǒng)感覺(jué)我們也可以用,是否可以引入?

          只要你去想,其實(shí)總能發(fā)現(xiàn)可以改進(jìn)的地方的;如果你覺(jué)得系統(tǒng)哪里都沒(méi)有改進(jìn)的地方,那就說(shuō)明你的水平還不夠,可以多學(xué)習(xí)相關(guān)技術(shù),多看看業(yè)界其它優(yōu)秀公司怎么做。

          我 2013 年調(diào)配到九游,剛開(kāi)始接手了一個(gè)簡(jiǎn)單的后臺(tái)系統(tǒng),每天就是配合前臺(tái)做數(shù)據(jù)增刪改查,看起來(lái)完全沒(méi)意思,是吧?

          如果只做這些確實(shí)沒(méi)意思,但我們接手后做了很多事情:

          • 解耦,將一個(gè)后臺(tái)拆分為 2 個(gè)后臺(tái),提升可擴(kuò)展性和穩(wěn)定性。
          • 雙機(jī),將單機(jī)改為雙機(jī)系統(tǒng),提高可靠性。
          • 優(yōu)化,將原來(lái)一個(gè)耗時(shí) 5 小時(shí)的接口優(yōu)化為耗時(shí) 5 分鐘。

          還有其他很多優(yōu)化,后來(lái)我們這個(gè)組承擔(dān)了更多的系統(tǒng),后來(lái)這個(gè)小組 5 個(gè)人,負(fù)責(zé)了 6 個(gè)系統(tǒng)。

          Do exercise

          在做職業(yè)等級(jí)溝通的時(shí)候,發(fā)現(xiàn)有很多同學(xué)確實(shí)也在嘗試 Do more、Do better,但在執(zhí)行的過(guò)程中,幾乎每個(gè)人都遇到同一個(gè)問(wèn)題:光看不用效果很差,怎么辦?

          例如:

          • 學(xué)習(xí)了 JVM 的垃圾回收,但是線(xiàn)上比較少出現(xiàn) FGC 導(dǎo)致的卡頓問(wèn)題,就算出現(xiàn)了,恢復(fù)業(yè)務(wù)也是第一位的,不太可能線(xiàn)上出現(xiàn)問(wèn)題然后讓每個(gè)同學(xué)都去練一下手,那怎么去實(shí)踐這些 jvm 的知識(shí)和技能呢?
          • Netty 我也看了,也了解了 Reactor 的原理,但是我不可能參與 Netty 開(kāi)發(fā),怎么去讓自己真正掌握 Reactor 異步模式呢?
          • 看了《高性能 MySQL》,但是線(xiàn)上的數(shù)據(jù)庫(kù)都是 DBA 管理的,測(cè)試環(huán)境的數(shù)據(jù)庫(kù)感覺(jué)又是隨便配置的,我怎么去驗(yàn)證這些技術(shù)呢?
          • 框架封裝了 Dao 層,數(shù)據(jù)庫(kù)的訪問(wèn)我們都不需要操心,我們?cè)趺慈チ私夥謳?kù)分表實(shí)現(xiàn)?

          諸如此類(lèi)問(wèn)題還有很多,我這里分享一下個(gè)人的經(jīng)驗(yàn),其實(shí)就是 3 個(gè)詞:learning、trying、teaching!

          Learning

          這個(gè)是第一階段,看書(shū)、Google、看視頻、看別人的博客都可以,但要注意一點(diǎn)是“系統(tǒng)化”,特別是一些基礎(chǔ)性的東西,例如 JVM 原理、Java 編程、網(wǎng)絡(luò)編程,HTTP 協(xié)議等等。

          這些基礎(chǔ)技術(shù)不能只通過(guò) Google 或者博客學(xué)習(xí),我的做法一般是先完整的看完一本書(shū)全面的了解,然后再通過(guò) Google、視頻、博客去有針對(duì)性的查找一些有疑問(wèn)的地方,或者一些技巧。

          Trying

          這個(gè)步驟就是解答前面提到的很多同學(xué)的疑惑的關(guān)鍵點(diǎn),形象來(lái)說(shuō)就是“自己動(dòng)手豐衣足食”,也就是自己去嘗試搭建一些模擬環(huán)境,自己寫(xiě)一些測(cè)試程序。

          例如:

          • JVM 垃圾回收:可以自己寫(xiě)一個(gè)簡(jiǎn)單的測(cè)試程序,分配內(nèi)存不釋放,然后調(diào)整各種 JVM 啟動(dòng)參數(shù),再運(yùn)行的過(guò)程中使用 jstack、jstat 等命令查看 JVM 的堆內(nèi)存分布和垃圾回收情況。這樣的程序?qū)懫饋?lái)很簡(jiǎn)單,簡(jiǎn)單一點(diǎn)的就幾行,復(fù)雜一點(diǎn)的也就幾十行。
          • Reactor 原理:自己真正去嘗試寫(xiě)一個(gè) Reactor 模式的 Demo,不要以為這個(gè)很難,最簡(jiǎn)單的 Reactor 模式代碼量(包括注釋?zhuān)┎怀^(guò) 200 行(可以參考 Doug Lee 的 PPT)。自己寫(xiě)完后,再去看看 Netty 怎么做,一對(duì)比理解就更加深刻了。
          • MySQL:既然有線(xiàn)上的配置可以參考,那可以直接讓 DBA 將線(xiàn)上配置發(fā)給我們(注意去掉敏感信息),直接學(xué)習(xí);然后自己搭建一個(gè) MySQL 環(huán)境,用線(xiàn)上的配置啟動(dòng);要知道很多同學(xué)用了很多年 MySQL,但是連個(gè)簡(jiǎn)單的 MySQL 環(huán)境都搭不起來(lái)。
          • 框架封裝了 DAL:可以自己用 JDBC 嘗試去寫(xiě)一個(gè)分庫(kù)分表的簡(jiǎn)單實(shí)現(xiàn),然后與框架的實(shí)現(xiàn)進(jìn)行對(duì)比,看看差異在哪里。
          • 用瀏覽器的工具查看 HTTP 緩存實(shí)現(xiàn),看看不同種類(lèi)的網(wǎng)站,不同類(lèi)型的資源,具體是如何控制緩存的;也可以自己用 Python 寫(xiě)一個(gè)簡(jiǎn)單的 HTTP 服務(wù)器,模擬返回各種 HTTP Headers 來(lái)觀察瀏覽器的反應(yīng)。

          還有很多方法,這里就不一一列舉,簡(jiǎn)單來(lái)說(shuō),就是要將學(xué)到的東西真正試試,才能理解更加深刻。

          印第安人有一句諺語(yǔ):I hear and I forget. I see and I remember. I do and I understand ,而且“試試”其實(shí)可以比較簡(jiǎn)單,很多時(shí)候我們都可以自己動(dòng)手做。

          當(dāng)然,如果能夠在實(shí)際工作中使用,效果會(huì)更好,畢竟實(shí)際的線(xiàn)上環(huán)境和業(yè)務(wù)復(fù)雜度不是我們寫(xiě)個(gè)模擬程序就能夠模擬的,但這樣的機(jī)會(huì)可遇不可求,大部分情況我們還真的只能靠自己模擬,然后等到真正業(yè)務(wù)要用的時(shí)候,能夠信手拈來(lái)。

          Teaching

          一般來(lái)說(shuō),經(jīng)過(guò) Learning 和 Trying,能掌握 70% 左右,但要真正掌握,我覺(jué)得一定要做到能夠跟別人講清楚。

          因?yàn)樵谥v的時(shí)候,我們既需要將一個(gè)知識(shí)點(diǎn)系統(tǒng)化,也需要考慮各種細(xì)節(jié),這會(huì)促使我們進(jìn)一步思考和學(xué)習(xí)。

          同時(shí),講出來(lái)后看或者聽(tīng)的人可以有不同的理解,或者有新的補(bǔ)充,這相當(dāng)于繼續(xù)完善了整個(gè)知識(shí)技能體系。

          這樣的例子很多,包括我自己寫(xiě)博客的時(shí)候經(jīng)常遇到,本來(lái)我覺(jué)得自己已經(jīng)掌握很全面了,但一寫(xiě)就發(fā)現(xiàn)很多點(diǎn)沒(méi)考慮到。

          組內(nèi)培訓(xùn)的時(shí)候也經(jīng)常看到,有的同學(xué)寫(xiě)了 PPT,但是講的時(shí)候,大家一問(wèn),或者一討論,就會(huì)發(fā)現(xiàn)很多點(diǎn)還沒(méi)有講清楚,或者有的點(diǎn)其實(shí)是理解錯(cuò)了。

          寫(xiě) PPT、講 PPT、討論 PPT,這個(gè)流程全部走一遍,基本上對(duì)一個(gè)知識(shí)點(diǎn)掌握就比較全面了。

          嘮嗑

          昨天開(kāi)始看 Ruby 之父的《代碼的未來(lái)》這本書(shū)。你瞅瞅這是人說(shuō)的話(huà)么?


          歡迎加入我的星球,一個(gè)純 Java 面試交流圈子 !Ready!。目前星球已經(jīng)更新 3 個(gè)小冊(cè):《Java面試進(jìn)階指北》、《從零開(kāi)始寫(xiě)一個(gè) RPC 框架》 、《程序員副業(yè)賺錢(qián)之路》。累計(jì)幫助 520+ 位球友提供了免費(fèi)的簡(jiǎn)歷修改服務(wù),回答了 500+ 個(gè)問(wèn)題,產(chǎn)出了 1300+ 個(gè)主題。

          推薦?? : 坦白帖!我訂閱了哪些技術(shù)團(tuán)隊(duì)的博客?

          推薦?? :匯報(bào)一下2020的工作

          推薦?? :Github掘金計(jì)劃:Github上的一些優(yōu)質(zhì)項(xiàng)目搜羅

          我是 Guide哥,擁抱開(kāi)源,喜歡烹飪。Github 接近 10w 點(diǎn)贊的開(kāi)源項(xiàng)目 JavaGuide 的作者。未來(lái)幾年,我希望持續(xù)完善 JavaGuide,爭(zhēng)取能夠幫助更多學(xué)習(xí) Java 的小伙伴!共勉!凎!
          原創(chuàng)不易,歡迎點(diǎn)贊分享。咱們下期再會(huì)!
          瀏覽 55
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  天天抽天天操 | 人人看人人插 | 又黄又爽免费网站 | 午夜操一操一级 | 亚洲熟妇AV在线 |