Categories
程式開發

為滴滴、頭條量化研發效能和代碼質量,他們有哪些秘籍? | TGO 專訪


為滴滴、頭條量化研發效能和代碼質量,他們有哪些秘籍?  | TGO 專訪 1

對研發人員進行量化的績效考核,是業界難題。

一種思路是通過提交次數(NOC,Number of Commits)或代碼行數(LOC,Line of Commits),比如GitHub 就是通過提交次數給項目的開發者排名,這種方式操作簡單,但是只能衡量代碼的數量,無法準確衡量代碼價值,而且這個統計方式會被代碼的空行、註釋、個人習慣等乾擾。

另一種思路是使用OKR 等通用管理工具,對項目和業務結果進行考核,結果導向,缺點是考核方式不夠精細、研發過程可見度低、高度依賴團隊成員的主觀判斷。

2018 年,當時任微軟亞洲研究院研究員的任晶磊、正在加州大學伯克利分校軟件工程和應用機器攻讀博士學位的殷和政等人希望通過提供深度代碼分析系統來解決這個問題。 他們在國際級軟件工程會議FSE 上共同發表一篇論文,這樣寫道:

“我們將代碼開發價值分為結構價值和非結構價值兩部分。結構價值反映某段代碼因被其他代碼調用而產生的價值;非結構價值指代碼本身的影響,比如修復bug、增加新功能、維護文檔。”

對於結構性價值,他們以穀歌網頁搜索的PageRank 為靈感,創造了基於圖的算法(graph-based algorithm)DevRank;對於非結構價值,他們基於自然語言處理(NLP)和機器學習(ML)技術,嘗試自動化代碼提交分類,來衡量代碼提交影響。 此外,他們訓練了排序學習(L2R)模型,尋找結構性價值和非結構性價值的比例,來形成對代碼開發價值的整體評分。

分析代碼本身,而非相關過程

同一年,這個年輕的團隊在開源社區中驗證了思碼逸產品原型的評估結果,隨後創立思碼逸Merico

Merico 為客戶提供代碼分析和數據視圖解決方案,給出關於工作量、代碼模塊性、註釋覆蓋度、測試覆蓋度、代碼復用度、團隊魯棒性、成員貢獻、成員技能等數據。

TGO 鯤鵬會會員任晶磊表示:“開發團隊量化績效的痛點在於三點:1. 快,即效率;2. 好,即質量;3. 又快又好的根本,即人才。”

從這個觀點出發,Merico 提供三個視角的報告:工程效率報告、工程質量報告、團隊人才報告。

對於工程效率,Merico 優化了前面論文中提到的量化方法,提出以“開發當量”概念來反映代碼工作量。 開發當量的分析完成了部分編譯過程,將源代碼解析為抽象語法樹,因此可以避免源代碼級別的表層修改,如空行、註釋、無用代碼等噪音。

通過數據視圖呈現,客戶可以看到各個項目的新增開發當量、變化趨勢、個人成員開發當量排行等。

圖片

至於工程質量報告,Merico 使用一些重要指標,包括代碼復用、測試覆蓋度、註釋覆蓋度、函數複雜度、代碼質量。

代碼復用,前面提到屬於代碼的結構價值,大幅降低新的開發工作的邊際投入。 Merico 系統中可以看到開發者代碼被自身復用的情況、以及被團隊或公司其他人復用的情況。

此外,很多公司也很關注代碼的函數複雜度,比如有的公司規定,函數圈複雜度超過10,一定要做review,之後有必要的話一定要做重構和優化,否則一旦出現問題,調整修改的難度很大花費的成本非常高。

代碼質量方面,目前,思碼逸系統按照阻塞、嚴重、主要、次要、提示進行分層,不過,客戶也可以自定義規則。 任晶磊透露,真實開發中,很多公司會對常出現的問題做分門別類的歸類,將自身規則導入系統,從而個性化跟踪自身團隊的關鍵問題,讓代碼問題追踪真正具有使用價值。

圖片

開發團隊效率問題表面上看是關於代碼新增的效率與質量,核心是人的效率。

Merico 的團隊人才報告提供團隊成員的開發價值榜、開發當量榜。 此外,就像MBTI 的員工能力模型,Merico 也會給人才打上標籤,展示人員的各項貢獻與能力,比如“測試”、“遠程過程調用”、“自然語言處理”、“第三方接口”,形成員工技能圖譜。 任晶磊解釋說,比如要籌劃一個新項目,領導者可以看到團隊中擅長數據分析的人有多少、擅長科學計算的人有多少,對已有人力資源心中有數。

圖片

下一步,Merico 計劃讓產品設計更加深入開發團隊的日常使用場景,技術層面不斷精進並涵蓋更多指標,讓分析結果更準確。 此外,Merico 也將在年內推出服務開源社區的產品。

從邊緣到核心,研發效能五個維度指標

除了產品,Merico 還提供解決方案。 這家創業公司有專門的諮詢團隊,針對客戶開發團隊績效管理中出現的問題,提供生產管理流程優化的方式方法,幫助發揮每個程序員的優勢和特點。

任晶磊告訴TGO 鯤鵬會,其客戶有兩個典型特徵,“1. 研發團隊達到一定規模,一般在五十人或以上,管理半徑要覆蓋到所有人已經有些困難,需要藉助工具來提高透明度、輔助研發決策;2. 對於研發提效有需求、有認知,希望提升研發管理的精細化水平。”

據36 氪報導,Merico 在與大客戶合作時,主要提供底層的代碼分析服務,並輸出數據以滿足大客戶內部自建管理工具及流程的需要;而針對百人級別的研發團隊,思碼逸則提供從代碼分析、數據視圖到優化建議的完整效能提升方案。 目前其產品形態以私有部署為主,近期也上線了面向中小型開發團隊的SaaS 產品,二者都是按照活躍開發者人數每年收取license 費用。

產品上線後,Merico 已經服務了字節跳動、滴滴、長亭科技、知道創宇等客戶。

隨著全球數字化進程加速,軟件行業蓬勃發展,開發者人數不斷攀升。 根據Evans Data Group 2019 年報告,全球開發者規模達2390 萬,預計5 年內將增長至2870 萬。

任晶磊認為,研發效能的指標有五個維度:討論統計、issue 統計、代碼統計、AST(抽象語法樹)分析、業務分析。

前兩層反映的是開發者的活躍度,具體包括事務積壓、交付週期、吞吐量等指標,這類產品一般接入了JIRA 等事務追踪軟件的數據,著眼於開發活動中的動作。 也有一些產品做的是第三層,著眼於開發活動的成果,會接入代碼庫去看代碼提交中做了什麼,比如提交了多少行代碼、是新代碼還是舊代碼的重構、是否反复修改代碼。

“我們做的是第四層,更深入地去理解代碼庫中某次代碼提交的含義,比如增加了多少邏輯複雜度、對整體軟件工程質量有什麼影響、反映出開發者怎樣的技能等等。通過這種自下而上的分析,我們可以給出開發效率、軟件工程質量、組織與人才發展等三個視角的數據呈現。”

Merico 實行遠程辦公, 近40 位員工分佈在中國、美國、巴西、法國、加拿大、印度的15 座城市。 當然,這家公司也使用Merico 工具管理團隊的開發效率。

今年6 月,Merico 宣布完成數千萬元Pre-A 輪融資,由GGV 紀源資本領投、聯想之星及前輪投資者Polychain Capital 跟投。 獲得融資後,Merico 將進行產品開發、服務優化和團隊擴張,更好幫助客戶以數據驅動管理軟件人才。