程式新手,怎麼學比較快?

黃禎平
Jun 13, 2023

--

每個人都有習慣的學習模式,習慣用看的、聽的、讀的或動手實作,理解和找到自己怎麼學比較有效率,是很重要的事情。在這段日子有大量學習新知識和技能的需求。認為目前的學習方式,還算能快速地上手陌生技術和理解知識。前幾日都再碰TS、Jest,對我來說都是陌生的技術,歷經這兩個項目的學習,趁現在有感觸時,把自己學習的過程整理一下。

1.先小步學習:

學習一個陌生的領域和新技術時,要記得「新的」知識、概念、名詞,對大腦都是一種認知負荷,剛開始學習都會覺得特別吃力和困難,因為我們對於新知識、概念還沒有建立起連結。因此,我認為比較好的方式,先「降低」學習對大腦的負擔,從小步開始學習,一小步一小步的學習,確認每一小步學習的知識點都有穩固之後,才有機會跨大步走。再跨步往前走時,有三個方法很重要,分別是「從縮小學習範圍做起」、「快速篩選學習的管道」、「以用為學的學習心態」。

  • 從縮小學習範圍做起: 別一開始就想要學完所有的知識、內容,大腦面對陌生且大量的新知識都是較大的負擔。若負擔過重,變得只會想抗拒學習,自然也就失去學習的動機和興趣。越是想一步登天的人,通常都是最早放棄的。先從基礎開始學習,打好基礎後再慢慢擴大學習的範圍和領域,把這個領域的底層基礎概念、知識先弄懂、理解後,再往下走。我們在初次學習腳踏車前,往往都會在後輪裝設輔助輪,使我們能在尚未學習保持平衡之前,先熟悉如何踩腳踏車移動,習慣踩踏運作的模式之後,才會開始挑戰移除輔助輪。輔助輪的角色,就像我們再學習時的基礎(基石),透過它能讓我們把基礎再紮的更穩固。
  • 快速篩選學習的管道: 在學習一個新的技術,通常會先大量的找尋相關資料,但是網路上的資源千千百百種多,哪種適合我?對一個領域陌生且不懂的狀況,難以辨別正確的訊息或過時的訊息。對我來說,學習程式技術,有官方文件就先看官方文件,再來看別人分享的技術文章,如果官方寫得沒有很好理解或好閱讀的狀況下,我會找其他相關資源,像是影片、技術文章、心得分享交錯看。能夠快速篩選當前適合自己的學習管道很重要,並且保持彈性,覺得官方文件啃不下去時,趕快跳去其它啃得下去的地方學習。覺得閱讀文字起來,有點吃力,可以改看影片的方式學習。每個人擅長學習的方式都不同,有人喜歡用看的、用手操作的或用讀的。
  • 以用為學的學習心態:工程師去學習一項技術,可能出於很多種動機和因素,對我來說學新技術,就是要解決當前的需求與問題!新的技術,可以帶來比目前有更好或更快的解決方式或其它因素。所以我是抱持著,將學到的知識與技能運用在專案上,透過實踐的過程,理解自己學習的程度與還需要補強之處。抱持著這樣的心態,讓我在學習上更有動機想去學好來,而非只是隨興學學而已。

剛開始學習,總會覺得難或挫折,先小步開始,持續邁進,建立信心。謹記從小範圍學習,別想著一下都弄懂。剛開始學到的東西,弄不懂,可以先跳過,別一直在不懂的地方瞎耗,只會磨損學習的熱忱和信心,再換個小地方開始學習,逐步鞏固和建立概念後,再回頭去理解原先不懂之處。

學習的當下,可以聯想看看,目前所學的內容,可以運用在哪個場景或狀況下,有這樣的聯想,能把知識點在哪個場景中運用給連結起來。

就像點跟點之間可以串聯成線,越多的知識點連結在一起,再運用起來,這些觀念就更為鞏固。

2.持續彙整學習:

開始學習的動作後,就是想辦法增強在知識點的記憶與吸收。有句俗諺這樣說:好記性不如爛筆頭。它的意思是說:記憶力再好也會有遺忘的時候,而你寫下來的資訊卻不會消失。因此,作筆記很重要,但前提是你做出來的筆記,要有系統性且好理解和複習的那種,否則,你也只是知識的搬運工而已。是把資訊換個地方抄寫下來並紀錄而已,並沒有做到有效地彙整與理解內容。我認為在這階段的重點有三個:

  • 學習後有沒有留下記錄或筆記?:學習技術和程式,有留下紀錄或筆記超級重要!沒有作筆記,光是看影片或官方文件,雖然有加上自己的實做,但在觀念和基礎不夠穩固的狀況下,過陣子在回頭看,會需要花很多時間回想,也幾乎完全忘記了。當初若有留下紀錄或筆記,可以節省很多時間,也加快自己複習和加深印象。
  • 有沒有一套習慣做筆記的方式? :我個人習慣用數位筆記的方式記錄所學的內容,目前使用Notion,覺得是頗為強大且方便的。紀錄很多自己在程式學習上的筆記和資料,一開始我是用紙本的方式記錄,起初很認真的手寫程式碼,後來考量到便利性和快速性,就改用數位筆記。舉例來說:如果我要查找資料,我還要翻閱筆記本,另外光是寫筆記就花很多時間,手寫程式碼真的很慢。遇到比較複雜或需要發散思考的時候,我會用心智圖來做筆記。
  • 建立管理與複習知識的系統:如果你常想不起來,筆記寫在哪個地方,或是不斷寫重複的筆記在不同地方,需要重新在思索一下,你的筆記管理方式出了什麼問題,為何在需要的時候,找不到我要的筆記或內容。建立一套自己喜歡的脈絡或架構方式做整理,在查找時非常方便!

有個著名的心理學實驗,叫做遺忘曲線,顧名思義人的記憶會隨著時間長而遺忘多。記憶有兩種,短期與長期記憶,通常學習到的新知識都會短期進入記憶中,需要經過進一步的強化,才會進入到長期記憶,長期記憶的保存有長也有短,如果沒有及時的複習或強化,也是會遺忘。

強化記憶的方式很多種,可以將新知識與舊知識做連結,讓彼此產生關聯,加深記憶點。也可以定期複習所學習的內容,強化記憶與印象。建立起好的知識管理系統,再遇到需要的狀況下,能立即索引到相關資訊,最後能適時的複習尚未熟悉的內容,有助於加深記憶,我認為理解知識的深度越足夠,對於該知識的記憶也越牢固。

開始學習後並且有做筆記,摸索出自己做筆記方法後,會有效地加快學習效果和便於複習。有一套習慣的做筆記方法後,能夠更快的將新知識”建立連結”,鞏固學習內容。接下來要做的是,彙整目前學習的內容,思考哪些知識點還需要補足?還是要進入到實作階段了?

3.實作學習到的範圍:

實作是輸出所學習的內容,也是檢視自己學習狀況的行為,透過實作,也掌握自己理解的程度在哪裡。在這過程中,我會特別留心幾件事情:

(1)對這個知識點,我的理解程度在哪裡?

我會分為五種程度(以JavaScript來舉例):

  • 完全不懂:你說JavaScript的const,我沒聽過欸。
  • 一知半解:我有用過const,但不清楚在物件型別時,它的Value可以被改變。
  • 有弄懂,但與它相關的知識點沒有懂:目前都主要使用Const、Let,這就是趨勢啦!不用Var,就是潮!我也不知道原因啦!
  • 有弄懂,與它相關的知識點也有搞懂:我知道Let、Const、Var的之間差異和使用時機。
  • 有弄懂,與它相關的底層概念也有懂:我知道Let會有TDZ,Var會有Hoisiting的現象,也知道Const為何在物件型別下Value可以被改變等……

我會去理解目前的學習,以及了解這個知識點的吸收狀況,我處於哪一種程度的理解,是需要再加強此知識點,還是加強與它相關知識點,同時也去檢視自己的筆記狀況,是否需要再補強,有哪些新的知識概念可以在加入的?

(2)目前迫切需要弄懂的程度在哪(目前學到哪邊夠用就好)?

我會評估目前對於這個知識點需要掌握的程度要到哪裡,它是屬於很基礎需要被搞懂的,還是屬於比較冷門不常見的知識又或者暫時用不到的艱深知識,心裡有個底之後,就會明白要弄懂那個知識點的輕重緩急。在有限的學習時間下,弄清楚自己迫切要學習的項目很重要!

(3)實作過程中哪個地方做起來特別不順?或是可以怎麼調整會更好?

以網頁前端舉例來說,接到一個需求是網頁要做切版和撰寫程式。針對這個實作過程,發現在撰寫CSS時,有點不順和卡,要去弄清楚的是是對於CSS框架工具的不熟練?還是CSS的語法不熟悉?還是CSS的原理邏輯沒有弄清楚?弄清楚到底是哪個環節要加強,這樣要修正、進步比較能夠快速找原因和需要再次加強學習的知識點。

寫完程式碼之後,總會對目前的寫法或卡住的點再思考,會想說有沒有更好的設計模式或撰寫方式,怎樣寫可以更簡潔、易閱讀與好維護,透過這方式,能讓我寫出來的品質持續再進步。

(4)紀錄在實作中有疑問與想再深入的知識點

在還沒動手去做之前,別認為你已經會了。認為看一看官方文件、教學影片,好像就能習得一項技能。想像是很美好的,但實作後會讓你認清事實,事實是我們尚未掌握這新的技術。做了之後才會發現自己的理解程度在哪,進而去評估以目前的狀態或專案,需要學到的程度或掌握的程度要到哪。做了也才會知道,原來有好多問題 (笑)。記錄實作的疑問與想再深入的知識點,會幫助你完善技能的習得

學習的背後總有個目的,而工程師的宿命就是不斷去學習!透過學習與實作的交替,持續精進自己的能力與技術。建立好自己的學習模式,在往後自學的日子上能無往不利,帶給你快速掌握技術的能力。

小結:

學習先從小步開始,降低學習對大腦的負擔,從開始初步接觸到「持續」學習的過程。並在過程中建立起自己的知識管理系統,知道目前所學習的知識點要放在哪裡,往後要需要用到時,可以明確知道從哪裡索引起。適當的做複習,加深自己的記憶點,避免所學的內容隨著時間而逝去,可惜的是花費珍貴的時間。學了之後,總是要有輸出和檢驗自己的學習狀況,就像是學校的考試,定期的考試,檢視在這段時間的學習成果。透過專案的實作驗證自己學習的狀況,是否有需要再加強之處?總之起身做就對了,遇到不明白處,想辦法弄懂就是了。

日語的古文中,稱呼學習的詞是「勉強する」是指勉強自己學習,身為工程師有時候學習是不得不;有時候是出於興趣;有時是出於需要,不論出於何種動機,讓自己能夠樂在其中很重要,試著找到可以讓自己快樂的小地方或成就感。

最後,我的學習模式是有三個步驟,「先小步學習」、「持續彙整學習」、「實作學習到的範圍」,建立起一個學習的循環,從中精進這一項領域的學習。像是我發現以前弄很久的Class物件導向,再次閱讀或學習之後,好像有比較清晰和有理解,而且也可以建立起關聯了。

由於近期有大量的自學經驗,趁這時間整理自己的學習模式與架構,透過文章的梳理,也比較清晰自己的學習模式是如何,有了明確的步驟之後,再往後的自學,我能以此為步驟依循,加速自己的學習步調,也能去檢驗自己目前處於哪個步驟當中,要在多加強哪個項目或方法。這是我透過經驗的歸納而整理出來的步驟,這個方式有適合你嗎?有覺得哪個地方特別不錯呢?你有什麼樣的學習模式嗎?歡迎留言和我討論你的看法。

如果對學習很有興趣,我有一些書單可以給你參考看看:

1.《精準學習》

2.《大腦喜歡這樣學》

3.《快速學習》

--

--

黃禎平

前端工程師、非軟體本科系的自學者,因誤打誤撞而進入到前端領域,持續深化自身技能與技術,曾是戶外教育老師,對教育仍保有熱愛。喜愛挑戰、冒險與大自然,每年一定報名馬拉松,期望八十歲也能持續跑馬拉松的人。