本文主要介紹了如何度量研發效能,以及AI輔助編程是如何影響效能的,進而闡述如何衡量AI輔助編程帶來的收益。
理解度量:有效區分度量指標
為了協助研發團隊更好地理解和度量研發效能,可以將指標分為三類:能力和行為指標、交付效能指標和業務結果指標。該分類有助於從不同維度評估和改進研發工作。
能力和行為指標:反映團隊的實際工作方式和能力,影響交付效率,可以被改進。例如,單元測試覆蓋率、代碼掃描問題數、持續整合頻次、循環複雜度、解耦度(Decoupling Level)等因素。
交付效能指標:反映技術團隊的效率,與業務結果有一定相關性,但不直接影響業務結果。例如,速度、輸送量和品質等因素。
業務結果指標:反映真實的經營情況,直接與公司的收入、規模和成本等相關,可以直接用於績效考核。例如,營收GAAP、毛利、淨利、成本及月活躍使用者等資料均可作為業務結果指標。
什麼是研發效能,如何度量?
研發效能是指軟體研發團隊持續、快速、高品質交付有效價值的能力。具體來說,包括以下幾個方面:
做正確事情的能力:即交付有效價值。
正確地做事的能力:即持久性、速度和品質三個方面,其中品質是對速度的約束條件,持久性是對速度和品質的一貫性要求。
研發效率的度量
有效度量能夠引導正確的改進行為,決定後續的改進行動。團隊的職責範圍決定了採用什麼樣的指標。通常對於技術團隊會從以下幾個方面進行衡量:
效率:速度(流動效率,單個工作項目的流速)和輸送量(資源效率,單位時間內完成的工作項目數量)。
品質:交付品質,即交付物離開團隊之後的品質。
員工幸福感:員工幸福感是一個主觀性調研指標,與持久性有正相關。
AI輔助編程是如何影響研發效能的?
AI輔助編程以AI為技術手段,提升編程效率,反映的編碼的能力和行為。具體可以從以下幾個方面衡量:
編碼效率:開發人員的編碼時間佔比 × AI產生代碼佔比 = 節省的開發時間比例。例如,員工有30%的時間花在編碼上,AI產生了40%的代碼,則可以理解為節省了12%的開發時間。
代碼的缺陷密度:代碼的缺陷密度是一個滯後指標,反映代碼品質,如千行代碼缺陷量。
員工編程體驗的滿意度:員工編程體驗的滿意度是一個主觀指標,反映工具對於員工編程工作的協助,如工具的易用性和實際工具的使用效果。
編碼效率提升
在軟體研發過程中,編碼效率是影響研發效率的重要因素。除編碼效率外,還有許多其他因素對整體研發效率產生影響,主要包括需求品質、協作流程、測試自動化及持續整合/持續傳遞(CI/CD)的工程能力等。這些因素可歸納為兩個方面:個體效率(單點改進)和協作效率(流程改進)。從問題改進的角度來看,可以總結為四個方面:阻塞、返工、負債和失能。
編碼時間佔比與AI產生代碼佔比
開發人員的編碼時間佔比 × AI產生代碼佔比 = 節省的開發時間比例。例如,員工有30%的時間花在編碼上,AI產生了40%的代碼,則節省了12%的開發時間。
資料來源顯示,受訪者花費不到三分之一的時間編寫新代碼或改進現有代碼(32%),35% 的時間用於管理代碼(包括代碼維護 19%、測試 12% 和響應安全問題 4%),另有 23% 的時間用於會議和管理營運任務
綜合開發行為的提升
程式員在開發階段不僅寫代碼,還包括調試、測試、資訊檢索等工作。因此,在每項工作中是否有提升點,以及提升了多少,可以形成如下的計算公式:
這裡設定一個假設基準,即在沒有 AI 工具的情況下,單位工作量的成本是多少。該基準一般在企業內有相關統計資料,如果沒有,則可以參考行業統計資料。此外,還需考慮在每個開發行為中,AI提升效率的同時是否會產生額外成本,例如接受代碼後仍需進行修改,這可能會影響手工基準的準確性。
無論選擇選項一還是選項二,其背後的方法均為:行為 × 效果 = 效率。一般而言,不必過於追求資料的精確性,因為過於精確的統計可能會引導錯誤的行為或增加額外的管理成本。統計意義上的準確性就夠了,其關鍵在於能夠有效回答一個本質問題,並指導相應的改進。
開發效率提升對整體研發效能的影響
根據利特爾法則(Little's Law),速度 = 在製品數量(WIP) / 輸送量,換算過來就是輸送量 = 在製品數量(WIP) / 速度。通過AI方式,可以改變以下幾點:
交付的速度:單個工作項目的速度提升了,輸送量會增加,在途任務(任務的WIP)也會顯著下降。對於待排期需求會是一個很好的消耗,從而減少待排期需求的數量。待排期需求的數量下降,對於整個產品研發的在途需求數(需求WIP)也會下降,進而提升了整體研發速度。
交付的確定性:速度提升,對於軟體研發在時間上的確定性會有著與之相應的提升。
員工的編碼體驗的滿意度
為了評估智能編碼助手對員工編碼體驗的滿意度,可以通過使用者調研的方式擷取反饋,並發現可以改進的地方。問卷設計需要考慮三個因素:使用者畫像、使用者滿意度、使用者使用效率。以下是具體的問卷設計樣本:
使用者畫像
你有多少年的編程經驗?
不足 1 年。
1-3 年。
3-5 年。
5-10 年。
10 年以上。
你在工作中的主要角色?
初級開發人員。
中級開發人員。
進階開發人員。
架構師。
技術經理。
其他(請說明)。
你常用的程式設計語言有哪些?(多選)
Java。
Python。
C++。
JavaScript。
Go。
Ruby。
PHP。
SQL。
XML。
其他(請說明)。
你使用智能編碼助手的頻率如何?
每天多次。
每天一次。
每周幾次。
每月幾次。
很少使用。
使用者滿意度
你對智能編碼助手的總體滿意度如何?(打分 1-5 分,5 分最高)
關於使用智能編碼助手的一些描述,你的看法是?
視覺舒適、操作符合習慣。
沒有被打擾的感覺。
上手成本低、操作流暢。
願意採納產生的建議代碼。
編碼問題能夠得到有效回答。
代碼和問答產生速度快。
較少遇到報錯。
使用者使用效率
通過使用智能編碼助手,你覺得對你的編碼工作效率有多大的提升?(單選)
顯著提升。
有所提升。
沒有變化。
有所下降。
顯著下降。
回想一下,你使用智能編碼助手的情境,下方的描述,你的觀點是什嗎?
工作更加有成就感。
編碼時更加自信。
使用熟悉的語言時,效率更高。
使用不熟悉的語言時,進度更快。
減少編寫重複性代碼。
可以保持編碼心流。
減少搜尋引擎使用。
最後,您可能會得到如下方所示的結論:
AI輔助編程的效果如何衡量?
針對“到底使用採納率合適,還是AI代碼產生佔比合適”的問題,首先需要明確兩者的定義及其計算邏輯:
採納率 | AI代碼產生佔比 | |
定義 | 在單位時間周期內,代碼補全的採納次數與推薦次數的比率。具體計算公式為: 採納率=採納次數/推薦次數 | 在單位時間周期內,開發人員採納的AI產生的程式碼行數與變更程式碼數的比率。具體計算公式為:代碼產生佔比=採納的AI成生的程式碼數/變更程式碼數 |
優點 |
|
|
缺點 |
|
|
同時,可能還會有這樣的疑問,為什麼不使用AI代碼產生的入庫佔比來計算呢?主要原因如下:
版本管理工具無法識別:版本管理工具無法區分代碼是由AI產生的還是人工編寫的。代碼提交的作者是提交人本身,而非AI。
引入複雜度:追求入庫率會導致度量變得異常複雜。追求構建並發到生產環境的數量,引入了更多變數。
因此,建議採用最直觀的 AI 產生佔比來統計編碼行為的效果是一個比較推薦的方式。如果無法獲得 AI 產生佔比,採用採納率也是一種可取的方式,但過分追求統計精確性的意義不大。
衡量AI編碼工具收益的具體方式
為了更好地衡量AI編碼工具對效率的影響,可以從以下幾個方面進行觀測和分析:
工具使用量:
開發人員數量:統計使用AI編碼工具的開發人員數量。
活躍度:統計活躍使用者的數量和活躍頻率。
行為:某些能力使用的頻次,統計特定功能(如代碼補全、單元測試產生、代碼注釋產生等)的使用頻次。
效果:採納或有效產生佔比,統計採納的AI產生程式碼數佔總變更程式碼數的比例。
開發效率提升:通過觀測開發人員在使用 AI 編碼工具前後的編碼效率變化,建立相關性。同時,通過“工具使用的行為 x 效果 ≈ 效率”這個簡單公式,來獲得對於個人開發效率提升的統計。
研發效率的貢獻:研發效率涉及多個方面,包括需求品質、協作流程、測試自動化、CI/CD工程能力等,但開發階段的效率提升對整體研發效率有顯著貢獻。
從系統思考的方式建立因果關係:從整體系統的角度出發,分析各個行為、效率和結果之間的因果關係。找到關鍵的槓桿點,即能夠帶來最大效益的改進點。
度量原則:度量指標需要回答一個本質的問題,即AI編碼工具是否真正提升了開發效率。度量指標應引導正確的改進行動,而非誤導。