AI 幫我寫 code,真的有讓我變強嗎?
我在 HN 看到一篇吵很兇的文,550 points、538 comments,主題大概是 AI coding 會不會讓新手的 coding expertise 崩掉。老實說我一開始想說也太焦慮了吧,AI 明明就很好用,救命我作業 deadline 前沒有它真的會死 XD
但我最近做一個課堂 side project,有點被打臉。
我做的是一個很陽春的任務看板,React + Firebase,功能只是新增 task、切換狀態、照 deadline 排序。我一開始直接叫 AI 幫我生 useEffect、Firestore query、排序邏輯,30 分鐘就跑起來,超爽。結果隔天 demo 前才發現 API call 爆炸,開一次頁面居然打了 47 次 read。
最慘的是,我看得懂畫面長怎樣,但看不懂 bug 為什麼發生。AI 說「可能是 dependency array 問題」,我才回去看,原來我把 tasks 放進 useEffect dependency,裡面又 setTasks,所以每次資料更新又重跑一次。這個 bug 如果是我自己寫出來的,我大概會痛一下但記住;可是因為整段都是 AI 生的,我只是像在拆別人的作業。
後來我改了一個流程,感覺差很多:
- 先自己用 5 句話拆需求,寫出資料從哪裡來、狀態存在哪、哪個元件負責 render
- 自己先寫最笨版本,就算很醜也沒關係
- 問 AI:「你先不要給完整 code,問我 3 個 debug 問題」
- 真的卡住再讓它補一小段,然後我必須逐行解釋那段在幹嘛
聽起來很麻煩,但很神奇,我第二次修排序 bug 時就沒有那麼慌。deadline 是 string,我原本直接 a.deadline - b.deadline,結果排序當然壞掉。這次我至少知道要先確認資料型別,再改成 new Date(a.deadline).getTime()。大三了還在被 date 搞,QQ
那篇文章提到 cognitive debt,我現在有點懂。AI 省掉的不是時間而已,它也可能省掉「我本來該撞牆的地方」。撞牆很煩,可是沒有撞過,之後真的出錯就完全沒有手感。
我覺得 AI 對新手不是不能用,反而很適合當互動文件或 tutor。像我問它「useEffect 為什麼會 loop」比翻文件快很多。但如果每次都只收成品,最後會變成 repo 看起來很厲害,本人像路過的。
現在我的自檢是三題:沒有 AI 我能不能寫出醜版?我能不能跟同學解釋生成的 code?我有沒有至少查一次官方文件或 StackOverflow?三題有兩題答不出來,我就先暫停複製貼上。
不知道大家怎麼拿捏欸。AI coding 到底是在幫新手練等,還是在幫我們跳過練等?
作者:小萱