生活·2026年6月18日·10 分鐘閱讀

工程師怎麼持續學習:我追新技術追到很累之後,學會的事

L
Louis Wu

Louis Wu,台灣資深後端工程師,主力 Go,做過交易所撮合、金流與高併發系統,習慣從底層原理理解問題。

我寫程式快十五年了。這段時間裡,我看著 jQuery 從神壇上跌下來,看著 AngularJS 整碗砸掉重練變成 Angular,看著 React 從一個臉書內部專案變成半個前端世界的共主,看著容器化、微服務、Serverless、然後是現在每天都有人在講的 AI Agent。每一波我都或多或少跟過。

而我想先誠實講一件事:我曾經被這些東西追到很累。

那種焦慮是真的

我記得有一段時間,大概是我做交易所撮合系統那幾年,技術圈正好處在一個爆炸期。每天打開 Hacker News、打開技術社群,都會看到一個新名詞。今天是某個號稱比 Redis 快十倍的記憶體資料庫,明天是某個要取代 Kafka 的訊息佇列,後天又冒出一套新的 RPC 框架說 gRPC 已經過時了。

我那時候的反應很單純,也很笨:我覺得我必須全部都懂。

我會在週末花一整個下午,把某個新工具的 Getting Started 跑一遍,跑完心裡得到一種「我跟上了」的安慰感,然後關掉電腦,下週就忘得差不多了。我的瀏覽器書籤裡塞了幾百個「之後要看」的連結,我的 Udemy 帳號裡買了十幾門課,認真上完的不到三門。我訂閱了一堆電子報,每天信箱裡躺著我永遠讀不完的「本週前端十大新工具」。

那種感覺很微妙。表面上我很勤勞,一直在「學習」,但內心其實是焦慮的。我怕落後,怕哪天面試被問到一個沒聽過的詞,怕同事在聊一個我插不上話的技術。這種焦慮驅動的學習,本質上是恐懼,不是好奇。而恐懼驅動的東西,通常都不會長久,也不會深入。

我真正開始轉變,是在一次線上事故之後。

一次半夜的事故,教會我什麼才是根本

那是一個金流系統的問題。簡單講,我們的服務在高峰期偶爾會卡住,請求堆積、延遲飆高,但 CPU、記憶體看起來都很正常。團隊裡幾個人查了很久,懷疑是框架的問題,懷疑是某個第三方套件的 bug,甚至有人提議要不要換一套新的 web 框架,因為「聽說那套效能比較好」。

最後查出來的原因,跟框架一點關係都沒有。是資料庫連線池的設定。連線數開得太小,在高併發下大家都在排隊等連線,於是請求就堆在那邊。再往下追,其實是因為有幾支查詢沒走到索引,每一支都慢個幾百毫秒,平常沒事,一到高峰就把連線池吃光。

解這個問題沒有用到任何新技術。我用的是對作業系統、對 TCP 連線、對資料庫索引運作方式的理解。我看的是連線狀態、是執行計畫、是鎖的等待。這些東西,沒有一個是這五年才出現的。連線池的概念、B-tree 索引、查詢優化,這些知識二十年前就在那邊了,二十年後大概也還在。

那一刻我突然想通一件事:真正讓我有能力解決問題的,從來不是我跟了多少新框架,而是那些「不太會變」的底層東西。

我怎麼分辨「該學的根本」和「會被淘汰的潮流」

從那之後,我給自己一個很粗略但很好用的判斷標準:這個東西,五年後、十年後還會在嗎?

有些東西的半衰期很長。作業系統怎麼排程、記憶體怎麼配置、虛擬記憶體跟分頁是怎麼回事;網路的那幾層、TCP 跟 UDP 的差別、什麼是三次握手、為什麼會有 TIME_WAIT;資料庫的索引結構、交易的隔離等級、什麼情況會死鎖;演算法跟資料結構,為什麼某個操作是 O(log n) 而不是 O(n)。這些東西我學一次,可以用一輩子。它們是地基。

有些東西的半衰期很短。今年最紅的前端狀態管理套件、某個雲廠商這季推出的新服務、某個框架 v4 跟 v5 的 API 差異。這些當然也要學,因為工作上要用,但我學它們的心態完全不一樣——我把它們當成工具,用過、會用就好,不會強迫自己背下每一個細節,因為我知道它們很可能三年後就換了。

這裡我要特別澄清一個容易被誤解的點:我不是說新框架不重要、不該學。會這樣講的人通常是想偷懶。新框架往往封裝了前人踩過的坑,學會它能讓你工作效率高很多。我的意思是,學新框架的時候,要去看它底下在解決什麼問題、用了什麼老觀念。

舉個我自己的例子。我學 Kubernetes 的時候,一開始也是被一堆 yaml 跟新名詞搞得很煩。但當我發現它的 scheduler 在做的事情,本質上就是一個資源分配跟排程問題——這跟作業系統的行程排程是同一類問題——很多東西突然就通了。當我理解它底層其實是 Linux 的 namespace 跟 cgroups 在做隔離,容器就不再是魔法,而是我本來就懂的作業系統概念的延伸。

底層懂了,上層的新東西學起來就快,因為你不是在死背,你是在「對應」。新框架是會換的衣服,底層原理是不會變的身體。

做中學,比看影片快太多了

我前面提到我買了十幾門課卻沒看完,這不是我懶。後來我認真反省過,我發現一個對我來說很關鍵的事實:我看教學影片學到的東西,留存率低得可憐。

看影片的時候,講師寫一行我跟著抄一行,整個過程很順、很爽,會有一種「我懂了」的錯覺。但那其實是講師懂了,不是我懂了。等我真的要自己從零做一個東西,遇到影片裡沒演到的狀況——而真實世界永遠都是影片裡沒演到的狀況——我就卡住了。

對我最有效的學習方式,一直都是做專案。而且最好是做一個我自己真的想要、真的會用的東西。

我學 Go 的並發模型,不是靠看 goroutine 跟 channel 的教學,是靠自己寫一個爬蟲,要同時抓很多頁面,要控制併發數量不要把對方網站打掛,要處理某幾個請求超時的情況。寫的過程中我自然就遇到了 race condition,自然就需要用 channel 去協調,自然就搞懂了為什麼要用 context 去做取消。這些是我硬碰硬撞出來的理解,比任何教學都深刻。

做中學的關鍵在於,你會遇到真正的問題,而真正的問題會逼你去查、去想、去理解。 教學影片給你的是一條鋪好的路,做專案給你的是一片要自己開路的森林。在森林裡走過一次,你對地形的理解,遠勝於在馬路上開車看風景一百次。

所以這幾年我學新東西,幾乎都是綁定一個小專案。想學某個新的資料庫?找一個我手邊的真實需求,用它重做一遍,而不是跑官方的 todo list 範例。想搞懂某個概念?寫一個最小的東西把它實作出來。哪怕很醜很爛,只要是我自己刻出來的,那個理解就是我的。

輸出,是我學過最有效的學習

如果說做專案是我學習方法的第一支柱,那輸出就是第二支柱,而且我越來越覺得它可能比第一支柱還重要。

輸出有兩種,一種是寫文章,一種是教別人。

寫文章這件事很神奇。很多東西我以為我懂了,直到我坐下來要把它寫清楚給別人看,才發現我的理解到處都是洞。我會寫到一半卡住,發現「咦,這一步為什麼是這樣?」然後我得回去重新查、重新想,把那個洞補起來。寫完一篇文章,我對那個主題的理解,往往比寫之前深了一個層次。寫作會逼你把模糊的、感覺上的理解,變成清楚的、能用語言精確表達的理解。這兩者的差距非常大。

教別人也是一樣的道理,而且更殘酷。你在白板前跟一個新人解釋一個概念,他一個「為什麼」就能把你問倒。你以為你懂,但你只是熟悉。熟悉跟理解是兩回事。熟悉是你看到它會有親切感,理解是你能從第一性原理把它推導出來、能跟一個完全不懂的人講明白。教學是檢驗理解最誠實的鏡子。

我帶過幾個新人,每次帶人我自己的功力都會再上一層。被問到答不出來的問題,我會記下來,回去查清楚。那些問題往往是我自己從來沒認真想過、但其實很基本的東西。新人的眼睛是乾淨的,他們會問出資深工程師早就「習慣成自然」而不再追問的問題。

所以我現在的學習閉環是這樣的:用專案學進來,用文章和教學輸出去。 學進來的東西如果沒有輸出,過一陣子就模糊了;逼自己輸出,才會真的變成自己的。

不要當教學課程的收藏家

這是我自己犯過、也看很多人在犯的錯:把「買課程」「存文章」當成「學習」。

我那十幾門沒看完的 Udemy 課程就是鐵證。買的當下有一種滿足感,好像我已經往「精通某技術」邁進了一步。但那是一種廉價的、虛假的進步感。書籤存了五百個連結,不會讓你變強;它只會讓你產生一種「我手邊有很多資源」的安全感,然後你就更不急著去真的學了。

收藏這個動作,本質上是把學習的痛苦延後。真正的學習是有摩擦的、會卡住的、會讓你覺得自己很笨的。而收藏給你的是無摩擦的多巴胺。我們的大腦很容易上這個當,誤把「準備學習」當成「學習」。

我後來給自己定了一個很簡單的規矩:在我學完手上正在學的東西之前,不准買新課程、不准開新坑。 與其廣泛地收藏一百樣東西,不如深入地做完一樣。一個學完並做出東西的課程,價值勝過一百個躺在帳號裡的課程。

我怎麼安排學習的時間

老實說,我不是那種每天五點起床唸書兩小時的人。我試過,撐不久,那不是我。

我的方法比較務實,主要靠兩個來源。

第一個是工作本身。我盡量讓工作上的問題變成我學習的素材。前面講的那次金流事故,就是最好的學習。當你被一個真實的、有壓力的問題逼著去理解某個底層機制,那個理解會刻在骨子裡。所以我不會躲開困難的任務,反而會主動去接那些我還不太懂、但很想搞懂的活。在公司裡用上班時間學習,還有錢拿,這是最划算的學習。

第二個是固定但不貪心的個人時間。我不追求每天,我追求穩定。一週能有幾個完整的、不被打擾的時段,拿來推進我自己的學習專案,對我來說就夠了。比起每天硬擠半小時被切得很碎,我更喜歡偶爾有一整塊三四個小時可以真正沉進去的時間。深度的學習需要連續的專注,被切碎的時間很難進入狀態。

還有一點,我學會了對絕大多數新東西說「先不要」。 一個新框架出來,我不會馬上跳進去。我會讓它先飛一陣子。如果半年、一年後它還在、還在長大、開始有人在生產環境用、開始出現在我會接觸到的工作裡,那我才認真看。大部分喧囂一時的東西,根本撐不過這個篩選。讓時間幫我過濾,我省下大把追逐的力氣。

年紀漸長,心態變了

我三十出頭的時候,學習帶著一種證明自己的成分。我想要什麼都懂,想在任何技術討論裡都能講上話,把「會的技術很多」當成一種價值。

現在我不這樣想了。

一部分是體力跟時間的現實。家庭、責任、其他的人生面向,瓜分掉很多以前可以拿來通宵研究的時間。我沒辦法再像二十幾歲那樣,為了一個好奇的東西連著熬好幾個晚上。這逼著我必須挑,必須取捨,必須對自己誠實——我到底想把有限的時間花在哪裡。

但更深一層的轉變是心態。我終於接受了一件事:我不可能什麼都會,而且這完全沒關係。

這句話講起來簡單,但對一個曾經把「無所不知」當成自我價值的工程師來說,要真正放下是需要過程的。我曾經會因為不懂某個前端的新東西而感到一絲羞愧,現在我會很坦然地說「這個我不熟,你比我懂」。承認自己的無知,不是示弱,反而是一種成熟。一個假裝什麼都懂的人,才是最危險的。

而且我發現,當我不再追求「什麼都懂」,我反而學得更好了。因為我把省下來的力氣,集中投到我真正在乎、真正想深入的領域。與其在十個領域都當半吊子,我寧願在兩三個領域真的有深度。深度帶來的踏實感,是廣度永遠給不了的。

我也慢慢分清楚了「需要知道」跟「需要會」的差別。有很多技術,我需要知道它存在、知道它大概解決什麼問題、知道什麼時候該去找它——但我不需要真的精通它。真正需要我精通的,其實沒那麼多。把這兩種分開,焦慮就少了一大半。當一個新名詞冒出來,我先問的不是「我會不會」,而是「我需不需要會」。大多數時候,答案是不需要。

寫在最後

回頭看,我從那個焦慮地追著每個新名詞跑、書籤存了一堆卻什麼都沒消化的人,走到今天,最大的改變其實不是我學會了多少技術,而是我跟「學習」這件事的關係變健康了。

我不再害怕落後,因為我知道地基穩了,上面的東西換得再快,我都接得住。我不再貪心,因為我接受了人的時間和精力有限,深度比廣度珍貴。我不再用收藏代替學習,因為我知道真正的學習一定伴隨著摩擦跟笨拙。我靠做專案把知識撞進腦袋,靠寫文章和教人把知識焊死在腦袋裡。

技術會一直更新,這是這行的宿命,也是這行的迷人之處。但我已經不焦慮了。因為我終於明白,持續學習的關鍵,從來不是學得多快、學得多廣,而是學得多深、學得多穩,以及,你跟學習這件事,是用恐懼相處,還是用好奇相處。

我選好奇。

#持續學習#工程師職涯#底層原理#做中學#刻意練習#學習方法

相關文章