iT邦幫忙

2025 iThome 鐵人賽

DAY 27
0
Software Development

從 0 到 1:與 AI 協作的 Golang TDD 實戰系列 第 27

Day 27 - 人機協作的藝術:當 AI 的建議與你想法不同時

  • 分享至 

  • xImage
  •  

昨日回顧與今日目標

在 Day 26 的精彩實戰中,我們成功地打通了 ATDD 的“最後一公里”,同時也完成了從「業務價值」到「程式碼實現」再回到「業務價值驗證」的循環。

我們已經在 TDD 和 ATDD 的視角下,與 AI 進行了合作,AI 幫助我們寫 Gherkin、寫測試、寫產品程式碼,似乎是一個無所不能、有求必應的完美夥伴。

但是,真實的開發場景遠比理想化的 Kata 複雜。當我們面對一個龐大的業務系統、一個有著嚴格程式碼規範的團隊時,我們很快就會遇到一個新問題:

AI 的建議,並不總是我們想要的,甚至有時是完全錯誤的。

今天的目標:從 AI 的熱情中抽離出來,深入探討人機協作中更高級的藝術 —— 衝突、思辨與決策。

分析 AI 建議可能「不理想」的幾種常見情況

當 AI 的建議與你的想法或團隊規範衝突時,該如何應對? 重新思考:在 AI 時代,人類開發者的核心價值究竟是什麼?

場景一:當 AI 的方案「能用,但不夠好」

假設我們正在重構一個函式,我們向 AI 請求一個更優雅的版本,AI 也給出了一個可行的方案,所有測試也都通過了。但你作為一個經驗豐富的開發者,總覺得這個方案的「味道」不對。

可能的原因:

  • 缺乏領域知識 (Domain Knowledge): AI 不理解業務,它建議的一個變數命名 item,在領域內的詞,可能用 product 或 asset 更為精準。
  • 設計模式的取捨: AI 可能會傾向於使用一個廣為人知但在此場景下略顯「殺雞用牛刀」的設計模式,而開發者,基於對未來需求擴充性的判斷,可能傾向於一個更簡單、更直接的結構。
  • 可讀性與技巧性的權衡: AI 有時會給出一個非常炫技、利用了語言冷門特性的「一行流」解法,這個解法雖然簡短,但對其他成員來說,可讀性極差。
  • 應對策略:你是最終的決策者。

把 AI 當作一個「方案提供者」,而不是「最終答案」,它的建議是一個很好的起點,而不是必須遵循的聖旨。

用 Prompt 引導修正:不要直接否定它。嘗試用更精準的 Prompt 來引導它走向你想要的方向

詠唱範例:

這個方案可行,但是否可以避免使用 X 設計模式,嘗試用一個更簡單的`if/else`結構來重寫?我們的團隊更注重直接和清晰。

謝謝你的建議。在這個函式中,請將所有名為item的變數重命名為product,因為這更符合我們的 Domain Term。

親自動手,融合修改

最常見的情況是,AI 的方案有 80% 是可取的,勇敢地接受它的建議,然後親自動手修改那剩下的 20%,將你的經驗和判斷融入其中。

場景二:當 AI 的風格不符合「團隊規範」

每個團隊都有自己的程式碼風格規範 (Coding Style Guide),舉幾個例子🌰🌰🌰:

  • 我們縮排用 tab 還是 space?
  • if 語句的括號要不要換行?
  • 錯誤訊息的格式應該是怎樣的?
  • 註解的格式有什麼要求?

AI 在沒有被明確告知的情況下,會使用它所學習到的 「最大公約數」 風格,這很可能與團隊規範不符。

應對策略 1: 為 AI 設定「護欄」和「範例」

  • 利用 formater config: 很多基本的格式化問題(如縮排、行尾空格)可以透過 Prettier、Go Formatter、EditConfig 等工具來自動修正,這是第一道防線。
  • 提供明確的範例 (One-Shot): 這是最有效的方法。當你要求 AI 生成一個新函式時,先在同一個檔案裡給它看一個已經寫好的、完全符合團隊規範的函式。

詠唱範例:

請參考我選取的GetUserProfile函式的程式碼風格(特別是錯誤處理和日誌記錄的方式),為我實現一個新的UpdateUserProfile函式。

應對策略 2: 建立團隊的「Prompt 知識庫」

將那些能夠生成符合團隊規範程式碼的、效果最好的 Prompt 記錄下來,形成團隊的共享知識庫,這樣新人加入時,就能快速學會如何與 AI 高效協作 (作者在下在工作這就是選擇這個 solution)。

在 AI 時代,人類開發者的核心價值是什麼?

當 AI 能夠完成越來越多的任務時,我們是否會被取代? 今天的探討似乎也透露出否定的答案。 AI 正在將我們從「體力勞動」中解放出來,讓我們更專注於那些無法被自動化的、更高層次的價值。

  • 架構設計與長遠規劃: AI 能看到眼前的程式碼,但我們看得到整個系統的未來,決定採用微服務還是單體、選擇哪種資料庫、規劃模組之間的邊界,這些高維度的架構決策是你的核心價值。
  • 理解複雜的業務需求: AI 不理解你的客戶是誰,不理解市場的變化。將模糊的業務需求,轉化為清晰的技術規格和開發步驟(就像我們 TDD 中的 Goal 發想),這是目前我們獨有的能力。
  • 溝通、協作與領導力: 寫程式碼只是軟體開發的一部分,與產品經理溝通、與團隊成員協作、Code Review、培養新人……這些「軟技能」的重要性正在急劇上升。
  • 批判性思維與最終決策權: 如我們今天所探討的,對 AI 的所有建議進行批判性的審視,並在權衡利弊後做出最終決策,這份責任永遠在於人。

今日總結

今天,我們探討了人機協作中至關重要的一環——思辨與決策。

  • 我們學會了如何應對 AI 建議「不理想」或「不符合規範」時的各種情況。
  • 我們掌握了透過引導修正和提供範例來駕馭 AI 的技巧。
  • 我們重新認識到人類開發者不可替代的核心價值。
  • 學會與 AI 共舞,而不是與之對抗。讓它處理繁瑣,讓我們專注於創造。

上一篇
Day 26 - ATDD 實戰 (二):用 TDD 實現「步驟定義」,打通E2E流程
下一篇
Day 28 - AI 開發的倫理、版權與未來展望
系列文
從 0 到 1:與 AI 協作的 Golang TDD 實戰30
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言