不是「AI 協助」。也不是「我改過的 copilot 建議」。我的意思是我訂了一條規則:30 天內,我不手寫應用程式碼。AI 來寫。我的工作是描述、審查,然後批准。

我真的用這種方式上線了一個產品——一個小型 SaaS,包含驗證、Stripe 計費、儀表板,以及公開 API。它能運作,已經在正式環境上線。而在這段過程中,我精準地看見了「AI 現在會寫一切」這個夢想,究竟在哪裡站得住腳,又在哪裡悄悄崩塌。

這不是一篇吹捧文,也不是末日文。這是一份實地報告。

規則

為了讓自己誠實面對這件事:

  1. 我不手寫應用程式邏輯。我下提示詞,AI 來寫。
  2. 可以逐行閱讀、拒絕它,然後再要求重寫——但我不能在編輯器裡自己修。
  3. 設定、密鑰,以及「去後台按按鈕」這些步驟都由我處理(反正 AI 也做不了)。
  4. 如果真的卡住超過一小時,我就記錄成一次「break」,然後自己寫程式碼。

到最後,我一共記錄了 9 次 break。那些 break 才是最有意思的部分。

哪些地方表現得驚人地好

先公平一點,講講 AI 的好話,因為有很多地方真的讓我很意外。

全新專案的骨架幾乎已經解決了。「用 Next.js、Postgres、Drizzle 和驗證建立一個應用程式」——一次就正確完成。專案前 40% 的進度飛快,速度是我過去從沒體驗過的。

樣板碼它幾乎從不出錯。 CRUD API、表單驗證、Zod schema、一個支援排序和分頁的表格元件。這些都是我最討厭寫的東西,而它每次都產出得很完美,完全不用修。

它是超強的橡皮鴨除錯夥伴。「為什麼這個查詢很慢?」它給出的答案比我自己推理還好——它同時找出缺少索引和 N+1 問題。

第一週我真的以為自己會寫出「工程師已經過時」那種文章。然後第二週來了。

哪裡壞掉了——老實說,9 次 break

Break 1–3:它無法把整個系統放進腦中

AI 對當前檔案非常厲害,但對三個資料夾外的那個檔案卻完全看不見。它很開心地又寫了一個 formatCurrency helper,因為它不知道前面已經有一個了。它沒有使用我已經寫好的 middleware,而是直接在程式裡重寫了一次驗證。它還在新模組裡引入了一個細微不同的 User 型別。

這些都不是「bug」——全部都能編譯,全部測試也通過。它們是架構漂移。而架構漂移在某天讓你多花一週之前,是完全看不見的。

AI 優化的是局部。讓整個系統保持一致,仍然是人類的工作。

Break 4–5:它會很有自信地寫出看似合理、其實錯誤的程式

最可怕的失敗不是當機,而是那種看起來對、在正常情況下也跑得動的程式。

它寫的計費 webhook handler,在把 Stripe 事件存進資料庫之前就先回應了確認。測試時完全沒問題。但在正式環境裡,只要資料庫短暫抖一下,就會變成:客戶已付款,卻無法使用,而且也沒有任何紀錄。我會抓到這個問題,只是因為我以前就被這種事傷過。一個初階工程師照著這個 AI 的輸出改,是不可能抓到的。那才是最讓人睡不著的地方。

Break 6:除錯它自己的程式,像是在絕望中無限迴圈

當某個 AI 看不到的問題真的爆掉時,叫它修只會得到「改動」,不是「修正」。它會很有信心地重寫函式,保證 bug 已經消失,然後兩個提示詞後又把同一個問題帶回來。如果我自己不能直接進 debugger、真正理解當下狀態,我們大概會永遠轉下去。這是整個月最大的時間黑洞。

Break 7–8:品味,以及知道何時該說「不要,少一點」

我叫它做一個設定頁面,它給我 14 個使用者根本沒要求的選項。我叫它做錯誤處理,它把所有東西都包進 try/catch,然後把錯誤吃掉。AI 的本能就是加東西。知道該刪什麼、該省什麼——也就是工程裡真正的產品設計部分——它一點都沒有。

Break 9:最後 10% 仍然是 90% 的工作

做到「demo 可用」只花了一週。做到「凌晨 2 點有真實使用者做奇怪操作也能撐住」則花了另外三週。邊界條件、競態條件、空狀態、錯誤狀態、以及「如果他連點兩下會怎樣」的狀態——AI 一概不會處理,除非你知道要問,而知道要問本身就是工作的一部分

不舒服但真實的總結

30 天後,我真正相信的是這些:

AI 沒有取代我。它取代的是我以前交給初階工程師的工作內容 骨架、樣板碼、第一版草稿——這些正是初階工程師學習的工作。而真正沒人算進去的問題是:如果 AI 把所有入門工作都做完了,下一個資深工程師要從哪裡來? 你不可能跳過那 10,000 小時;你只能改變它們被花在哪裡。

每天都最重要的技能,不是寫程式碼,而是:

  • 知道它給我的程式碼哪裡微妙地錯了。
  • 知道什麼該不要做。
  • 把整個系統放在腦中,才能抓到架構漂移。

這些全都是資深工程師的能力。也就是說,AI 沒有抹平階層——它讓階層頂端更有價值,卻把上去的梯子踢掉了。

我實際改了什麼

我沒有停止使用 AI——現在我用它完成 100% 的打字工作,而且以後也會一直用。我只是改了它周圍的防線,而每一條都對應到上面提到的一次 break:

  • 寫程式碼的那個實體,絕對不是審查程式碼的那個實體。讓另一個被提示去反駁這個 diff 的審查者來看,才能抓到作者會直接放行的那種看起來合理、其實錯誤的程式。
  • 沒有一位能看見模型看不到的影響範圍的人,人類就不會按下合併。
  • 「能編譯、測試也通過」只是審查的開始,不是結束——因為模型會寫出符合它自己錯誤心智模型的測試。

那種分工——作者在這裡,懷疑者在那裡,人類握著合併按鈕——就是我能把打字交給機器、卻依然睡得著的全部原因。順帶一提,這也正是我們打造 xenition 的方式:讓代理做事,再讓另一個代理負責拆台,最後由一個人負責決策。把這套流程實際用在一個真實的 30 天建置上,是我唯一信得過的基準。

我還會再這樣做嗎?

如果是原型?毫不猶豫——我再也不會手刻骨架了。

如果是正式產品?我會把 AI 用在 100% 的打字上,但在思考上用 0%。打字從來不是難點,只是看起來像而已。


所以,誠實問一句: 如果 AI 已經在做初階工程師的工作,你的團隊要怎麼培養下一代資深工程師?因為我不認為「他們自己會學會」還算是一個答案了。👇

(如果這篇對你有幫助,請按個 ❤️ 和 🔖;也歡迎在下面分享你最慘的「AI 寫出看起來完全沒問題、其實有大雷」故事。)


原文出處:https://dev.to/infoinlet1/i-let-ai-write-100-of-my-code-for-30-days-heres-what-broke-1aa0


精選技術文章翻譯,幫助開發者持續吸收新知。

共有 0 則留言


精選技術文章翻譯,幫助開發者持續吸收新知。
🏆 本月排行榜
🥇
站長阿川
📝25  
375
🥈
我愛JS
3
🥉
NewsData
2
評分標準:發文×10 + 留言×3 + 獲讚×5 + 點讚×1 + 瀏覽數÷10
本數據每小時更新一次
📢 贊助商廣告 · 我要刊登