我們不可能永遠都在救火 ——Scrum中技術債務“償還”指南
技術債務是指開發人員為了加速軟件開發,在應該采用最佳方案時進行了妥協,改用了短期內能加速軟件開發的方案,以至于未來給自己帶來額外的開發負擔。
軟件工程師 Ward Cunningham首次將技術的復雜比作為負債。 簡單來說,技術債務類似于金融債務,軟件開發就像是去銀行 “貸款”,而技術債務就像是貸款的“利息”。“利息”是需要以未來額外的時間來償還的,所以重構才相當于支付“本金”。
表面上,軟件的應用程序看起來質量很高且狀況很好,但是這些問題卻隱藏在下面。如果沒有很好地管理并設法降低這些技術債務,那么程序編寫和維護的代價最終將會超過它對客戶的價值。
這些技術債務到底是從何而來?為什么某些團隊在 Scrum開發過程中會導致技術債務的積累呢?我們該如何解決技術債務呢?

一、 Scrum環境產生技術債務的原因
為了滿足 Sprint沖刺目標、發布功能和不斷變化的需求,開發人員可能會更加關注短期收益,而忽視長期代碼質量和可維護性。 因此,開發人員會在必要的修改沒有完成時就匆匆發布,權宜之計在不知不覺中就產生技術債務。
技術債務會導致 Scrum團隊產生生產力下降、代碼質量下降、項目風險增加等多種影響。 雖然在下一個迭代中償還技術債務是可行的,但團隊需要關注每個迭代的新需求,不可能永遠都在救火。
那么我們該如何償還技術債務?或者該如何避免產生技術債務呢?
二、技術債務如何還債
在 Scrum環境中,償還技術債務是一個重要的任務,以確保軟件的可持續發展和質量。下面是一些償還技術債務的方法:
- 識別技術債務
首先,團隊需要識別和記錄技術債務。這可以通過代碼審查、靜態代碼分析、系統性能監測等方式來發現潛在的問題和改進點。技術債務可以包括代碼質量問題、未完成的任務、過時的技術選擇等。
- 優先級排序
一旦技術債務被識別,團隊需要對其進行優先級排序。這可以基于影響業務價值、風險和復雜性等因素來確定。團隊可以與利益相關者協商,以確保優先處理對業務和用戶最重要的技術債務。
- 制定計劃
根據優先級排序,團隊可以制定一個技術債務償還計劃。這個計劃應該包括具體的任務、時間估計和分配給團隊成員的工作量。團隊可以將這些任務添加到產品待辦列表中,并在每個迭代中分配一定的時間來處理技術債務。
- 項目結構化
減少技術債務的有效方式之一是通過更好地構建項目來最大程度地減少技術債務。使用項目管理工具(如禪道)可以幫助團隊跟蹤開發狀態,保持進度,并提高團隊的整體協作效率。
- 自動化測試
在償還技術債務的過程中,團隊可以優先考慮編寫自動化測試來確保代碼的正確性和穩定性。自動化測試可以幫助團隊及時發現和解決問題,并減少未來的技術債務積累。
禪道團隊自研了開源的自動化測試框架 ZTF和通用數據生成器ZenData,加上禪道項目管理軟件構成了專業的自動化測試解決方案,可以幫助用戶實現規模化自動化測試,提升測試效率。
- 分配固定重構時間
重構相當于貸款需要償還支付 “本金”,所以 每個 Sprint中分配固定的時間進行重構。這可以是若干小時數、若干故事點數,如一個團隊可以為重構預留30個小時、4個故事點等。在Scrum環境中,持續改進是一個核心原則,只有定期回顧和評估償還技術債務的進展,才能夠一定程度上避免技術債務帶來的消極影響。
通過遵循這些策略, Scrum團隊可以有效地管理和減少技術債務,從而產生更高質量的軟件產品并提高團隊生產力。

三、寫在最后
正如電影《無間道》所說 “出來混,遲早要還的”,技術債是無法避免的,只是產生技術債務多少的問題,但如果不及時處理技術債務就會產生破窗效應。 團隊欠下太多技術債務,必然導致影響后期的代碼質量下降,這也會間接影響到完全沒有關聯的其他用戶故事的研發。
因此,從現在開始把償還技術債務納入待辦事項中,把避免產生技術債務作為工作準則!

浙公網安備 33010602011771號