在這個網路已經發展許久的時代,最不缺的就是學習資源,但或許有些人就這樣在知識汪洋裡迷了航,不知道該往哪去,也不知道終點在哪——因為它可能根本沒有終點。
在工程師的討論區中常常看到有人發問,問著自己下一步該往哪去,是要學 A 呢,還是學最近好像很熱門的 B,或是回去學習那些重要的基礎 C。身為一個前端工程師更是如此,時不時就有新的框架或是函式庫出現,讓有些人覺得自己學不動了,怎麼這麼多東西要學。
曾經我也是這樣的。
每天早上看著 Hacker news,關注國外科技業的第一手情報,看看有哪些新的事件;我也看掘金的前端版,看著一篇篇所謂的「乾貨」,從中學習我不知道的 JavaScript 技巧以及前端的知識。儘管我每天看,但總覺得自己好像沒有學完的一天,每天都有新的知識可以汲取,可以學習。
在這樣的知識汪洋裡,會有「學不完」的知識焦慮是很正常的,那該怎麼辦?
我選擇放棄,對,就是放棄。
我開始不去主動關心那些知識來源,只透過 Facebook 或推特之類的社群網站主動追蹤,讓他們推播給我。而那些乾貨技術文章,是真的寫得不錯,但問題是,我真的需要這些知識嗎?
我記得六七年前 AngularJS 正夯的時候,我跟朋友說我要去學 AngularJS,但我沒有。React 在台灣開始紅起來的時候,我因為工作的關係去學了,後來也應用在工作上。到後來 Vue 在台灣越來越多人採用,我也說我要去學 Vue,體驗一下不同框架,但我後來也沒有真的去學,也沒怎麼樣。
少了那些「前端工程師面試必學知識」、「帶你看看 React 實作原理」、「你不知道的 JavaScript」以後,真的對我有影響嗎?我真的就因此什麼都不會了嗎?顯然不是。
知識本來就是無窮無盡的,新的技術會一直出現,因此知識本來就是個沒有盡頭的汪洋,你再怎麼努力都脫離不了。在這樣的前提下,我認為重要的事情只有一件,那就是找到自己的方向。
原本你不知道東西南北要往哪走,於是就四處晃晃,這邊去一下,那邊也去一下。確立方向以後,假設要走的是北方,那東南西方的東西你就幾乎不會碰到了,但沒關係,因為代表那些沒有這麼重要。
我不會 Angular,我不會 Vue,我不會 Svelte,我不會 WebAssembly,我不會實作 Promise,我沒辦法講出 React 底層到底是怎麼運作的,我也不懂那些奇形怪狀的 JavaScript 考題。
但我在工作上可以用我熟悉的 React 把功能完成,修 bug 也可以找到根本原因並且修掉,寫 code 時可以考慮到擴充性但不要過早最佳化,實作時會想到一些 edge case。
我不懂演算法跟資料結構,但如果有天我想面試 FAANG,我會去學。我不懂 React 底層在幹嘛,但如果有天我想面試會考這個的公司,我會去學。我不懂 JavaScript 的所有奇怪部分,但如果有天我想成為 JavaScript 大師,我也會去學。
知識焦慮產生的最大原因之一,我覺得是因為沒有方向,沒有目的。因為沒有目的,所以就像無頭蒼蠅一樣到處亂撞,什麼都很重要於是什麼都學,最後連自己學了什麼都不知道。
如果你覺得自己找不到方向,我有幾個建議可以聽聽。假設你已經在工作了,研究的方向就先放在工作上會用到的工具,例如說工作在用 Next.js,就去研究這套在幹嘛,怎麼使用。
如果工作上的你都會了,或者是還在找工作的話,那就去看徵才網站,找一間你想去的夢幻公司,開始研究他們用的那些工具跟框架怎麼使用,先把這個當作是你的方向,至少可以幫你縮減學習的範圍。
有些人可能會想說:「怎麼上面都只叫大家學工具,不是都說基礎跟原理比較重要嗎?」,我認為核心知識的原理跟應用是相輔相成的,舉例來說像是 design pattern,新手常犯的錯就是學了之後想要趕快應用在工作上,結果就過度工程化了,用在根本不需要它的地方。
但我認識這東西是從實作開始,我寫 Android 的時候就看見了 Builder pattern 的應用,先看過之後再去學 design pattern,我覺得比較容易融會貫通,知道這些可以用在哪裡。
所以從學習工具跟框架開始,我認為也是不錯的一條路。況且從這些開始,並不代表就真的不去碰觸原理跟核心知識,這是一個順序的問題。先從應用開始,對於原理感到好奇之後再去看原理,這樣的順序有時候比顛倒過來好。
舉例來說,你想知道 React 原理你必須先寫過 React,不然看起來沒感覺。你想知道 Promise 怎麼實作,必須要先會用,不然你也不知道為什麼要這樣做。
學習本來就是永無止盡的,因此「學不完」是很正常的一件事,如果因為學不完而困擾,是一種庸人自擾。學不完是肯定的,因此重點不是學不學得完,而是目標跟順序,哪些是重要的?哪些是應該先學的?
有了方向以後,才能擺脫這種知識焦慮,因為你會很清楚哪些知識現在不重要,就可以不去管它。我寫 React,我當然從 React 的知識開始研究,我不會因為我不懂 Angular 或是 Vue 而焦慮,因為那些對現在的我來說都沒這麼重要。
如果你發現自己困在知識汪洋裡,可以仔細想想,你需要的可能不是更多的資源或是更多的時間,因為那些都沒有幫助。你需要的是一個方向,一個讓你可以專注眼前目標,忽略其他雜訊的方向。