AI提升效率?一項驚人研究:AI工具讓資深工程師效率慢了35%

在AI開發工具風行全球的今天,一個看似理所當然的假設正在接受挑戰。雖然GitHub Copilot、Cursor等工具的使用者數量呈爆炸性成長,各大科技公司也不斷宣傳AI驚人的程式設計能力,但我們真的確定這些工具讓開發者變得更有效率了嗎?驚人的答案是:AI工具讓資深工程師慢了35%。我們來看看,到底怎麼了?
由於現有的AI能力評估大多依賴「刷題式」的程式競賽基準測試——就像用考試成績評估醫生的實際看診能力一樣,犧牲了真實性且無法捕捉軟體開發中的複雜情境。正基於這樣的擔憂,非營利AI研究組織METR(Model Evaluation & Threat Research,模型評估與威脅研究組織)決定跳出虛擬測試環境,深入真實的開發現場。他們用嚴謹的科學方法——隨機對照試驗、量性與質性資料結合、AI輔助分析——來回答一個看似簡單卻至關重要的問題:在真實的軟體開發工作中,AI工具究竟是讓資深開發者效率變快了,還是變慢了?
史上最真實的AI程式設計研究怎麼做?
這項研究的設計就像一場大型的「雙盲實驗」,但主角是真正的軟體工程師。METR招募了16位平均擁有10年以上經驗的開源開發者,讓他們在自己最熟悉的專案上工作——平均貢獻了5年、提交了1,500次程式碼的大型專案。這些專案都不是玩具級別的小程式,而是真正的「重量級選手」:平均110萬行程式碼,710名貢獻者的複雜生態系統。
研究的巧思在於「隨機分配」:246個真實任務被隨機分為兩組,一組可以使用最先進的AI工具(主要是Cursor IDE搭配Claude 3.5/3.7 Sonnet),另一組則完全不能使用AI。開發者不知道哪個任務會被分到哪組,這樣就避免了「為了證明AI有用而特別挑選適合的任務」的偏見。更重要的是,所有過程都被螢幕錄影記錄下來,總共143小時的真實工作過程,然後用AI技術自動分析每分每秒在做什麼。
令人震驚的結果:AI讓專家變慢了
結果讓所有人都跌破眼鏡,包括參與研究的工程師自己。

圖1:AI 工具在開發任務中預期 vs. 實際影響比較
資料來源:本文作者依據Becker等人的論文內容重新繪製
這張圖清楚展示了一個令人意外的發現:AI工具並沒有讓程式設計師變得更快,反而讓他們每個任務多花了36分鐘。左邊的傳統開發模式就像一個熟練工匠的工作流程,主要時間花在寫程式碼(38%)和查資料(24%)上,整個任務平均只需1.7小時,簡潔高效。右邊的AI輔助模式看起來就複雜多了:雖然寫程式碼的比例降到28%,但出現了四種全新的活動——審查AI建議、提示AI、等待AI回應,光是這些「管理AI」的時間就佔了22分鐘。
最關鍵的變化是測試除錯時間從17分鐘暴增到35分鐘。這就像原本一小時能修好的車,現在需要花更多時間檢查和修正AI幫你「修」的部分。為什麼?因為AI產生的程式碼看起來很聰明,但經常有微妙的錯誤,而且只有44%的AI生成程式碼最終被採用,大量時間浪費在修正錯誤建議上。
為什麼會這樣?四個關鍵原因
研究團隊深入分析了AI反而讓人變慢的原因:
「過度樂觀」問題:資深開發者高估了AI能力,在本來自己三兩下就能解決的任務上也想依賴AI,結果反而多繞了彎路。
「干擾效應」:AI建議打斷了資深開發者原本的思路和工作節奏,就像開車時副駕駛一直給建議反而讓人分心。
「品質控制成本」:雖然AI能快速生成程式碼,但驗證、修正這些程式碼的時間遠超預期,特別是測試除錯環節。
「學習曲線陡峭」:大部分開發者只使用AI工具幾十個小時,還沒掌握有效的使用技巧。
但有趣的是,唯一使用超過50小時的開發者反而獲得了正向加速,而且69%的參與者在研究結束後選擇繼續使用AI工具。這表示問題可能不在工具本身,而在於使用方式和適用場景。
為什麼這個研究不會過時?
你可能會想:AI技術變化這麼快,幾個月前的研究還有意義嗎?答案是肯定的,而且理由很實際。
首先,這項研究最大的貢獻不是告訴我們「某個AI工具不夠好」,而是建立了一套「如何正確測試AI工具」的科學方法——就像我們發明了溫度計,不管是測水溫還是體溫都能用。更重要的是,研究發現的核心問題其實跟技術版本無關:
開發者會高估AI的幫助程度(預期加速24%,實際減速19%)
AI工具會增加管理成本(花時間寫提示、等回應、檢查錯誤)
在專家最熟悉的領域,AI反而可能成為干擾
這些都是人機協作的基本規律,不會因為AI變聰明就消失——就像再好的GPS也不會讓熟悉回家路線的司機開得更快一樣。這個研究教會我們的不是「AI不好用」,而是「什麼時候用、怎麼用才合適」。
真正的啟示:找到AI工具的最佳舞台
這項研究揭露了一個重要事實:更先進的工具並不一定在所有場景下都會帶來更高的效率。當資深開發者在最熟悉的領域使用AI工具時,反而出現了效率下降,這不是因為AI技術有缺陷,而是反映了專家知識與AI建議之間存在「認知摩擦成本」。
關鍵在於理解AI工具的「適用邊界」,而非盲目追求普遍採用。就像專業廚師可能不需要食譜APP一樣,資深開發者在熟悉專案中使用AI,往往需要花費大量時間「管理AI」——審查建議、修正錯誤、重新調整思路——這些隱性成本可能超過AI帶來的直接效益。
真正的突破可能來自將AI工具精準配置到最需要的場景:新手學習、探索未知技術、處理重複性任務,而不是試圖讓AI在每個開發環節都發揮作用。正如69%開發者研究後仍選擇繼續使用AI工具所示,問題不在於工具價值,而在於我們是否找到了正確的使用方式與時機。
這個研究最終告訴我們的是:在AI時代,智慧不在於使用最新的工具,而在於知道什麼時候用、怎麼用、以及什麼時候不用。
封面圖片來源:本文作者以AI生成
參考資料來源:
- Becker, J., Rush, N., Barnes, E., & Rein, D. (2025). Measuring the Impact of Early-2025 AI on Experienced Open-Source Developer Productivity. arXiv preprint arXiv:2507.09089.
- https://arxiv.org/abs/2507.09089
附件:工作步驟流程定義
根據METR論文 Section G.8 螢幕錄影標記指南內容定義出以下活動。
細分活動與統計類別對應表
🔧 主動編程
| 細分活動 | 定義 |
|---|---|
| writing code | 開發者主動編寫程式碼。他們可能也會閱讀一些內容或在周圍導航,但主要是在頁面上編輯/編寫程式碼 |
排除項目:
- writing tests(歸類到測試除錯)
- ai code cleaning(歸類到審查AI輸出)
📖 閱讀/搜尋
| 細分活動 | 定義 |
|---|---|
| reading code | 開發者主要閱讀現有程式碼。他們可能在程式碼庫中導航以尋找特定內容,但實際上他們是在閱讀 |
| reading docs | 開發者閱讀文檔。可能是他們自己程式碼庫的文檔,也可能是其他程式碼庫/工具的文檔。這不是他們正在閱讀的程式碼 |
| reading issue | 開發者閱讀他們計劃為其實施修復的issue |
🧪 測試除錯
| 細分活動 | 定義 |
|---|---|
| writing tests | 使用者編寫測試程式碼,而不是編寫其他類型的程式碼 |
| test running tests | 實際運行測試程式碼,並查看結果 |
| test running ci | 運行或等待在Github/Gitlab上運行的CI檢查 |
| test manually checking | 手動測試某個解決方案,可以通過編寫一些程式碼,或查看某些產出/輸出來完成 |
| replicating bug | 複製錯誤,通常是初始issue中描述的錯誤 |
| running debugger | 如果使用者運行除錯器,在此處註記 |
📝 Git操作
| 細分活動 | 定義 |
|---|---|
| branching | 建立新分支,並添加到它 |
| committing | 添加檔案或編寫提交訊息。有些人在這方面很努力! |
| pr | 建立PR並可能編寫PR訊息 |
| git | 其他雜項git操作(例如查看Git差異,或其他) |
🤖 審查AI輸出
| 細分活動 | 定義 |
|---|---|
| reading generation | 使用者花時間實際審查AI提出的建議 |
| generation taken | 使用者接受AI的建議,並且證明是有用的/他們不會在未來放棄它 |
| generation rejected | 使用者不接受AI的建議,或接受建議然後回復到接受建議之前的狀態 |
| ai code cleaning | 如果使用者接受AI的建議,然後花時間清理該程式碼,我們將其標記為ai code cleaning。這包括更改間距、小型重構等。只要使用者保留程式碼的主體,這就被視為採用生成 |
注意: 也可使用 'ai docs cleaning' 或 'ai commit cleaning' 如果這是使用者正在清理的內容。
✏️ 提示AI
| 細分活動 | 定義 |
|---|---|
| writing prompt | 使用者正在編寫composer提示 |
⏳ 等待AI
| 細分活動 | 定義 |
|---|---|
| waiting on generation | 使用者正在等待AI生成程式碼或回應 |
💤 閒置時間
| 細分活動 | 定義 |
|---|---|
| thinking | 使用者不是AFK,但似乎在思考接下來要做什麼 |
| paused | 使用者似乎已經離開了他們的電腦 |
| unrelated | 使用者正在做一些無關的事情,比如看YouTube影片或換音樂 |
| communicating with teammates | 例如,使用者切換到slack或discord並提問 |
⚠️ 重要說明
分類問題
- 傳統開發模式中的「思考規劃」與AI模式中的「閒置時間」可能存在定義重疊
- 論文未明確說明「與團隊溝通」在傳統模式中的歸類
- 這可能影響兩種模式間的時間分配比較準確性
AI工作流程
完整流程: 編寫提示 → 等待生成 → 審查輸出 → 採用/拒絕 → 清理程式碼
- 總AI相關時間:22分鐘(提示6分+等待6分+審查12分)
- 這解釋了為什麼AI工具會增加overhead而非提升效率
p.s.1 儘管這是 16 位開發者在 5 個月內進行的測試,但我認為這還是有一定價值的。這仍然是一項實際研究,而不是你通常會得到的關於 AI 生產力的推理,而且它只展示了一個特定案例——熟悉代碼庫的經驗豐富的開發者——它沒有評論人們普遍認為 AI 有益的其他方面,例如新技術或新問題、構建新組件、遺忘的語法等等。
p.s. 2 研究作者製作一個澄清表說明以下兩點:1. 我們沒有提供證據表明:人工智慧系統目前不能加快許多或大多數軟體開發人員的速度。) 2. 我們並不聲稱我們的開發人員或儲存庫代表了大多數或多數軟體開發工作。
董定融
2025-08-12
