金錢和項目的關係

很多敏捷團隊都能認識到技術債務相關的罪狀。就跟財務上的負債一樣,技術債務也會產生利息。要支付這些利息,就要付出額外努力維護和改進正在“腐化”或基礎並不牢固的軟件。諸多敏捷人士推薦儘早償還技術債務。然而,大多數敏捷團隊無法成功以金錢的方式計算技術債務,因此無法得到有價值的深入理解和思考。

一旦有了與技術債務直接相關的金錢數目,關於軟件的多種複雜而麻煩的問題就能得以回答。Israel Gat提出:除非對於技術債務有一個量化的賬單,否則團隊都會忽略其重要性,軟件會因此而逐漸腐化,無法補救

當債務達到一定程度之後,就沒有什麼好的補救方法了。代碼質量非常糟糕,這時要修復任何部分都會造成傷害,不管修復哪裏似乎都會破壞其他某些部分代碼。

他還提到了以金錢方式計算技術債務的需要,並使用收支平衡表展示出其作爲債務的一面

在Israel看來,以金錢方式計算技術債務有如下好處:

  1. 能夠告訴團隊何時停止開發,開始重構——當技術債務達到一定程度後(比如每行代碼25美分),就要暫停開發新功能。團隊進入重構過程,除非債務得以償還,否則不加入任何功能。
  2. 軟件的客戶對於軟件的風險得以瞭解——Israel認爲這符合敏捷宣言中的一項:“客戶協作勝過合同談判”。
  3. 風險投資者能夠以此做出投資決策——VC們可以以此判斷向某項軟件產品中投入資金是否理智。
  4. 有助於判斷軟件的支付能力——軟件在其生命週期的演化過程中,與之伴隨有開發和維護活動,以金錢方式計算技術債務能夠有助於回答與這些活動相關的支付能力問題。
  5. 有助於人們在重構和重寫這二者之間做出選擇——將技術債務與其他重要因素聯合起來,能幫助人們判斷是否要重新開始。
  6. 有助於定義限額——一旦金錢上的限額定義出來之後,就能幫助CxO等利益干係人做出成熟的決策。

那麼,有哪些有效的方式可以用來將技術債務以金錢衡量呢?

使用Sonar中的技術債務插件是一種方式。在Sonar的實時站點上,已經有了對於多個項目的技術債務分析。要計算成本,首先要使用下面的方式找出債務:

  • 債務(以人天計算)={修復重複部分的成本+修復違規的成本+爲公共API做註釋的成本+修復未發現的複雜性的成本+帶入低於閾值複雜性的成本+在包的層面上切斷生命週期的成本}

在上面各種違規情況中,對於每個小時的成本有個默認值。比如:

  • 修復重複部分的成本={修復1個部分的成本 * 重複的部分}

現在,比如默認的“修復重複部分的成本”爲2個小時。假設每個開發人員每天的成本是500美元,一天有8個小時,那麼修復一個重複部分就要花費125美元。與之類似,就可以做出針對各種違規情況的金錢分析,並可以計算出最終的技術債務總和。

因此,以金錢方式計算技術債務能夠讓人們深入理解與軟件相關的潛在成本。對於所有希望監控技術債務成本並將其保持在一定限額內的敏捷團隊來說,這很關鍵。這麼做有助於創造一個易於維護和改進的軟件產品,同時讓VC有信心投資,讓客戶有信心買單。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章