通義靈碼實踐教程——效能實踐

通义灵码發表於2024-10-21

點選此處,立即下載通義靈碼!https://tongyi.aliyun.com/lingma/

應該如何衡量AI輔助程式設計帶來的收益

本文主要介紹瞭如何度量研發效能,以及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 編碼工具前後的編碼效率變化,建立相關性。同時,透過“工具使用的行為 x 效果 ≈ 效率”這個簡單公式,來獲得對於個人開發效率提升的統計。

研發效率的貢獻:研發效率涉及多個方面,包括需求質量、協作流程、測試自動化、CI/CD工程能力等,但開發階段的效率提升對整體研發效率有顯著貢獻。

從系統思考的方式建立因果關係:從整體系統的角度出發,分析各個行為、效率和結果之間的因果關係。找到關鍵的槓桿點,即能夠帶來最大效益的改進點。

度量原則:度量指標需要回答一個本質的問題,即AI編碼工具是否真正提升了開發效率。度量指標應引導正確的改進行動,而非誤導。

相關文章