最近幾個月,我開始習慣用 AI 寫代碼
說實話,一開始真的很爽。
一個功能,描述一下,AI 很快就給你一版能跑的:
- 接口寫好了
- 數(shù)據(jù)結構補齊了
- 連異常處理都幫你想好了
有時候甚至連你沒想到的細節(jié),它都提前補上。
那一刻你會有一種感覺:
寫代碼這件事,好像突然變得不值錢了。
但用著用著,我慢慢開始感覺不對勁。
不是寫代碼變慢了,而是,項目后面越來越痛苦。
-****01-
**開發(fā)確實更快了 **
以前一個需求,大致節(jié)奏是這樣的:
<pre data-start="378" data-end="417" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;">
需求梳理 ↓ 開發(fā)實現(xiàn) ↓ 聯(lián)調(diào)測試 ↓ 修 bug ↓ 上線
</pre>
雖然慢,但整體是 穩(wěn)步推進。
現(xiàn)在的節(jié)奏變成了:
<pre data-start="450" data-end="493" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;">
想個大概 ↓ AI 一頓生成 ↓ 頁面已經(jīng)跑起來 ↓ 然后開始懷疑人生
</pre>
你會逐漸發(fā)現(xiàn):
- 有些邊界你根本沒想過
- 有些邏輯 看起來對,其實不對
- 改一個地方,另外兩個地方開始出問題
最痛苦的一點是:
你不是在修 bug,你是在重新理解這個系統(tǒng)。
而這個系統(tǒng),
一開始其實不是你完整設計的。
AI 最大的問題不是寫錯,而是“看起來沒錯”
這點我踩過很多次坑。
AI 寫出來的代碼,很少是明顯錯誤的。
大多數(shù)情況是:
- 能跑
- 邏輯順
- 結構甚至還挺優(yōu)雅
但問題在于:
AI 默認你的需求是清晰的。
可現(xiàn)實是:
很多需求其實是模糊的。
比如產(chǎn)品一句話:
“這個功能大概這樣那樣就行?!?/p>
而你腦子里其實也只有一個模糊輪廓。
于是 AI 做了一件非常危險的事:
把一個模糊的想法,變成一個看起來合理的實現(xiàn)。
然后你會產(chǎn)生一種錯覺:
“好像差不多了?!?/p>
但其實:
差得遠。
[圖片上傳失敗...(image-2ae7f1-1774864875622)]
-****02-
**最扎心的一點 **
你開始不完全理解代碼
以前代碼是自己一行一行寫的。
你心里其實是有數(shù)的:
- 為什么這么設計
- 邊界在哪里
- 哪些地方容易出問題
但現(xiàn)在很多時候是:
<pre data-start="1025" data-end="1063" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;">
AI 給一大段代碼 ↓ 你大概掃一眼 ↓ 能跑 ↓ 合進項目
</pre>
短期看效率很高。
但只要后面改動一點,你就會發(fā)現(xiàn):
你對這段代碼的掌控力,其實是弱的。
這種感覺很像什么?
接手別人寫的老項目。
只不過這個“別人”,是 AI。
測試突然變成“救命工具”
以前我對測試的理解是:
保證質(zhì)量。
但現(xiàn)在越來越覺得:
測試其實是在幫你補你沒想清楚的東西。
因為現(xiàn)在很多項目的問題是:
- 需求沒完全想清楚
- AI 不會主動追問需求
- 開發(fā)階段直接就生成完了
那最后誰來兜底?
只能是測試。
但問題又來了:
測試拿到的其實是一個,
邊界不清晰的系統(tǒng)。
于是就會出現(xiàn):
- 測不全
- 測到一半發(fā)現(xiàn)邏輯本身就有問題
- 來回反復修改
[圖片上傳失敗...(image-e1e7bd-1774864875622)]
-****03-
AI Agent 更夸張
如果只是普通業(yè)務代碼,其實還能控制。
但最近在做 AI Agent 產(chǎn)品,感受更明顯。
你會發(fā)現(xiàn):
- 同樣輸入,有時候結果不同
- prompt 改一點,行為就變了
- 工具鏈一復雜,系統(tǒng)開始不可控
傳統(tǒng)測試邏輯是這樣的:
<pre data-start="1567" data-end="1586" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;">
輸入 A → 輸出 B
</pre>
但在 Agent 里變成:
<pre data-start="1603" data-end="1625" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;">
輸入 A → 大概率輸出 B
</pre>
甚至偶爾會:
<pre data-start="1635" data-end="1654" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;">
輸入 A → 輸出 C
</pre>
這時候問題就來了:
你怎么寫測試用例?
傳統(tǒng)軟件開發(fā),其實一直有一套 隱形流程:
- 產(chǎn)品收斂需求
- 開發(fā)做技術取舍
- 測試卡業(yè)務邊界
這些事情不一定寫在文檔里,但一直存在。
但現(xiàn)在很多時候變成:
<pre data-start="1807" data-end="1823" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;">
一個人 + AI
</pre>
問題就在這里:
AI 不會幫你定義邊界。
它只會順著你寫下去。
如果你自己沒有提前想清楚,最后就會變成:
<pre data-start="1886" data-end="1903" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;">
前面飛快 后面返工
</pre>
而 Leader 還會問:
“不是已經(jīng)差不多了嗎?”
你卻根本沒法給出準確時間。
因為系統(tǒng)的 不確定性太大了。
[圖片上傳失敗...(image-e7bda9-1774864875620)]
-****04-****有點反直覺的結論
很多人覺得 AI 會讓開發(fā)更輕松。
但我現(xiàn)在的真實感受是:
輕松的是寫代碼,累的是兜結果。
而且這個“累”是 后移的:
<pre data-start="2064" data-end="2097" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: rgba(255, 255, 255, 0.55); font-size: 17px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: 0.578px; orphans: 2; text-align: justify; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(25, 25, 25); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;">
開發(fā)階段:很爽 測試階段:開始崩 驗收階段:徹底崩
</pre>
就像是:
你把復雜度借到了后面。
我并不覺得 AI 是壞事。
相反,它確實在大幅提升效率。
但有一點越來越明確:
AI 只是讓“寫代碼”變簡單了。
它并沒有讓:
- 做系統(tǒng)
- 做架構
- 做產(chǎn)品
變簡單。
甚至某種程度上:
代碼越容易生成,系統(tǒng)越容易失控。
所以現(xiàn)在我越來越認同一個判斷:
AI Coding 解放的是實現(xiàn)力,但放大的是系統(tǒng)風險。
如果你不想項目最后變成反復返工,有些事情其實繞不過去:
- 需求必須有人收斂
- 邊界必須有人定義
- 測試必須有人兜底
這些事情,目前 AI 還做不了。
所以我暫時不太相信:
“一個人 + AI 就能穩(wěn)定做出一條產(chǎn)品線”。
AI 帶來的,本質(zhì)還是:
提效,而不是替代。
真正聰明的用法也許是:
用 AI 提高人效,然后去做更多新的產(chǎn)品線。
而不是試圖用 AI 替代整個團隊。
如果你最近也在用 AI 寫代碼,有類似的感受,歡迎聊聊。
我也還在摸索:
怎么在 AI 時代,做出更穩(wěn)定的系統(tǒng)。