什麼是 Vibe Coding?
在 AI 寫程式 (AI Coding) 的圈子裡,最近很流行一個詞叫 “Vibe Coding”。
意思大概是:你不需要懂太多語法,不需要懂底層原理,只要跟 AI「頻率對了」(Vibe check),用自然語言隨便聊幾句,AI 就能幫你把功能生出來。
上週,我為了驗證一個 Side Project 的點子(一個 RPG 化的番茄鐘 App),我也進入了這種 「上帝模式」。
- 「幫我做一個倒數計時器。」👉 好了。
- 「倒數完要跳出煙火動畫。」👉 好了。
- 「幫我把經驗值存到 LocalStorage。」👉 好了。
那種多巴胺分泌是真實的。以前要寫兩天的功能,我兩小時就做完了。我看著手機上可以跑的 App,心想:「太神了,我一個人就是一支軍隊。」
夢醒時分:屎山崩塌的那一刻
然而,蜜月期只維持了三天。
當我要加入「雲端同步」功能,並重構資料結構時,災難發生了。我打開 App.tsx,發現裡面塞了 800 行程式碼。
- 變數命名混亂: 有
userXP,也有experience,還有exp_val,全看 AI 當下的心情。 - 邏輯互相打架: 計時器的
useEffect裡包了三個if-else,是用來修補上次動畫不消失的 Bug,結果導致現在倒數無法暫停。 - 改 A 壞 B: 我叫 AI「幫我優化介面」,結果它把我的資料儲存邏輯刪掉了。
雖然 App 「看起來」 能動,但打開程式碼一看,裡面全是 // Fix later 和各種莫名其妙的 try-catch。這不是軟體工程,這是數位違章建築。
這就是 Vibe Coding 的代價:你借來了速度,但償還的是指數級暴增的技術債。
為什麼 AI 會寫出垃圾?
作為一個平常需處理 日流量 4TB 級別的 SRE(維運工程師),我冷靜下來分析,發現問題不在 AI,而在於**「缺乏約束」**。
AI 就像一個剛畢業的天才實習生,手速極快,但沒有大局觀。 如果你不給它藍圖(架構),只給它指令(功能),它就會用最直觀、最暴力的方式解決眼前的問題。
- Context Window 的陷阱: AI 記不住你三天前寫的邏輯,它只看得到當前的檔案。所以它會寫出重複或衝突的代碼。
- 缺乏「單一真理」(Single Source of Truth): Vibe Coding 沒有規格書,你的 Prompt 就是規格。但你的 Prompt 變來變去,程式碼也就跟著精神分裂。
從 Vibe Coding 到 Engineering
痛定思痛,我決定把這坨 MVP 丟進垃圾桶,重新來過。
這次,我不求快,我求穩。我引入了我在維運高流量系統時的思維:
- Spec First (規格先行): 在寫 Code 之前,先寫 Markdown 文件定義資料結構。這是我跟 AI 的「合約」。
- TDD (測試驅動開發): 我不叫 AI 直接寫功能,我叫它**「先寫測試」**。如果它能寫出通過測試的代碼,那邏輯就不會爛到哪去。
- Monorepo 與 模組化: 強制 AI 把 UI、邏輯、資料層分開。如果不分開,我就拒絕接受它的 Code。
結論
AI 確實能讓我們變成 10x 工程師,但前提是你的 「基礎物理知識」 要夠紮實。
如果你不懂系統設計、不懂資料流、不懂解耦,那 AI 只會是一個讓你 「以 10 倍速度製造垃圾」 的放大器。
別再 Vibe Coding 了。慢下來,寫好 Spec,做好設計。 你是架構師,AI 只是你的手。不要讓手去決定腦袋該做的事。