Vibe Coding 時代的技術債:寫程式像買房,你要會管理負債
AI 讓寫程式變得像說話一樣簡單,但免費的程式碼背後藏著高昂的代價。史丹佛 CS230 講座用「買房 vs 刷卡」的比喻,解釋為什麼技術債觀念是 AI 時代工程師最需要的思維框架。
程式碼現在幾乎是免費的。打開 ChatGPT、Claude 或任何一個 AI 程式助手,用自然語言描述你要的功能,幾秒鐘後就會吐出一段可以執行的程式碼。這個能力在兩年前還是科幻小說,現在已經是很多工程師的日常。
但免費的程式碼,代價其實很高。
在史丹佛 CS230 的一堂職涯建議課上,業界專家 Laurence Moroney 用了一個很精準的比喻來解釋這件事:技術債(Technical Debt)。這個概念在軟體工程圈流傳已久,但在 Vibe Coding 時代,它變得比以往任何時候都更重要。
為什麼這堂課值得聽?
先交代一下背景。這堂課發生在史丹佛,矽谷 AI 圈的核心基地。Google、OpenAI、Anthropic 的核心團隊裡充滿了史丹佛校友,很多產業前沿資訊都會先在這個圈子裡流通。
主講者之一是吳恩達(Andrew Ng),Google Brain 創辦人、Coursera 共同創辦人、DeepLearning.AI 創辦人。他創立的 DeepLearning.AI 和 AI Fund 目前都在臺灣運作。另一位講者 Moroney 曾在 Google 負責 TensorFlow 全球推廣多年,現在在晶片公司 Arm 負責 AI 業務,是長期站在產業第一線的人。
Moroney 在課堂上說,很多人聽到「Vibe Coding 會取代工程師」就很焦慮,但這其實是個迷思。真相是:越會寫程式的人,用這些工具會越強大。關鍵差別在於你懂不懂得管理技術債。
什麼是技術債?用買房來解釋
Moroney 問了一個問題:在場有多少人聽過「技術債」這個詞?舉手的人不多,這讓他有點意外。所以他花了一些時間解釋這個概念。
想像你要買一棟房子,價格是五十萬美元。你跟銀行借錢,三十年房貸,加上利息,最後總共要還大約一百萬美元。聽起來很貴,但這可能是一筆好債務。為什麼?因為在這三十年裡,你不用付房租,房子的價值可能還會上漲,而且你有了一個穩定的住所。你付出的一百萬,換回來的價值超過一百萬。
現在想像另一個場景。你在逛街的時候看到一雙很漂亮的鞋子,定價兩百美元。你沒有現金,就刷了信用卡。如果你沒有每個月付清帳單,以信用卡的高利率計算,這雙鞋最後可能要花你五百美元。你付出五百美元,但只得到兩百美元價值的鞋子。這是壞債務。
軟體開發也是一樣的道理。每次你寫出一段程式碼,不管寫得多好,你都在累積債務。這段程式碼未來可能會有 bug 需要修;可能會有人來問你這段程式碼在做什麼;可能會需要配合新需求做修改;可能會需要寫文件讓別人看懂。這些都是債務,是你未來必須付出的成本。
唯一不累積債務的方法,就是什麼都不做。但那樣你也不會創造任何價值。
所以問題不是「要不要背債」,而是「這筆債值不值得背」。
Vibe Coding 的陷阱:廉價的程式碼,昂貴的後果
現在把這個框架套用到 Vibe Coding 上。AI 工具讓產生程式碼的成本趨近於零。你可以用一句話產生一個網站、一個應用程式、一個自動化腳本。聽起來很美好,但這裡有個陷阱:產生程式碼的成本降低了,但維護程式碼的成本沒有降低。
Moroney 說他看過很多人用 Replit 之類的工具,花幾個小時就做出一個很酷炫的網站。然後呢?然後就沒有然後了。這個網站解決了什麼商業問題?誰會用?誰來維護?這些問題都沒有答案。
更危險的是組織層級的濫用。Moroney 開玩笑說,現在最可怕的場景之一是:公司的副總刷了一張信用卡訂閱 Replit,開始自己寫程式,然後把這些程式碼丟進公司的程式庫裡。猜猜誰要負責收拾殘局?工程師。
這就是壞的技術債。程式碼是用很低的成本產生的,但後續要付出的代價遠遠超過它帶來的價值。
好債 vs 壞債:判斷標準
那麼,怎麼判斷一筆技術債是好是壞?Moroney 提出了三個標準。
標準一:目標是否明確並且達成?
你在寫這段程式碼之前,有沒有先想清楚它要解決什麼問題?寫完之後,這個問題解決了嗎?
Moroney 分享了他自己的經驗。他正在做一個影片相關的 side project,過程中大量使用 AI 生成程式碼。但他的做法不是一口氣把整個應用程式生出來,而是先定義清楚一個小目標,用 AI 產生程式碼,測試一下,如果不對就整個丟掉重來。
「在 AI 生成程式碼的時代,程式碼很便宜,但完成的、經過工程打磨的程式碼仍然很貴。」他說。這句話的意思是,快速產生的草稿程式碼和真正能上線的產品程式碼之間,還是有很大的差距。不要因為產生程式碼很容易,就跳過定義目標和驗證結果的步驟。
標準二:是否創造了商業價值?
這個標準聽起來很基本,但你會驚訝有多少程式碼是「為了技術而技術」。
Moroney 說了一句很直白的話:「做出一個很酷炫的東西,然後呢?如果不能幫助公司,那又怎樣?」在他的經驗裡,很多 AI 專案失敗不是因為技術不行,而是因為從來沒有人問過「這東西對公司有什麼價值」。
好的技術債是那種能帶來商業回報的債務。例如,花時間建立一個自動化測試框架,短期內增加了工作量(債務),但長期下來可以大幅減少 bug 和人工測試的時間(回報)。
壞的技術債是那種只有成本、沒有回報的債務。例如,因為某個新框架很流行就把整個系統重構一遍,結果使用者完全感受不到差異。
標準三:人類是否能理解這段程式碼?
這是最容易被忽略、但可能是最重要的標準。
AI 產生的程式碼,你看得懂嗎?如果你明天離職了,接手的人看得懂嗎?變數的命名有意義嗎?邏輯結構清晰嗎?有沒有適當的註解和文件?
Moroney 說,最糟糕的技術債就是「只有你懂的程式碼」。你離開之後,這段程式碼變成一個黑盒子,沒有人敢動它,但公司的業務又依賴它。這種債務會一直累積利息,直到有一天爆炸。
在 Vibe Coding 的時代,這個問題變得更嚴重。因為程式碼是 AI 產生的,連寫的人自己可能都沒有完全理解每一行在做什麼。如果你只是複製貼上而不去搞懂,你其實是在埋下一顆定時炸彈。
義大利麵式程式碼:Vibe Coding 的經典陷阱
Moroney 還提到了一個常見的問題,他稱之為「義大利麵式程式碼」(Spaghetti Code)。
當你用 AI 工具寫程式,通常的流程是:下一個 prompt,得到一段程式碼,測試一下,發現有問題,再下一個 prompt 修正,測試,又有新問題,再修正……這樣來回好幾次之後,程式碼會變得非常混亂,各種補丁堆疊在一起,結構一團糟。
他舉了自己的親身經歷。他正在開發一個 macOS 應用程式,使用 SwiftUI。問題是,AI 的訓練資料裡面 iOS 程式碼比 macOS 程式碼多很多,所以即使他明確告訴 AI 這是一個 Mac 應用程式,AI 還是經常給出 iOS 的 API。他試著用 prompt 去修正,結果越修越亂,最後只好手動重寫很多東西。
這個故事的教訓是:AI 是一個很好的起點,但它不是終點。你還是需要理解它產生的東西,需要有能力判斷和修正。
如何管理技術債?
綜合 Moroney 的建議,這裡是幾個管理技術債的實用原則:
原則一:先定義,再動手。 在開始用 AI 產生程式碼之前,先想清楚你要解決什麼問題、成功的標準是什麼。這個步驟絕對不能省。
原則二:小批次迭代。 不要試圖一次產生整個應用程式。把目標拆成小塊,一塊一塊做,每做完一塊就驗證。如果方向錯了,小批次的損失比較小。
原則三:理解你用的東西。 AI 產生的程式碼不是魔法,是可以被理解的。花時間讀懂它,必要時重構或重寫。不懂的程式碼就是債務。
原則四:寫給別人看。 假設明天有一個陌生人要接手你的程式碼,他看得懂嗎?好的命名、清晰的結構、適當的文件,這些都不是浪費時間,而是在減少未來的債務。
原則五:定期還債。 不要讓技術債累積太久。撥出時間做重構、寫測試、補文件。這就像定期還信用卡帳單,避免利息滾雪球。
工程師的價值不會消失,只會轉型
吳恩達在這堂課的開頭說,現在是有史以來最適合動手做東西的時代。AI 程式工具讓每個人都能寫程式,讓工程師能以前所未有的速度產出。
但這不代表工程師會被取代。恰恰相反,在程式碼變得廉價的時代,懂得管理程式碼品質的人反而更珍貴。誰來判斷這段程式碼該不該寫?誰來確保程式碼能被維護?誰來做出技術和商業之間的權衡?這些都需要人類的判斷,而且是有經驗、有深度理解的人類。
Vibe Coding 是一個強大的工具,但工具不會自己做決策。會用工具又懂得管理技術債的人,會在這個時代過得很好。只會用工具卻不理解背後代價的人,可能會製造很多問題,然後困惑為什麼自己的職涯沒有進展。
程式碼很便宜。判斷力很貴。這是 Vibe Coding 時代最重要的認知。
本文整理自 Stanford CS230 2025 年秋季班第九講「Career Advice in AI」。