如何讓團隊真正接受 AI 編程助手
你的團隊是否開通了AI編程助手卻面臨使用率低的問題?除了常規的知識分享,還有哪些方法能有效提升使用率?本文將分享我們團隊在啟用GitHub Copilot后的實踐經驗與解決方案。
一、為什么要提高AI編程助手的使用率?
在討論“如何提高”之前,我們得先想清楚“為什么要提高”。
我個人認為這是基于一個核心假設:使用AI編程助手可以提升開發效率,且使用的越多,效率提升越顯著。讓我們暫且相信這個假設是成立的,并通過實踐來驗證它。
那么,我們能強制要求團隊成員在所有開發工作中都用AI編程助手生成代碼嗎?在假設未被充分證明之前,這樣做風險極大:萬一它不能提高開發效率怎么辦?萬一它并不是“用的越多,效率提高就越多”又怎么辦?正如我在《如何處理未知問題?》[1]中所討論的,處理這類情況的關鍵在于減少潛在損失,最好的方式是賦予開發人員自主權——讓他們自行決定何時、在何種場景下使用AI編程助手。
在開發人員可以自由決定是否使用AI編程助手的情況下,使用率會自然提升嗎?從我所在的團隊使用GitHub Copilot三個月后的情況看,開發人員主要在以下場景中頻繁使用:
- 代碼理解
- 方案分析
- 函數級代碼重構
- 函數級算法實現
- 單元測試生成
而在這些場景下中則很少用:
- 行級代碼修改
- 能用IDE快捷鍵完成的修改
- Bug修復
- 復雜任務的實現(特別是跨文件或跨模塊的)
如果沒有外部干預,團隊的使用模式會趨于穩定。若要進一步提升開發效率,關鍵在于提高 AI 編程助手在復雜任務中的使用率。那么,如何實現這一目標?接下來我們將展開討論。
二、AI編程助手的使用率模型
AI編程助手類似于自動化編程工具,能夠自動執行開發人員指定的任務。在人機交互領域,關于自動化工具的研究有很多,而《Trust, self-confidence, and operators' adaptation to automation》[2]中的模型尤其適合解釋AI編程助手的使用率:
我們將使用率(Usage Rate)定義為開發人員使用AI編程助手的時間占總開發時間的比例。根據模型,影響使用率的因素包括以下四個:
- 信任(Trust):開發人員對AI編程助手的信任程度,可通過主觀評分(1-10分)衡量。
- 自信(Self Confidence):開發人員對自己能力的信任程度,同樣以1-10分的主觀評分衡量。
- 偏見(b):開發人員對AI編程助手的負面傾向,主要受歷史經驗和環境的影響。 b值越大,使用意愿越低。
- 慣性系數(s):開發人員維持現有工作習慣的傾向強度。s值越大,越難改變當前開發習慣。
需要注意的是,AI編程助手是通用工具,而非單一功能工具,其模型參數(Trust、Self Confidence、b、 s)會因任務類型而異。例如:
- 開發人員相信AI 編程助手可以高效的生成代碼塊,但未必相信它能高效的修復線上Bug。
- 開發人員對自己實現新功能有信心,但不代表他對架構重構有同樣的自信。
- 開發人員在個人項目中敢于大膽嘗試 AI 編程助手,但在商業項目中會因為風險而更加保守。
- 隨著信任程度的提升,代碼塊生成的使用率增長會快于簡單重構(可以用快捷鍵完成的重構)。
1. 如何提高AI編程助手的使用率?
根據模型,我們可以采取以下措施來提高使用率:
(1) 消除偏見( b )
- 增強使用動機:將AI編程助手的使用納入能力評估,鼓勵探索、分享成功案例和最佳實踐,解決團隊痛點。
- 認可使用成本:AI編程助手需要投入時間編寫提示詞、審查代碼和試錯,甚至可能無回報。若不認可這些成本,開發人員會因顧慮而減少使用。
- 加強信息共享:通過共享成功與失敗經驗,總結有效實踐并推廣,以減少偏見,提高使用率。
(2) 校準主觀感受( Trust,Self Confidence )
開發人員對AI編程助手的信任程度(Trust)和自身能力的自信程度(Self Confidence)是影響使用率的主要因素。這兩者均為主觀感受,需要通過提供足夠的信息來校準:
- 展示AI編程助手的實際開發效率。
- 對比開發人員自身與AI編程助手的效率差異。
(3) 提升信任程度( Trust )
在人機交互領域,信任已從人與人之間擴展到人對自動化工具的信任。具體如何提升信任程度,我們將在下一節詳細討論。
三、AI編程助手的信任模型
關于信任,有各種各樣的模型來描述它的組成部分。有的將其描述為能力、誠信、一致性、忠誠和開放性[3]。有的將其描述為可信度、可靠度、親密度和自我導向[4]。還有的將其描述為能力、仁慈和誠信[5]。
這里我采用了更適合自動化工具的信任模型,源自論文《Trust in Automation: Designing for Appropriate Reliance》[6]。該模型將信任的組成部分定義為任務表現(Performance)、任務過程(Process)和設計意圖(Purpose):
其中:
(1) 任務表現( Performance ):AI編程助手當前和歷史的表現情況,包括穩定性、可預測性和能力等特征。它主要在具體的任務和使用場景中進行體現。例如:
- 是否熟悉開發人員所在的領域
- 是否熟悉開發人員的任務上下文
- 是否可以理解開發人員指定的任務
- 是否可以在預期的時間內完成任務
- 是否可以保證任務完成的質量
- 是否可以多次使用時穩定的完成任務
(2) 任務過程( Process ):AI編程助手完成任務的方式,包括可靠性、開放性,一致性和可理解性等特征。它主要在行為方式中進行體現。例如:
- 是否會針對開發人員的任務提出好問題
- 是否可以在實現之前給出詳細計劃
- 是否可以保證實現和計劃描述的一樣
- 是否可以按照開發人員的最佳實踐來完成任務
- 是否遵守開發人員的指令
- 是否尊重開發人員的反饋
- 是否允許開發人員隨時打斷
- 是否有完善的權限控制機制
- 是否可以方便的退出和恢復環境
(3) 設計意圖( Purpose ):AI編程助手的設計意圖和開發人員目標的一致程度。例如:
- 是否存在幻覺
- 是否可以保證數據安全
- 是否可以保證合法合規
- 是否存在惡意操作
- 是否存在故意欺騙
- 是否尊重開發人員的目標
四、AI編程助手的信任提升模型
在討論信任提升模型之前,我們需要先根據SRK行為模型(Skill-Rule-Knowledge Behavioral Model)[7]對AI編程助手的潛在錯誤行為進行分類,從而有針對性地分析影響信任的行為。
1. 錯誤行為的分類[8]
根據SRK行為模型,我們可以將AI編程助手的錯誤行為歸為以下三類:
- 失誤(Skill-based Slips):行為本身是正確的,但在執行的時候出錯了。例如,生成錯誤的依賴安裝命令,讀取命令行輸出失敗等。
- 規則錯誤(Rule-based Mistakes):行為本身是錯誤的,原因是遵循了錯誤的規則。例如,未遵循TDD 原則,導致先寫代碼后寫測試;未拆分邏輯,導致模塊臃腫等。
- 知識錯誤(Knowledge-based Mistakes):行為本身是錯誤的,原因是缺乏相關規則或知識。例如,未學習最新語言特性,生成過時代碼;誤解專業術語,生成錯誤邏輯等。
2. 信任提升模型
為了提升對AI編程助手的信任程度,我們需要采取以下措施:
- 建立賦能團隊:建立一個專門的團隊來推動和協調整個過程。
- 效能可視化:將AI編程助手與開發人員的表現進行可視化,以便校準我們對AI編程助手的信任程度以及我們的自信水平。
- 搭建知識分享平臺:建立一個全面的知識分享平臺,讓每個人都能及時了解公司的AI戰略、成功或失敗的案例研究、AI編程助手的使用方法及其內部工作原理等信息。
基于以上措施,我們將采用試錯法(Trial-and-Error)[9]來不斷迭代改善AI編程助手的行為。在這個過程中,我們要持續進行試驗并收集失敗的案例,識別導致低信任度的行為,并進行相應的改進。
對于識別出的低信任度的行為,我們需要根據信任模型對其進行分析,找出造成低信任度的原因,并針對這些不同層面的問題,采取不同的分析和改進策略:
(1) 設計意圖(Purpose)問題:如模型幻覺度高,數據泄露等。
需要從公司層面進行分析,因為它涉及到 AI 編程助手的采購決策。例如,幻覺度高可能是由于合同中沒有啟用高級模型;數據泄露是因為缺乏完善的數據保護機制。公司應根據分析結果決定是否更新合同或選擇其他 AI 編程助手,以確保其設計意圖與我們的目標一致。這類問題的改進對我們增加對 AI 編程助手的信任程度影響最大。
(2) 任務過程(Process)問題:如沒有按TDD實現需求,缺乏規劃等。
需要在團隊層面結合錯誤行為分類進行分析,因為每個團隊的實踐不同,任務過程也各異。例如,未按 TDD 實現需求可能是 AI 選擇了傳統方式;直接生成代碼而無解釋可能是為了更快完成任務。團隊應根據分析結果為 AI 編程助手補充缺失的技能、規則或知識以優化任務過程。這類問題的改進對我們增加對 AI 編程助手的信任程度有中等影響。
(3) 任務表現(Performance)問題:如無法讀取命令行輸出內容,安裝過時依賴等。
需要在開發人員層面結合錯誤行為分類進行分析,因為每個開發人員面對的任務不同。例如,使用錯誤框架可能是不了解當前項目的技術棧;無法讀取命令行輸出內容可能是命令行的集成有問題;生成巨大類可能是沒有遵守開閉原則。開發人員應根據分析結果為 AI 編程助手補充必要的技能、規則或知識以提高任務表現。這類問題的改進對我們增加對 AI 編程助手的信任程度影響最小。
通過上述層次分明的分析和改進策略,我們可以系統地提升對AI編程助手的信任程度,并使其更好地服務于我們的目標。
五、信任提升模型在GitHub Copilot中的應用
1. 系統指令模板
基于信任提升模型,我們從知識、規則和技能三個維度優化 GitHub Copilot 的行為,設計以下系統指令模板:
Knowledge用于修正知識錯誤,補充缺失的信息。例如,系統架構、代碼規范、技術棧等信息。
Rules用于修正規則錯誤,明確適用的開發規則。例如,問題界定、先制定方案后實現、遵循TDD原則等。
Skills用于減少執行失誤,強化關鍵開發技能。例如,問題界定能力、方案制定能力、TDD實踐能力等。
文末查看完整模板[10]。
2. 團隊協作
該模板由團隊AI負責人維護,確保GitHub Copilot的開發符合團隊最佳實踐,包括問題界定、規劃、TDD、測試等環節。模板上傳至代碼庫后,團隊成員使用GitHub Copilot時將遵循這些實踐,雖不能保證任務全部成功,但能提高成功率。失敗任務需分析原因,補充缺失的知識、規則或技能到模板中,逐步形成代碼庫獨有的系統指令。
AI負責人需熟悉各代碼庫的系統指令,提取常用的知識、規則和技能并更新到模板中。通過這一過程,團隊對 GitHub Copilot的信任程度和使用率將逐步提升。
六、總結
AI編程助手就像是一個新員工,盡管它可能具備強大的能力,但我們仍需要對其進行重新培訓,使其符合我們的價值觀,遵守我們的最佳實踐,并掌握我們所需要的技能。只有在我們充分信任它時,才有可能將重要的任務交給它完成。