在 AI Engineer Europe 大會上,Total TypeScript 創辦人、現任 AI Hero 教育平台主理人 Matt Pocock 帶來一場名為「It Ain't Broke: Why Software Fundamentals Matter More Than Ever」的短講。對許多擔心自己技能組在 AI 時代失去價值的工程師來說,他要傳達的訊息頗具安撫意味——軟體工程的基本功不但沒有過時,反而比過去任何時候都更重要。
Matt 在開發者圈不算陌生面孔。他過去是 Vercel 的 Developer Advocate,也曾是 XState core team 成員,而 Total TypeScript 這個系列幾乎被視為 TypeScript 教育界的 industry standard。過去一年他從 TypeScript 教育者轉戰 AI engineering 教育,把重心移到自己創辦的 AI Hero 平台,目前社群已累積 54,000 名以上的開發者。他的 YouTube channel(@mattpocockuk,17.5 萬訂閱)有一句直白到近乎口號的 motto:「We don't do vibe coding — this is a channel for real engineers」。從 TypeScript 到 AI engineering 的轉型,讓他的觀點同時站在「老派軟體工程美學」和「最新 AI 工具實戰」的交界點上,這是這場 talk 之所以有份量的原因。
他在這場短講裡的 thesis 開門見山——good codebase 比過去任何時候更值錢,因為 AI 在好的 codebase 裡能發揮得異常出色,而在壞的 codebase 裡則會把事情越做越糟。
Specs-to-code 為什麼跑不出好結果
Matt 首先回應近期火熱的「specs-to-code」運動——也就是寫一份規格文件、讓 AI 把它編譯成程式碼,出問題就改規格、再編譯一次,完全不看程式碼本身。他坦承自己也試過,但結果是:第一次跑出來的程式碼不太好,第二次更糟,第三次更糟,跑到後來只剩下一堆垃圾。
他在《The Pragmatic Programmer》裡找到了這個現象的名字:software entropy(軟體熵)。每一次只盯著當下這次修改、不去想整個系統設計,codebase 就會越來越糟。Specs-to-code 的核心假設是「code is cheap(程式碼很便宜)」,但 Matt 主張這個假設是錯的——bad code 從來沒有像現在這麼貴,因為一個難以修改的 codebase 會讓你完全吃不到 AI 的紅利。
Failure Mode 1:AI 沒做出我想要的東西 → 用 grill me 建立共同理解
Matt 引用 Frederick P. Brooks 在《The Design of Design》裡的「design concept」概念:當兩個人一起設計東西時,真正在被設計的那個東西其實飄浮在兩人之間,是一個無形的理論,不是任何能寫進 markdown 的 asset。你和 AI 之間最大的問題,是雙方並沒有共享同一個 design concept。
為此他寫了一個叫做「grill me」的 skill,內容極為簡單:「不停地審問我關於這個計畫的每一個面向,直到我們達成共同理解;走遍 design tree 的每一個分支,一個一個解決決策間的相依性。」這個短短幾行的 skill 在 GitHub 上累積了上萬顆星。它會讓 AI 一口氣對你提出 40、60 甚至上百個問題,把自己變成一個對手,直到雙方真的對齊。Matt 個人偏好這個流程更勝於 Claude Code 預設的 plan mode——後者太急著產出 asset,而 grill me 要求你先把 design concept 對齊,再開始動工。
Failure Mode 2:AI 太囉嗦 → 用 ubiquitous language 對齊術語
第二個失敗模式是 AI 講話太多、彷彿和你雞同鴨講。Matt 把這個問題類比成資深開發者和 domain expert 之間的語言隔閡——當對方拿微晶片之類的專業領域跟你溝通,沒有共同術語的話,翻譯成程式碼的過程就會處處崩壞。
他從 Domain-Driven Design 借來「ubiquitous language」的概念:開發者之間、程式碼裡、和 domain expert(在這個情境下是 AI)的對話,全都從同一個 domain model 出發。他寫了一個 skill 自動掃描 codebase、抽出術語、產出一份 markdown 表格,然後在和 AI 規劃任何事情時都把這份檔案攤在旁邊。從 AI 的 thinking trace 可以觀察到,這份共同術語不只改善了規劃品質,還讓 AI 的思考變得更精簡、實作更貼近原本的計畫。
Failure Mode 3:AI 寫的東西就是不會動 → TDD 強迫小步前進
第三個失敗模式是 AI 寫的東西就是不會動。Matt 直言該用的 feedback loop 都該用——TypeScript、瀏覽器存取、自動化測試一個都別少——但即使有了這些 loop,LLM 還是不太會用,常常一口氣寫一大堆程式碼才回頭想到「啊我應該 type check 一下」或「啊我應該寫個測試」。
《The Pragmatic Programmer》把這種行為叫做「outrunning your headlights」——開太快、超出車燈照得到的範圍。書裡的核心原則是「the rate of feedback is your speed limit(回饋的速率就是你的速度上限)」。為了強制 LLM 慢下來、踩小步,Matt 主張用 TDD:先寫測試、讓測試通過、重構,再進入下一輪。
Failure Mode 4:Codebase 不可測 → Deep modules 才能讓 AI 探索
但 TDD 的前提是 codebase 本身要可測試,而好的 codebase 才是好測試的 codebase。這裡 Matt 再次回到 John Ousterhout 的《A Philosophy of Software Design》,引用「deep modules」概念:理想的 codebase 應該由少數幾個介面簡單、內部功能豐富的深模組組成,而不是一堆功能很少、介面卻複雜的淺模組。
淺模組的 codebase 對 AI 來說特別難以探索——AI 試圖理解你的程式碼,但因為結構太散,找不到對的模組、看不懂相依關係,最後就誤解了你的程式碼。深模組的 codebase 則讓 AI 有清晰的邊界可以走,在介面上測試就行,內部實作可以放手讓 AI 處理。Matt 也寫了一個 skill 叫「improve codebase architecture」,把淺模組的 codebase 重構成深模組結構。
Failure Mode 5:腦袋跟不上 AI 的速度 → Design the interface, delegate the implementation
第五個失敗模式是,當 feedback loop 都對了、可以比過去任何時候出更多 code,但人腦跟不上了。Matt 反問現場有沒有人覺得自己在開發生涯中從來沒有這麼累過——他自己也是。
但深模組的結構同時也是大腦的解藥:你可以把這些深模組當成「gray box」,只負責設計介面、不深入 review 實作細節(顯然金融類等高關鍵度模組除外)。把實作交給 AI,自己只在介面層測試和驗證。這引用了 Kent Beck 的話:「Invest in the design of the system every day(每天都要在系統設計上投資)」。Specs-to-code 的方向恰好相反——是在從系統設計上撤資。
講者的核心類比
整場短講最具畫面感的類比放在結尾:把 AI 想成一個「在地面上的戰術級程式設計師,一個士官」,不停地推進每一行程式碼的修改;而你需要在他之上,扮演「策略層」的角色。這個策略層需要的,正是過去 20 年甚至更久以來,軟體工程師一直在使用的那些基本功。
補充脈絡:這場 talk 是怎麼長出來的
值得一提的是,這場 talk 的五個 failure mode 並不是從學術觀察整理出來的,而是來自 Matt 同期在開發的一門 cohort 課程:「Claude Code for Real Engineers」。這是一門在 AI Hero 平台上開設、為期兩週的線上課程,定價 $795 USD,內容包含 8 個 workshop module、跨時區的 live office hours、Discord 社群、終身存取以及 completion certificate;受眾鎖定在「想把 Claude Code 整合進 production 環境」的有經驗開發者,涵蓋議題從 LLM context window、Plan/Execute/Clear workflow、AGENTS.md、custom skills、PRD、multi-phase planning 一路到 autonomous agent loops。
Matt 對這門課對外的 pitch 直球得有點挑釁:「過去 20 年的 software 經驗 not for boomers」——意即這些基本功不是老派遺產,而是 AI engineering 真正起飛的前提。他在設計這門課的過程中累積的實戰觀察,正是這場 talk 五個 failure mode 的來源。換句話說,這不是一個事後總結的演講,而是一個正在被教的方法論的濃縮版。
結論
整場演講的訊息其實非常簡潔:code is not cheap, code is important。AI 不是用來讓你逃避軟體基本功的工具,而是讓這些基本功變得更加關鍵的放大器。在好的 codebase 裡,AI 能釋放驚人的價值;在壞的 codebase 裡,AI 只會把熵推得更快。對於擔心自己的技能組在 AI 時代失去價值的工程師來說,這支影片提供了一個明確的反向結論——基本功從來沒有像現在這麼值錢。
Matt 自己 YouTube channel 那句 motto——「We don't do vibe coding, this is a channel for real engineers」——讀完這場 talk 之後再回頭看,基本上就是這場演講的延伸宣言。
影片連結: