聊聊自學(xué)黨如何選擇高效學(xué)習(xí)資源?
大家好,我是魚皮。
昨天在某乎看到一個(gè)問題:“ 準(zhǔn)備自學(xué)Java,但是B站有兩版視頻,應(yīng)該看哪個(gè)?”

如今,編程學(xué)習(xí)資源越來越多,很多想學(xué)編程的朋友都會(huì)遇到類似的資源選擇問題。對(duì)于初學(xué)者而言,選擇合適的編程資源尤為重要,否則就容易被勸退。
作為一名萬年沉迷自學(xué)黨,結(jié)合自己大學(xué)的經(jīng)歷,分享下我選擇學(xué)習(xí)資源的方法。
主要包括兩個(gè)方面:
選擇何種類型的資源?
同類資源如何對(duì)比?

資源類型
學(xué)習(xí)資源類型有很多,比如書籍、電子書、在線網(wǎng)站、在線文檔、視頻、講義等等。
我認(rèn)為選擇學(xué)習(xí)資源的要點(diǎn)是:以能學(xué)下去為前提,保證學(xué)習(xí)效率的最大化。
因此,我會(huì) 在不同的階段選擇不同類型的資源。
早在高考結(jié)束時(shí),我就讀過一本 C 語言經(jīng)典書籍《C Primer Plus》,強(qiáng)行讀了幾十頁后,我就被大量的術(shù)語和理論勸退了,這本書對(duì)我而言,為時(shí)過早。
因此,剛剛步入大學(xué),初學(xué)編程時(shí),相對(duì)于枯燥的課本教材,我會(huì)選擇比較輕松、能幫助我上手和培養(yǎng)興趣的資源。前端和 Python 對(duì)新手還是比較友好的,因此除了學(xué)校教的 C 語言外,我主動(dòng)去學(xué)習(xí)前端。在學(xué)習(xí)前端時(shí),我沒有選擇看書,而是先通過一個(gè) 在線實(shí)戰(zhàn)、敲代碼闖關(guān)的網(wǎng)站學(xué)習(xí)基礎(chǔ)語法。
這里也給大家推薦一些在線練習(xí)網(wǎng)站:
前端:
Java:
Python:
算法應(yīng)用:
當(dāng)然,還有很多,大家可以先到 編程導(dǎo)航 上找找看,后面以推文的形式慢慢給大家推薦~
通過在線練習(xí)網(wǎng)站,幫助我快速了解了一門編程語言,培養(yǎng)了我的興趣,并能夠直接寫出一些入門級(jí)代碼。在這之后,就不要再依賴這些網(wǎng)站了,目前沒有任何一個(gè)網(wǎng)站能幫助你從入門到精通!我會(huì)傾向于選擇 閱讀一本經(jīng)典書籍 來鞏固這門編程語言的基礎(chǔ),比如 Java 我選擇了《Java 核心技術(shù)卷 1》,這本書排版優(yōu)雅,內(nèi)容殷實(shí),總之就是好!

當(dāng)然,不是所有人都喜歡閱讀,我有事也會(huì)覺得看書比較無聊。如果看書看不下去了,可以到網(wǎng)上看一些視頻課程入門,但看完視頻后,一定要倒過來閱讀經(jīng)典書籍,躲不掉的?;A(chǔ)都不牢固,就強(qiáng)行去學(xué)開發(fā)框架,一定會(huì)犯很多低級(jí)錯(cuò)誤,踩很多坑。
追求速成?不存在的,哪有那么好的事兒,欠下的這些打基礎(chǔ)的時(shí)間,都會(huì)在日后以 bug 的形式加倍奉還!

那怎么算是打好基礎(chǔ)了呢?
沒有一個(gè)明確的邊界,總之就是你能把書中或視頻中提到的知識(shí)理解并能寫出代碼實(shí)際應(yīng)用,就 ok 了。比如學(xué)習(xí)面向?qū)ο蟮睦^承時(shí),你不能只知道繼承的語法,還要知道繼承的好處,以及在什么情況下應(yīng)該使用繼承。能用學(xué)到的知識(shí)去解決問題了,就算過關(guān)~
打好編程語言基礎(chǔ)后,我已經(jīng)可以編寫一些簡(jiǎn)單的軟件了,下一步就是提升開發(fā)的效率,學(xué)習(xí)企業(yè)級(jí)開發(fā)框架。我會(huì)選擇看一些 視頻教程 來學(xué)習(xí)主流開發(fā)框架,因?yàn)閷W(xué)習(xí)框架一定要先會(huì)用,再去理解和深挖它的原理和工作機(jī)制,網(wǎng)上的視頻相對(duì)于書本來說,會(huì)更有趣一些。當(dāng)然也不是只看視頻,還要跟著老師的節(jié)奏敲代碼、多練習(xí)。一個(gè)系列的視頻看完后,就 一定要親自做出個(gè)項(xiàng)目,否則跟沒看一樣,紙上談兵,一看就會(huì),一寫就廢。
當(dāng)我學(xué)會(huì)了一門編程語言對(duì)應(yīng)的開發(fā)框架后,我會(huì)到網(wǎng)上找一些簡(jiǎn)單的 開源項(xiàng)目,閱讀他人的代碼,跟著項(xiàng)目代碼進(jìn)行練習(xí),學(xué)習(xí)他人的寫法。想學(xué)好編程,除了多敲代碼外,還要多閱讀他人的代碼,否則很多代碼規(guī)范,或者一些小技巧、騷操作你都 get 不到。而且一旦你不接觸別人的代碼,只按照當(dāng)初的視頻教程去寫,假如培訓(xùn)機(jī)構(gòu)的哪個(gè)寫法不規(guī)范,可能你會(huì)被誤導(dǎo)一輩子!

別笑,這就是很多同學(xué)的真實(shí)寫照!問他為什么寫這么爛的代碼,他說:“我看別人視頻里就是這么寫的呀!”
隨著你的編程經(jīng)驗(yàn)不斷積累、能力逐漸提高,你自然會(huì)去接觸一些更專業(yè)、更規(guī)范、更底層的知識(shí)。此時(shí)學(xué)習(xí)的最好方式就是 閱讀技術(shù)書籍。尤其是大公司,面試時(shí)一定會(huì)問到底層知識(shí),所以一定要徹底地、系統(tǒng)地學(xué)習(xí)一門技術(shù),就拿 Java 的虛擬機(jī) JVM 來說,要去了解他的設(shè)計(jì)思路、實(shí)現(xiàn)原理、性能調(diào)優(yōu)等。優(yōu)秀的程序員不僅要能寫出代碼,還要能寫出 好代碼(高可用、高性能、高并發(fā)、可擴(kuò)展、可維護(hù)、規(guī)范等),而這就需要大量的理論知識(shí)儲(chǔ)備和實(shí)踐經(jīng)驗(yàn)。
雖然都說 “面試造火箭,工作擰螺絲”,但是大廠對(duì)人才的需求 不是看你的現(xiàn)在,而是看你的未來,能否去承擔(dān)更大、更具挑戰(zhàn)和價(jià)值的任務(wù)。

隨著你的閱讀量越來越大,知識(shí)面越來越廣,你會(huì)發(fā)現(xiàn)學(xué)習(xí)新知識(shí)比以前輕松了不少,這時(shí)最有效的學(xué)習(xí)新技術(shù)的方法就是閱讀 官方文檔。因?yàn)楣俜轿臋n一定是所有資源中 最新、最專業(yè)、最全面 的,其他所有的學(xué)習(xí)資源都是建立在官方文檔的基礎(chǔ)上的。與其道聽途說,為什么不自己一探究竟呢?這也是很多專業(yè)的程序員喜歡閱讀文檔的原因。
當(dāng)然,除了閱讀官方文檔外,還有更猛的、更無情的方式,直接看源碼!在源代碼面前,沒有任何秘密可言。
Talk is cheap,show me the code!

資源對(duì)比
上面講了我在不同階段是如何選擇學(xué)習(xí)資源類別的,下面再聊聊同類資源面前,如何對(duì)比?
我會(huì)重點(diǎn)考慮以下因素:
1. 資源時(shí)效
即書籍的出版時(shí)間,或視頻、文章的創(chuàng)作時(shí)間。
編程技術(shù)的發(fā)展非常迅猛,不信你看 Java,半年一個(gè)小版本、三年一個(gè)大版本;再看 Elasticsearch,四年不到,版本從 1.x 干到了 7.x!
所以一定要選擇比較新、未過時(shí)的資源。經(jīng)典理論、基礎(chǔ)知識(shí)、編程語言的視頻時(shí)效還長(zhǎng)一點(diǎn),內(nèi)容基本不會(huì)有太大的變動(dòng),幾年前的也都能看。但是如果要學(xué)編程框架或者類庫(kù),一定要看近 2 年內(nèi)的,有新的就盡量看新的,比如學(xué)習(xí) Java 的 SpringBoot 框架,要看 2.x 版本而不看 1.x 的。否則就會(huì)像我大一暑假一樣,傻傻的看了不少已經(jīng)被淘汰的框架用法,按照書上敲代碼怎么都運(yùn)行不了!

2. 作者或機(jī)構(gòu)
看書時(shí),我會(huì)盡量選擇技術(shù)圈內(nèi)比較知名的大佬寫的書。
倒也不是名人效應(yīng),要知道,程序員們都覺得自己寫的代碼最牛逼,所以,能在 IT 圈兒獲得認(rèn)可的大佬,一定在技術(shù)上有很大的影響力,創(chuàng)作也會(huì)更專業(yè)!
對(duì)于培訓(xùn)機(jī)構(gòu)的網(wǎng)絡(luò)課程,我覺得比起機(jī)構(gòu)的名聲,更重要的是老師。如果某位老師的學(xué)員反饋還不錯(cuò)、認(rèn)可度高,而且聲音、講課方式等也讓你感到舒適,那么可以試著跟一位老師長(zhǎng)期學(xué)習(xí)。
比如我早期還跟著一位人美聲甜的小姐姐學(xué) C++ 來著 ??!

3. 資源內(nèi)容
現(xiàn)在人人都說自己的文章、自家的課程是最牛逼的,大家也千萬不要信。
在選擇資源時(shí),我會(huì)先看一遍目錄,了解個(gè)課程大概,假如說很多知識(shí)你都已經(jīng)會(huì)了,也許就不需要再跟著這份資源學(xué)習(xí)。
比較重要的一點(diǎn)是,要和同類的資源做對(duì)比。
就像本文開頭提到的問題,如何在兩個(gè)系列視頻課中做出選擇呢?我會(huì)掃一遍兩套視頻的目錄,了解視頻大致的內(nèi)容,對(duì)自己能學(xué)的知識(shí)有個(gè)預(yù)期,再做決定。

4. 目標(biāo)匹配度
一千個(gè)人有一千個(gè)哈姆雷特,每個(gè)人對(duì)同一份資源的評(píng)價(jià)也會(huì)褒貶不一,所以要選擇相對(duì)適合自己的課程。
就拿上一點(diǎn)提到的 資源內(nèi)容 舉例,我通常會(huì)選擇目錄相對(duì)更全面、覆蓋知識(shí)點(diǎn)更多的課程,生怕錯(cuò)過任何一個(gè)小細(xì)節(jié),當(dāng)然遇到了已經(jīng)熟悉的知識(shí)點(diǎn)也可以快速跳過。反之,如果有同學(xué)時(shí)間緊張,追求速成,可以反其道而行之,選擇一些小而精的課程。
5. 資源質(zhì)量
比如書籍和文章的排版、視頻的清晰度、語音設(shè)備有無雜音等等,這些都是最基本的要求。在學(xué)習(xí)的同時(shí),也要注意保護(hù)好我們的視力和聽力哦~
6. 配套資源
優(yōu)秀的書籍和視頻課程都會(huì)配套一些學(xué)習(xí)資源,比如代碼練習(xí)、習(xí)題答案、講義、筆記等。利用好這些資源能幫助我們更高效地學(xué)習(xí),不容小覷!很多培訓(xùn)機(jī)構(gòu)的網(wǎng)絡(luò)課程也都比較貼心,這些配套資源基本都是免費(fèi)的。
7. 資源認(rèn)可度
選擇學(xué)習(xí)資源就像是購(gòu)物,建議多了解下他人對(duì)該資源的看法。書籍的話可以參考豆瓣評(píng)分,視頻的話可以看播放量、收藏?cái)?shù)、點(diǎn)贊數(shù)、好評(píng)率、一些網(wǎng)友評(píng)論等。
但也存在問題,現(xiàn)在是流量為王,網(wǎng)上刷數(shù)據(jù)、刷評(píng)論的太多了,所以也不要被數(shù)據(jù)遮蔽了雙眼。建議在選擇學(xué)習(xí)資源時(shí),多去問問身邊同學(xué),聽聽他們的真實(shí)意見,比如:“你覺得這個(gè)課怎么樣?大概多久能看完?看完后能學(xué)到哪個(gè)程度?有哪些章節(jié)不需要看么?” 等等。
也建議大家養(yǎng)成好的習(xí)慣,把你認(rèn)為不錯(cuò)的資源保存下來,不僅能幫助自己復(fù)習(xí),還能分享給更多同學(xué)~
(上傳到編程導(dǎo)航上也是個(gè)不錯(cuò)的選擇哦)

如果以上幾點(diǎn)還不足以幫助你選擇資源的話,可以先分別 試看一部分內(nèi)容,再做決定也不遲~
直到最后,我也不會(huì)對(duì)開頭那個(gè)某乎的問題給出明確的答案,因?yàn)檫@兩套資源反饋都還不錯(cuò),可能分別更適合部分朋友,沒必要非得區(qū)分個(gè)優(yōu)劣(而且這兩家我都惹不起)??戳诵┢渌瑢W(xué)的回答,也基本是保持中立。
授人以魚不如授人以漁,結(jié)合魚皮分享的一些資源選擇的要點(diǎn),我相信聰明的同學(xué)都會(huì)有自己的選擇了!

往期推薦

