2022年衡量技術(shù)債務(wù)的八個主要指標
就像信用卡上的賬單一樣,技術(shù)債務(wù)很容易失控。為避免這種情況發(fā)生,企業(yè)需要跟蹤到底積累了多少債務(wù)。
技術(shù)債務(wù)指標旨在幫助人們理解其收集的所有數(shù)據(jù)。現(xiàn)在有許多不同的指標可供選擇,并且有大量用于記錄數(shù)據(jù)的工具。
以下將介紹它們是如何工作的,并幫助企業(yè)為其業(yè)務(wù)選擇正確的指標。
為什么技術(shù)債務(wù)對企業(yè)的業(yè)務(wù)至關(guān)重要
在深入了解細節(jié)之前,有必要先從整體的角度進行了解。
技術(shù)債務(wù)或代碼債務(wù)是指代碼中的任何缺陷,這些缺陷必須隨著業(yè)務(wù)的增長而得到糾正。企業(yè)欠下的技術(shù)債務(wù)越多,那么在后期需要返工的工作就越多。
當然,從頭開始重建關(guān)鍵系統(tǒng)的效率也很低下。除了在原始開發(fā)階段所做的任何投資之外,它還需要耗費更多的時間和費用。
解決技術(shù)債務(wù)問題也可能讓工程師士氣低落,并導(dǎo)致員工保留率下降。最終,用戶可能對企業(yè)的劣質(zhì)產(chǎn)品感到沮喪。
太多的技術(shù)債務(wù)是多少?
太多的技術(shù)債務(wù)聽起來很可怕。然而,技術(shù)債務(wù)并不一定代表是一場災(zāi)難。
就像人們的信用卡一樣,少量的技術(shù)債務(wù)是可以接受的。對于初創(chuàng)公司來說,這實際上是必不可少的一個舉措。企業(yè)有時需要推出最小可行性產(chǎn)品(MVP)或基本產(chǎn)品作為概念證明。這可以幫助企業(yè)籌集資金,用于償還技術(shù)債務(wù)。
但是,如果企業(yè)的債務(wù)堆積如山,那么最終可能會導(dǎo)致工程團隊面臨巨額的賬單。
當前主流的支付處理器Stripe平臺實際上開始量化技術(shù)債務(wù)的成本。研究發(fā)現(xiàn),工程師平均花費33%的時間來處理技術(shù)債務(wù)。在全球范圍內(nèi),這對全球GDP帶來了巨大的影響。
衡量技術(shù)債務(wù)的8個指標
技術(shù)債務(wù)如此普遍的主要原因是許多企業(yè)甚至沒有意識到他們擁有多少技術(shù)債務(wù)。只有當企業(yè)想要添加新功能時,這個問題才會出現(xiàn)。
為確保不會落入同樣的陷阱,最好設(shè)置一些技術(shù)債務(wù)指標。并沒有單一的數(shù)據(jù)點可以讓企業(yè)準確了解其技術(shù)債務(wù)。與其相反,將需要使用一組指標來了解。
那么,應(yīng)該優(yōu)先考慮哪些指標?
(1)新錯誤與已關(guān)閉的錯誤
這里有一個簡單的開始。每個已知的錯誤(Bug)本質(zhì)上都是一小部分技術(shù)債務(wù)。如果企業(yè)想知道其總體債務(wù),那么讓工程師進行統(tǒng)計很重要。
假設(shè)工程師對何時修復(fù)錯誤進行了記錄,可以計算出管理技術(shù)債務(wù)的效率。如果新錯誤的數(shù)量超過已關(guān)閉的錯誤,則需要進行一些更改。
(2)債務(wù)指數(shù)
債務(wù)指數(shù)基于已解決的問題與總體問題數(shù)量的比率,其中優(yōu)先級較高的問題更為重要。
如果企業(yè)的工程團隊定期跟蹤代碼庫問題并確定其優(yōu)先級,企業(yè)可以輕松查看有多少已解決和未解決的問題??梢栽趩栴}跟蹤器中跟蹤它,最簡單的方法是使用Stepsize VSCode或JetBrains編輯器擴展,它們允許直接從編輯器跟蹤代碼庫問題并確定其優(yōu)先級。此外,還可以在儀表板上看到進度,這將激勵團隊解決更多的技術(shù)債務(wù)。
(3)代碼質(zhì)量
復(fù)雜的代碼是技術(shù)債務(wù)不斷增長的明確標志。在某些時候,將不得不清理這個爛攤子。代碼質(zhì)量是量化代碼整體質(zhì)量和復(fù)雜性的幾個指標的集合:
?圈復(fù)雜度
?類耦合
?代碼行
?繼承深度
對于這些單獨的指標中的每一個指標,企業(yè)的目標使其分數(shù)盡可能低。代碼質(zhì)量的整體指標也是如此。
(4)周期時間
與代碼質(zhì)量密切相關(guān)的另一個指標是周期時間。
用技術(shù)術(shù)語來說,這衡量了首次提交到部署過程的時間。但是,當衡量技術(shù)債務(wù)時,需要研究對現(xiàn)有代碼進行更改,以及在不使用快速修復(fù)的情況下解決問題所需的時間。
如果企業(yè)的工程師花費一些時間修復(fù)一些小錯誤,就會知道代碼中潛伏著一些技術(shù)債務(wù)。
(5)代碼流失
代碼流失是一種衡量特定行代碼被刪除、替換或重寫次數(shù)的指標。
當企業(yè)開發(fā)新功能或處理產(chǎn)品的特定部分時,不可避免地會出現(xiàn)一些流失。但是在發(fā)布了一個新版本并修復(fù)了突出的錯誤之后,代碼流失應(yīng)該會開始迅速減少。
如果在較長時間內(nèi)看到代碼的任何區(qū)域出現(xiàn)高流失率,則可能意味著每次迭代都會出現(xiàn)錯誤或快速修復(fù)。
(6)代碼覆蓋率
從某種意義上說,衡量代碼覆蓋率是從相反的方向看同一個問題。
在這種情況下,正在測量運行測試套件時執(zhí)行了多少代碼。這可以讓人們了解編寫代碼的效率——未使用的行越多,代碼編寫得越差。
一個理想的目標數(shù)字是80%。高于這個數(shù)值值得贊揚,而如果數(shù)值較低表示需要完成一些工作。
(7)代碼所有權(quán)
俗話說,“三個和尚沒水喝”。同樣的想法也可以應(yīng)用于軟件工程。如果讓太多人從事相同的任務(wù),則很容易以失敗告終。但企業(yè)并不希望某人擁有整個項目的所有權(quán)。如果他生病或離職,那么項目進度將會受到影響。
出于這個原因,分析誰參與了哪些項目是一個好主意。作為流程的一部分,應(yīng)該了解哪些工程師為每個項目做出了貢獻——這是代碼覆蓋率。
平均數(shù)字將顯示企業(yè)是否有一個高效的任務(wù)分配系統(tǒng),還是一個免費的系統(tǒng)。其理想的情況是由一個完整的團隊負責每個項目。
(8)技術(shù)負債率(TDR)
顧名思義,這個指標是專門為計算未來技術(shù)債務(wù)的總體成本而設(shè)計的。這可以是時間或其他一些資源。
其計算方式比較簡單:(修復(fù)成本÷開發(fā)成本)×100=TDR
在這種情況下,可以根據(jù)上述代碼質(zhì)量指標計算修復(fù)成本。
開發(fā)成本是構(gòu)建產(chǎn)品或功能所需的代碼行數(shù)除以每行平均資源消耗的簡單計算。將兩者放在TDR方程中,最終會得到一個簡單的比率,它告訴需要花費多少時間或多少資源來解決問題。在理想情況下的TDR約為5%。如果達到這個數(shù)字的倍數(shù),那么現(xiàn)在就是企業(yè)開始解決技術(shù)債務(wù)的時候了!
前端的響應(yīng)能力并非嚴格意義上的技術(shù)債務(wù)。但是該指標可以起到警示作用。如果前端加載時間較長,一般是因為代碼過于復(fù)雜或技術(shù)過時。兩者都是技術(shù)債務(wù)的重要形式。
衡量技術(shù)債務(wù)的最佳工具
到現(xiàn)在為止,人們應(yīng)該了解需要衡量什么指標來管理其技術(shù)債務(wù)。剩下的就是決定使用哪些工具來完成任務(wù)。
以下是一些適合大多數(shù)項目的出色選項:
(1)Stepsize
Stepsize專為代碼庫問題跟蹤而設(shè)計,可以幫助企業(yè)在最喜歡的編輯器中識別和突出顯示問題。
Stepsize VSCode或JetBrains編輯器擴展是完全免費的,將幫助跟蹤技術(shù)債務(wù)并衡量進度。由于Stepsize與Jira、Asana、Linear、Azure DevOps等集成,企業(yè)可以采用這一應(yīng)用程序而無需從根本上改變其工作流程。
?直接從編輯器創(chuàng)建和查看代碼問題。
?跟蹤代碼改進并確定優(yōu)先級,例如技術(shù)債務(wù)。
?通過問題跟蹤器集成為其sprint添加關(guān)鍵問題。
(2)SonarQube
SonarQube并不是跟蹤技術(shù)債務(wù)的完整解決方案,而是一個關(guān)注范圍狹窄的工具。
該平臺的主要目的是衡量和提高代碼質(zhì)量。SonarQube通過自動分析突出顯示錯誤和雜亂的代碼,提供可以隨時間跟蹤的數(shù)字和等級。
(3)Teamscale
描述Teamscale的最佳方式是作為產(chǎn)品的系統(tǒng)分析器。該工具評估代碼的質(zhì)量,并通過可視化傳遞信息。
Teamscale可以處理多個指標,并可選擇配置自定義儀表板。該平臺還提供了一些質(zhì)量管理功能,盡管它缺乏Stepsize提供的帶注釋的問題跟蹤和詳細的技術(shù)債務(wù)分析。
(4)Velocity by Code Climate
Velocity by Code Climate被稱為一種“工程智能”平臺,主要旨在幫助管理人員改進工作流程和分配資源。它不是專門為處理技術(shù)債務(wù)而設(shè)計的,但有一些交集。
Velocity從Jira和其他DevOps工具中提取數(shù)據(jù)以提供見解。還可以運行自動代碼分析,并通過內(nèi)聯(lián)問題報告收集信息。
(5)Jira
衡量技術(shù)債務(wù)的一種方法是在選擇的項目管理工作流程中創(chuàng)建和監(jiān)控積壓工作。
如果這是想要采用的方法,那么Jira是一個明顯的選擇。它并不提供上述應(yīng)用程序的任何代碼分析功能,但卻是管理任務(wù)的好平臺。
結(jié)論
正如人們所發(fā)現(xiàn)的那樣,有許多不同的方法來衡量和管理技術(shù)債務(wù)。如果正在尋找多合一的解決方案,那么上述選項之一應(yīng)該在候選名單中。
需要記住的是,所有高增長的軟件開發(fā)商都會承擔一些技術(shù)債務(wù)。重要的是要對其進行衡量,并不斷清理代碼,以使其業(yè)務(wù)保持增長。