如何高效的學(xué)習技術
我們相信努力學(xué)習一定會(huì)有收獲,但是方法不當,既讓人身心疲憊,也沒(méi)有切實的回報。高中時(shí)代,我的同桌是個漂亮女同學(xué)。她的物理成(chéng)績很差,雖然她非常勤奮的學(xué)習,但成(chéng)績總是不理想。爲了鞏固純潔的同學(xué)關系,我親密無間地輔導她的物理,發(fā)現她不知道(dào)題目考什麼(me)。我們的教科書與試題都(dōu)圍繞著(zhe)考試大綱展開(kāi),看到一道(dào)題,應該先想想它在考哪些定理和公式的運用。
不少朋友每天都(dōu)閱讀技術文章,但是第二天就(jiù)忘幹淨了。工作中領導和同事(shì)都(dōu)認可你的溝通和技術能(néng)力,但是跳槽面(miàn)試卻屢屢碰壁。面(miàn)試官問技術方案,明明心裡(lǐ)清楚,用嘴說(shuō)出來卻前言不搭後(hòu)語。面(miàn)試官再問底層算法,你說(shuō)看過(guò)但是忘記了。他不在乎你看沒(méi)看過(guò),答不上就(jiù)是零分。正如男女相親,男方談吐潇灑才能(néng)吸引姑娘。可是男方緊張了,平時(shí)挺能(néng)說(shuō),關鍵時(shí)候卻支支吾吾,姑娘必然認爲他不行。人生充滿了許多考試,有形的和無形的,每次考試的機會(huì)隻有一次。
工作五年十年後(hòu),别人成(chéng)了架構師,自己還(hái)在基層打滾,原因是什麼(me)?職場上無法成(chéng)功升遷的原因有很多,沒(méi)有持續學(xué)習、學(xué)習效果不好(hǎo)、無法通過(guò)心儀公司的的面(miàn)試,一定是很重要的原因。
把自己當成(chéng)一台計算機,既有輸入,也要有輸出,用輸出倒逼輸入。
學(xué)什麼(me)
基礎與應用
近些年誕生了許多新技術,比如最時(shí)髦的AI(目前還(hái)在智障階段),數學(xué)基礎是初中就(jiù)接觸過(guò)的概率統計。萬丈高樓從地起(qǐ),不要被(bèi)新工具或者中間件迷住雙眼,一味地追新求快。基礎知識是所有技術的基石,在未來很長(cháng)的時(shí)間都(dōu)不會(huì)變化,應該花費足夠的時(shí)間鞏固基礎。
以數據結構和算法爲例,大家閱讀一下Java的BitSet的源碼,裡(lǐ)面(miàn)有大量的移位操作,移位運算掌握的好(hǎo),看這(zhè)份源碼就(jiù)沒(méi)問題。Java同步工具類AQS用到了雙向(xiàng)鏈表,鏈表知識不過(guò)關,肯定搞不懂它的原理。互聯網大廠都(dōu)喜歡考算法,爲了通過(guò)面(miàn)試也要精通算法。
以Java工程師應該掌握的知識爲例,按重要程度排出六個梯度:
第一梯度:計算機組成(chéng)原理、數據結構和算法、網絡通信原理、操作系統原理;
第二梯度:Java基礎、JVM内存模型和GC算法、JVM性能(néng)調優、JDK工具、設計模式;
第三梯度:Spring系列、Mybatis、Dubbo等主流框架的運用和原理;
第四梯度:MySQL(含SQL編程)、Redis、RabbitMQ/RocketMQ/Kafka、ZooKeeper等數據庫或者中間件的運用和原理;
第五梯度:CAP理論、BASE理論、Paxos和Raft算法等其他分布式理論;
第六梯度:容器化、大數據、AI、區塊鏈等等前沿技術理論。
有同學(xué)認爲第五梯度應該在移到第一梯度。其實很多小公司的日活猶如古天樂一樣(yàng)平平無奇,離大型分布式架構還(hái)遠得很。學(xué)習框架和中間件的時(shí)候,順手掌握分布式理論,效果更好(hǎo)。
廣度與深度
許多公司的招聘JD沒(méi)有設定技術人員年齡門檻,但是會(huì)加上一句“具備與年齡相當的知識的廣度與深度”。多廣才算廣,多深才算深?這(zhè)是很主觀的話題,這(zhè)裡(lǐ)不展開(kāi)讨論。
如何變得更廣更深呢?突破收入上升的瓶頸,發(fā)掘自己真正的興趣。
大多數人隻是公司的普通職員,收入上升的瓶頸就(jiù)是升職加薪。許多IT公司會(huì)對(duì)技術人員有個評級,如果你的評級不高,那就(jiù)依照晉級章程努力升級。如果你在一個小公司,收入一般,發(fā)展前景不明,準備大廠的面(miàn)試就(jiù)是最好(hǎo)的學(xué)習過(guò)程。在這(zhè)些過(guò)程中,你必然學(xué)習更多知識,變得更廣更深。
個人興趣是前進(jìn)的動力之一,許多知名開(kāi)源項目都(dōu)源于作者的興趣。個人興趣并不局限技術領域,可以是其他學(xué)科。我有個朋友喜歡玩山地自行車,還(hái)給一些做自行車話題的自媒體投稿。久而久之,居然能(néng)夠寫一手好(hǎo)文章了,我相信他也能(néng)寫好(hǎo)技術文檔。
哲學(xué)
哲學(xué)不是故作高深的學(xué)科,它的現實意義就(jiù)是解決問題。年輕小夥是怎麼(me)泡妞的?三天兩(liǎng)頭花不斷,大庭廣衆跪求愛。這(zhè)類套路爲什麼(me)總是能(néng)成(chéng)功呢?禮物滿足女人的物欲,當衆求愛滿足女人的虛榮心,投其所好(hǎo)。食堂大媽打菜的手越來越抖,辣子雞丁變成(chéng)辣子辣丁,爲什麼(me)呢?食堂要控制成(chéng)本,直接提價會(huì)惹衆怒。
科學(xué)上的哲學(xué),一般指研究事(shì)物發(fā)展的規律,歸納終極的解決方案。軟件行業充滿哲學(xué)味道(dào)的作品非常多,比如《人月神話》。舉個例子,當軟件系統遇到性能(néng)問題,嘗試下面(miàn)兩(liǎng)種(zhǒng)哲學(xué)思想提升性能(néng):
空間換時(shí)間:比如引入緩存,消耗額外的存儲提高響應速度。
時(shí)間換空間:比如大文件的分片處理,分段處理後(hòu)再彙總結果。
設計穩健高可用的系統,嘗試從三個方面(miàn)考慮問題:
存儲:數據會(huì)丢失嗎,數據一緻性怎麼(me)解決。
計算:計算怎麼(me)擴容,應用允許任意增加節點嗎。
傳輸:網絡中斷或擁塞怎麼(me)辦。
從無數的失敗或者成(chéng)功的經(jīng)驗中,總結出高度概括性的方案,讓我們下一步做的更好(hǎo)。
英語
英語是極爲重要的基礎,學(xué)好(hǎo)英語與掌握編程語言一樣(yàng)重要。且不說(shuō)外企對(duì)英語的要求,許多知名博客就(jiù)是把英文翻譯成(chéng)中文,充當知識的搬運工。如果英語足夠好(hǎo),直接閱讀一手英語資料,避免他人翻譯存在的謬誤。
怎麼(me)學(xué)
知識體系
體系化的知識比零散的更容易記憶和理解,這(zhè)正如一部好(hǎo)的電視劇,劇情環環相扣才能(néng)吸引觀衆。建議大家使用思維導圖羅列知識點,構建體系結構,如下圖所示:
克服遺忘
高中是我們知識的巅峰時(shí)刻,每周小考每月大考,教輔資料堆成(chéng)山,地獄式的反複操練強化記憶。複習是對(duì)抗遺忘的唯一辦法。大腦的遺忘是有規律的,先快後(hòu)慢。一天後(hòu),學(xué)到的知識隻剩下原來的25%,甚至更低。随著(zhe)時(shí)間的推移,遺忘的速度減慢,遺忘的數量也就(jiù)減少。
每個人的遺忘程度都(dōu)不一樣(yàng),建議第二天複習前一天的内容,七天後(hòu)複習這(zhè)段時(shí)間的所有内容。
碎片時(shí)間
不少朋友利用碎片時(shí)間學(xué)習,比如在公交上看公衆号的推送。其實我們都(dōu)高估了自己的抗幹擾能(néng)力,如果處在嘈雜的環境,注意力容易被(bèi)打斷,記憶留存度也很低。碎片時(shí)間适合學(xué)習簡單孤立的知識點,比如鏈表的定義與實現。
學(xué)習複雜的知識,需要大段的連續時(shí)間。圖書館是個好(hǎo)地方,安靜氛圍好(hǎo)。手機放一邊,不要理會(huì)QQ微信,最好(hǎo)閱讀紙質書,泡上一整天。有些城市出現了付費自習室,提供格子間、茶水等等,也是非常好(hǎo)的選擇。
用起(qǐ)來
技術分享
從下面(miàn)這(zhè)張圖我們可以看到,教授他人是知識留存率最高的方式。
準備PPT和演講内容,給同事(shì)來一場技術分享。不光複習知識,還(hái)鍛煉口才。曾經(jīng)有個同事(shì)說(shuō)話又快又急,口頭禅也多,比如"對(duì)吧、是不是”,别人經(jīng)常聽不清,但是他本人不以爲然。領導讓他做了幾次技術分享,聽衆的反應可想而知,他才徹底認清缺點。
堅持寫技術博客,别在意你寫的東西在網上已經(jīng)重複千百遍。當自己動手的時(shí)候,才會(huì)意識到眼高手低。讓文章讀起(qǐ)來流暢清晰,需要嘔心瀝血的删改。寫作是對(duì)大腦的長(cháng)期考驗,想不到肯定寫不出,想不清楚肯定寫不清楚。
造個輪子
我們經(jīng)常說(shuō)不要重複造輪子。爲了開(kāi)發(fā)效率,可以不造輪子,但是必須具備造輪子的能(néng)力。建議造一個簡單的MQ,你能(néng)用到通信協議、設計模式、隊列等許多知識。在造輪子的過(guò)程中,你會(huì)頻繁的翻閱各種(zhǒng)手冊或者博客,這(zhè)就(jiù)是用輸出倒逼輸入。