我們不可能永遠都在救火 ——Scrum中技術債務“償還”指南

敏捷開發社群發表於2023-12-21

技術債務是指開發人員為了加速軟體開發,在應該採用 方案時進行了妥協,改用了短期內能加速軟體開發的方案,以至於未來給自己帶來額外的開發負擔。


軟體工程師   Ward Cunningham   將技術的複雜比作為負債。   簡單來說,技術債務類似於金融債務,軟體開發就像是去銀行   “貸款”,而技術債務就像是貸款的“利息”。“利息”是需要以未來額外的時間來償還的,所以重構才相當於支付“本金”。


表面上,軟體的應用程式看起來質量很高且狀況很好,但是這些問題卻隱藏在下面。如果沒有很好地管理並設法降低這些技術債務,那麼程式編寫和維護的代價最終將會超過它對客戶的價值。


這些技術債務到底是從何而來?為什麼某些團隊在  Scrum開發過程中會導致技術債務的積累呢?我們該如何解決技術債務呢?


一、  Scrum環境產生技術債務的原因

為了滿足  Sprint衝刺目標、釋出功能和不斷變化的需求,開發人員可能會更加關注短期收益,而忽視長期程式碼質量和可維護性。  因此,開發人員會在必要的修改沒有完成時就匆匆釋出,權宜之計在不知不覺中就產生技術債務。


技術債務會導致  Scrum團隊產生生產力下降、程式碼質量下降、專案風險增加等多種影響。  雖然在下一個迭代中償還技術債務是可行的,但團隊需要關注每個迭代的新需求,不可能永遠都在救火。


那麼我們該如何償還技術債務?或者該如何避免產生技術債務呢?


二、技術債務如何還債

  Scrum環境中,償還技術債務是一個重要的任務,以確保軟體的可持續發展和質量。下面是一些償還技術債務的方法:


  • 識別技術債務

首先,團隊需要識別和記錄技術債務。這可以透過程式碼審查、靜態程式碼分析、系統效能監測等方式來發現潛在的問題和改進點。技術債務可以包括程式碼質量問題、未完成的任務、過時的技術選擇等。

  • 優先順序排序

一旦技術債務被識別,團隊需要對其進行優先順序排序。這可以基於影響業務價值、風險和複雜性等因素來確定。團隊可以與利益相關者協商,以確保優先處理對業務和使用者最重要的技術債務。

  • 制定計劃

根據優先順序排序,團隊可以制定一個技術債務償還計劃。這個計劃應該包括具體的任務、時間估計和分配給團隊成員的工作量。團隊可以將這些任務新增到產品待辦列表中,並在每個迭代中分配一定的時間來處理技術債務。

  • 專案結構化

減少技術債務的有效方式之一是透過更好地構建專案來 減少技術債務。使用專案管理工具(如禪道)可以幫助團隊跟蹤開發狀態,保持進度,並提高團隊的整體協作效率。

  • 自動化測試

在償還技術債務的過程中,團隊可以優先考慮編寫自動化測試來確保程式碼的正確性和穩定性。自動化測試可以幫助團隊及時發現和解決問題,並減少未來的技術債務積累。


禪道團隊自研了開源的自動化測試框架  ZTF和通用資料生成器ZenData,加上禪道專案管理軟體構成了專業的自動化測試解決方案,可以幫助使用者實現規模化自動化測試,提升測試效率。

  • 分配固定重構時間

重構相當於貸款需要償還支付  “本金”,所以  每個  Sprint中分配固定的時間進行重構。這可以是若干小時數、若干故事點數,如一個團隊可以為重構預留30個小時、4個故事點等。在Scrum環境中,持續改進是一個核心原則,只有定期回顧和評估償還技術債務的進展,才能夠一定程度上避免技術債務帶來的消極影響。


透過遵循這些策略,  Scrum團隊可以有效地管理和減少技術債務,從而產生更高質量的軟體產品並提高團隊生產力。

三、寫在最後

正如電影《無間道》所說  “出來混,遲早要還的”,技術債是無法避免的,只是產生技術債務多少的問題,但如果不及時處理技術債務就會產生破窗效應。  團隊欠下太多技術債務,必然導致影響後期的程式碼質量下降,這也會間接影響到完全沒有關聯的其他使用者故事的研發。


因此,從現在開始把償還技術債務納入待辦事項中,把避免產生技術債務作為工作準則!



來自 “ ITPUB部落格 ” ,連結:https://blog.itpub.net/69982050/viewspace-3000916/,如需轉載,請註明出處,否則將追究法律責任。

相關文章