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