不是 GenAI 寫得好,是你沒想清楚什麼叫做好

最近看到 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 可以讓你更快寫出錯的東西,也可以幫你快速找到更好的寫法——差別在於,你自己有沒有想清楚

發表迴響

探索更多來自 轉念學 - 敏捷三叔公的學習之旅 的內容

立即訂閱即可持續閱讀,還能取得所有封存文章。

Continue reading