
譯者 | 朱鋼
審校 | 梁策 孫淑娟
技術債務對企業有巨大負面影響,而對于初創公司和大型企業來說,以下方法可以有效預防和管理技術債務。
技術債務這個概念似乎已司空見慣,幾乎所有工程師都知道它會拖慢開發流程。因此,本文將提供一些實用建議,讓工程團隊無需在管理和解決技術債務方面耗費大量時間。
一、什么是技術債務?
通常,技術債務是指倉促的開發過程中或團隊成員之間缺乏知識共享。但是,在許多情況下技術債務也是正常軟件開發過程的一部分,而且不可避免。
比如,因為想節省時間來發布新的功能,工程師可能不會在基礎架構中實施正確的設計模式。此外,不寫文檔共享知識或具有較低的代碼測試覆蓋率也是相關場景。
簡而言之,代碼質量會因各種方式受到影響,比如知識不共享或過于倉促的開發周期。下文概述了那些最具破壞力、也是人們最希望避免的技術債務類型:
1.基于知識的技術債務
為了理解基于知識的技術債務,先來看一個例子。想象一下,兩名軟件工程師正在開發一項新功能,他們擁有有關此特定功能的所有知識,但這些知識團隊中的其他軟件工程師卻不具備。那么當其他軟件工程師必須處理此功能或必須執行使用此功能的實現時,就會對正確實現新功能所需的知識一無所知。
因此,有關功能和重要代碼庫更改的知識必須積極共享,包括創建文檔、示例、測試以及召開復盤會議。這也是解決技術債務最簡單的方法之一。
2.設計債務
設計債務通常發生在競爭激烈的市場或初創公司,因為對于他們來說上市速度通常是重中之重。
由于要快速交付新功能,功能結構或代碼架構就可能會被忽視。添加新功能也變得越來越困難,而你必須通過團隊來解決。
因此,設計債務也與結構化特征和遵守設計模式密切相關。
3.代碼債務
代碼債務是指所寫代碼質量差且未得到及時修復。例如開發人員希望快速合并代碼,但沒有編寫足夠的測試或未遵守代碼標準。
許多組織使用像帶有代碼檢查的預提交鉤子等自動化工具來驗證代碼質量。如果你未實施這樣的代碼檢查,糟糕的代碼會迅速降低代碼庫的整體質量。
二、預防應對技術債務的三種推薦方法
技術債務日益累積,解決問題的最佳時機永遠是當下。一些實用方法包括:
1.代碼和架構重構
預防和/或解決代碼和設計債務的最直接的解決方案之一是在每個X sprint組織一個重構周。重構周可讓你的團隊解決未處理的錯誤、評估當前架構并為即將推出的產品功能準備架構。
例如,留出一些時間來考慮新功能如何影響代碼庫的架構。
益處:重構周為開發人員在實現一組新功能之前評估和反思代碼提供了所需的喘息空間,它非常適合解決大筆技術債務。
缺點:重構會拖慢開發過程,并且無法讓團隊持續解決技術債務。
2.開始定期的技術債務討論
復盤會議是工程師分享知識的絕佳方式,這些會議甚至可以讓更多的利益相關者參與(如產品所有者),從而對代碼庫和工程師所面臨的問題達成共識。
復盤會議將對順利進展和不順利進展共同討論,這不是一個批評指責的活動,而是一個分享反饋的開放環節。只要專注于改進就是最好的。
益處:人們可以通過復盤會議來分享有關代碼的更新,工程師可以展示他們所取得的成果。通常,工程師可以借此展示他們的代碼庫更改,并解釋這些變化如何影響代碼庫以及他們實現這一點的方式。因此,召開復盤會議是每次編碼沖刺后分享知識的有效途徑。
缺點:利益相關者和管理者需要共同認可這一方式,且工程師也需要時間來組織這些會議。
3.開始在編輯器中跟蹤技術債務
為了代碼庫保持健康,讓工程師盡可能輕松地解決技術問題無疑是最佳方式。在編輯器中跟蹤技術債務,工程師可以:
- 全面了解技術債務
- 查看每個代碼庫問題的上下文
- 減少上下文切換
- 持續解決技術債務
有多種工具可以跟蹤技術債務,但最快速和最簡單的入門方法是使用適用于VSCode或JetBrains的免費Stepsize擴展,它們可與Jira、Linear、Asana和其他項目管理工具集成。
益處:開發人員本就會有大量時間花在編輯器上,因此它也是跟蹤和報告技術問題的最佳途徑。實施技術債務管理流程將對工程師團隊的士氣帶來積極影響,并提升客戶滿意度。
缺點:養成一個新習慣需要團隊成員花時間花精力,且如果沒有技術債務頂尖高手將很難實現。
三、如何檢測不斷增長的技術債務?
針對不同類型的技術債務應主動跟蹤和管理,且不讓技術債務增加是重點問題。
背負大量技術債務會大大拖慢開發速度,并讓問題解決日益困難。換句話說,巨額技術債務代價高昂,并且會損害你的項目上線速度。
跟蹤不同類型的技術債務相關的指標至關重要,以下指標可以跟蹤:
- 總體代碼覆蓋率和每個功能的代碼覆蓋率:百分比下降是技術債務累加的危險信號。
- 許多失敗的CI/CD構建數量:如果失敗的CI/CD構建數量增加,就明顯表示代碼庫不穩定。這點與設計債務和代碼債務都有關。
- 每周或每月出現許多新bug:如果你的團隊每周或每月發現越來越多的bug,則表明你的代碼庫質量下降。因此這點也是檢測技術債務不斷增長的重要指標。
- 特征吞吐量:將新功能推送到主分支需要的天數。這是一個支持指標,可以表明技術債務不斷增長。雖然每個功能的大小不盡相同,但如果你發現這一指標數周內出現下降,就是時候進行干預了。
- 非功能性需求問題:在定義檢測技術債務指標時,你是否考慮過衡量非功能性需求?衡量應用程序性能、用戶體驗(使用難度增加)或兼容性損失等指標是顯示技術債務增加的可靠指標。如果你想使用此指標,可以嘗試對應用程序中的關鍵路徑進行性能監控。
四、不同階段的公司如何以不同的方式處理科技債務?
對于初創公司來說,壓力通常來自要快速發布產品。這些公司可以通過采用自動化代碼質量驗證工具輕松解決技術債務。除此之外,規模較小的團隊之間積極分享知識通常也是避免技術債務的有效策略之一。
然而,大型企業要控制技術債務并非易事。根據2021年技術債務狀況報告,66%的工程師認為,如果團隊有一個管理技術債務的流程,交付速度將提高100%,另有15%的人甚至認為他們的生產力會提高200%。
遺憾的是,組織復盤會議等知識共享會議雖然也是解決方案之一,但大型企業往往需要一個比之更好的解決方案。
為了控制技術債務,大型企業需要使用項目管理工具來了解哪些功能正在開發,以及誰在處理代碼庫的特定領域,這些項目管理工具非常適合避免沖突。
除此之外,企業還應使用自動化代碼質量工具來確保整體代碼庫健康,通常代碼質量工具可以集成到持續集成管道中。
五、結論
不解決技術債務可能會給組織帶來諸多問題,例如總擁有成本較高、上市時間拖慢、因架構設計不良而導致敏捷性降低和安全性差。
因此,必須衡量一些與技術債務相關的指標,同時要確保有一個特定流程,這樣就可以輕松地與團隊成員分享知識并持續解決技術債務問題。
原文鏈接:
https://dzone.com/articles/3-best-tactics-to-prevent-technical-debt-as-an-eng
譯者介紹
朱鋼,51CTO社區編輯,2021年IT影響力專家博主,阿里云專家博主,2019年CSDN博客之星20強,2020年騰訊云+社區優秀作者,11年一線開發經驗,曾參與獵頭服務網站架構設計,企業智能客服以及大型電子政務系統開發,主導某大型央企內部防泄密和電子文檔安全監控系統的建設,目前在北京圖伽健康從事醫療軟件研發工作。






















