最近看到 Simon Willison 的一篇文章〈Here’s how I use LLMs to help me write code〉,裡面分享了他怎麼實際用GenAI(像 GPT 或 Claude)來輔助開發,還有過程中遇到的雷跟學到的教訓。
這篇整理,就是參考這篇文章的重點,來說明:
- 我們到底該怎麼用 GenAI 來寫程式?
- 有哪些地方要特別小心?
- 要怎麼讓這些工具幫你變強,而不是拖你下水?
1. 把 LLM 當作「熱血但愛掰的工讀生」
它寫得快、語氣很有自信、還會幫你補上註解,看起來超厲害,但其實常常在唬爛。有點像實習生沒搞懂需求就寫了一堆東西,但語氣堅定到你會懷疑是不是自己錯了。
✅ 做法:
- 它寫的東西,不管看起來多漂亮,一定要自己測過。
- 遇到奇怪寫法,不要直接 deploy,要懷疑:「這行看起來很合理,但真的有用嗎?」
2. Prompt 不清楚,它就會「自己幻想」你的需求
你問它一行,它給你五行。你只說「寫個 API」,它就幫你加 CORS、驗證、寫測試、還順便連線資料庫… 因為它沒辦法說「我不懂你要什麼」,只會自己腦補。
✅ 做法:
- 越具體越好,像寫 acceptance criteria 一樣。
- 例如:「我有一個 FastAPI 專案,需要一個 POST API,輸入 email,驗證格式後回傳 200。」
- 給它越多上下文,它越不會亂發揮。
3. 有錯的不是你,是它沒跑過
LLM 不會真的執行程式碼,它只是「根據以往的統計」猜出你要的答案。就像背多分的學生,記得答案但沒思考邏輯。
✅ 做法:
- 用有「code interpreter」功能的工具(像 GPT-4 的「程式碼執行器」模式、Claude Code)。
- 讓它自己跑過一遍,有錯你比較看得出來。
4. 它寫的測試,有時只是「看起來像有寫」
它常寫一些超「形式感」的單元測試,例如檢查回傳是不是 200,但沒測到實際邏輯。就像報告有交,但沒內容。
✅ 做法:
- 自己定義要驗證的邏輯點,不要盲信它的 test。
- 請它補「錯誤情境」的測試,例如:「登入錯誤的時候會不會回傳 401?」
5. 一次講完它聽不懂,你要慢慢跟它磨
不是問一次它就會寫出神 code,而是要像 pair programming 一樣,你寫一點,它補一點,你糾正一點,它調整一點。它不是大大,是工讀生,你要 step by step 帶。
✅ 做法:
- 拆小任務,每次請它只做一件事:「這段 function 幫我優化一下命名」,而不是「幫我把這整包 code 改成 DDD 架構」。
- 給 feedback,例如:「你這段回傳值格式錯了,應該是 JSON 而不是字串。」
我們為什麼那麼容易信它?
因為它講話太有自信,而且模仿 Stack Overflow 的風格非常到位,我們會誤以為這就是「專業」。
但語氣專業 ≠ 程式正確。 看起來合理的回答,可能完全沒辦法執行,甚至邏輯上根本說不通。
GenAI 可以讓你更快寫出錯的東西,也可以幫你快速找到更好的寫法——差別在於,你自己有沒有想清楚
發表迴響