其實原本的標題想下 : 送給所有資工人的文章
因為我所謂的「自學」比較像是資工系學生的「自學方法」
不過考慮到並非所有人都是資工系,但是也想參與一樣的議題
不知道你有沒有過類似的經驗
在你的搜尋引擎搜尋 : 「How to be a hacker ?」、「如何當駭客 ?」
可能出自於各種原因,你就是好奇的想了解一下所謂「駭客」在幹嘛 ?
這時候文章通常會列出一大堆可怕的程式語言,還有你聽都沒聽過的開發工具
文末問你一句 : 「聽完這些,你還想當駭客嗎 ?」
如果你是在巴哈或者 PTT 這種地方看到,可能還會有網友回你 : 「醒醒」
或者「真正的駭客不會來問這種問題,因為他們早就自己自學了」
鑽研資工領域的技術到現在,我發現越學越多這件事情真的是常態
雖然我沒有資格說我強到是一個 hacker,但是我肯定 hacker 真的就是要會那麼多東西
The Secret step-by-step Guide to learn Hacking
LiveOverflow 做的影片,大概提一下影片講的內容
影片開頭就直接說 : 「如何一步一步學習 hacking ? 我不知道」
hacking 泛指電腦領域的任何技術都算
而電腦領域那麼廣泛,技術與技術之間又緊密相連
這意味著一個人一生中要學完全部的技術已經是注定不可能的事情
加上學習 hacking 從來都不是一條筆直的道路
所以根本沒有什麼「step-by-step」的方法可以遵循
如果要開始學習,勢必要有一個學習目標,你必須對你的目標很明確
但是在大部分時候,能有學習目標就很好了,還不需要到目標很明確
如果你有把上面那支影片看完,你也會發現 LiveOverflow 的學習順序是很奇怪的
可以說是毫無規律可言,因為就是毫無規律
以我自己來說,我最早是學習 C 語言這東西
後來聽說 C++ 跟 C 語言很像耶 !? 所以來學學看 C++
拜託,不要再跟初學者說 C 跟 C++ 很像了
後來整個 2019 都在寫 Python,因為我想寫爬蟲
一直到 2020 下半年我又跑來做網頁後端
LiveOverflow 也說了,不管你學了什麼東西,以後用不用的到都不算是浪費時間
所以想學什麼就儘管跳進去就對了,學了 A 的過程中你可能又會發現 B
在我剛開始學程式的時候,我根本沒想到我現在會跑來做網頁後端
但是我也不會覺得 2019 一整年學的爬蟲技術是浪費時間
因為寫爬蟲對於 HTTP 協定的觀念都可以沿用到網頁
我甚至很慶幸起手學 C 語言,把我的基礎打得還不錯
自學最終要回到一個很根本的問題,就是自律
自律包含很多面向,像是 : 自動自發學習、每天持續性的學習、還有不屈於挑戰的精神
這些都是人格特質相關的東西,人格特質以外還能輔助你的依然還是目標
假設你今天學習 C 語言,你最終一定有一個目標是你想要達成的
你終究是想寫出點什麼作品,你才會來學習 C 語言,這個動機相當重要
你必須不斷的用這個動機與實作成功的成就感刺激自己
畢竟看到自己的程式可以動起來就是對程式設計師最感動的事情了
對於擁有所謂「自律」人格特質的人,只要給你方向就能驅動你前進
像是給你一個目標,你就有辦法自學 ; 給你一個關鍵字,你就有辦法自己查資料
試想,你今天編譯程式碼的時候噴了一段錯誤,你的心情一定很不好受
但是你一定會把錯誤訊息丟到 Google 上面看錯在哪
最後得到一個全新的解決方案,發現自己原來還不知道某個「關鍵字」
再反向搜尋這「關鍵字」,你的問題迎刃而解,編譯成功,程式也動了
而且你還知道一個全新的「關鍵字」,我認為這就是自學的核心
資工系的學生在解決難題的時候,想破頭了都是想要拿到那個「關鍵字」
因為那個「關鍵字」是你還未知的東西,但是你知道你很需要它