建議將技術債務為科技財富 - increment

banq發表於2021-11-19

技術債務是由於在構建功能時採用了太多的技術捷徑。

產品團隊建立了一個雄心勃勃的路線圖,幾乎沒有犯錯的空間,工程師在已經過時的軟體基礎設施上進行不守規則的破解以實現這些雄心壯志。債務像一個孩子踮起腳尖走進廚房,從食品儲藏室偷走餅乾,導致系統效率逐漸下降。

當快速而骯髒的破解黑客習慣成為工程組織的預設模式時,可能很難提倡以“正確”的方式做事,投入時間和精力來制定詳細的需求,構建強大的解決方案,或自動化手動任務。

償還技術債務通常被視為軟體工程不那麼迷人、不那麼令人興奮的方面。遷移並不好玩,用新的依賴替換舊的依賴也不好玩。新架構不會在一夜之間神奇地在白板上畫出自己的圖。但是,如果長時間未經審查,技術債務可能會從被忽視的麻煩變成災難性的失敗。相比之下,如果主動解決技術債務,則是在我們的系統中建立彈性和穩健性的機會。

這就是為什麼我建議我們將科技債務重新命名為科技財富。

 

引進科技財富

騰出時間來償還技術債務需要領導層的支援。獲得這種支援很難,特別是因為終端使用者可能不會直接感受到許多技術債務投資的影響,例如改進的工具或自動化流程。事實上,許多開發團隊普遍存在一種誤解,認為由於技術債務不會影響使用者,因此不值得優先考慮。但實際上,解決技術債務使我們能夠在以後投入更多時間進行功能開發。預先處理系統的弱點意味著工程師在未來將花更少的時間來處理義大利麵條式程式碼或解決被忽視的問題。 

通過將科技債務定義為科技財富,我們可以最大限度地減少與此類債務相關的負面含義,並消除這些錯誤印象。這種品牌重塑可以改變領導層對這些重要的幕後投資的看法,增加他們購買工作的可能性。在商業中,積累財富是一件要儘快完成的事情,要非常小心和專注。同樣,為使您的系統更強大、更高效而開展的基礎工作應該被視為值得進行前期投資。 

 

定義科技財富

我們從花時間完成特定任務中獲得什麼價值?我們從這項工作中獲得了什麼收益?

根據定義,財富是大量有價值的財產、商品或資源。對於一個工程團隊來說,積累財富可能意味著提高生產力、工程師的幸福感、系統穩定性等等。當我們以這種方式理解我們的技術開銷時,我們就可以專注於傳達價值:我們從花時間完成特定任務或計劃中獲得什麼價值?我們通過這項工作獲得了哪些收益或資源?

積累技術財富意味著從我們正在建立的軟體以及我們開發和維護它的努力中獲得更多價值。在將科技債務重新定義為科技財富時,我們可以問自己以下問題,以闡明我們可用的價值放大機會:

  • 我們可以採取哪些步驟來幫助我們的團隊更快、更有效地行動?
  • 我們可以做些什麼來提高系統的可擴充套件性或穩定性?
  • 哪些工作可以改善工程師維護這些系統的經驗?

讓我們以部署自動化為例。通過將工程時間用於建立自動化生產部署的基礎設施,您可以獲得技術財富,包括提高生產速度(因為使用者將更快地獲得新功能或錯誤修復)、更大的開發人員幸福感(因為工程師將花費更少的時間手動將釋出部署到生產中,並且可以專注於更具吸引力的工作,例如功能開發)並降低風險(通過從部署過程中消除人為錯誤)。這種高價值投資可以改善您的使用者、開發人員和系統本身的財富。

 

規劃科技財富

一旦團隊為新功能工作分配了工程能力,通常就沒有多少時間來積累技術財富了。假設你不能只是暫停功能工作——儘管我很想看到一個工程團隊嘗試!——以下策略可以幫助團隊開始將技術財富納入規劃過程。 

  • 在每個計劃週期內分配時間  

您的工程團隊是否使用花哨的公式來確定在每個規劃週期中您有多少開發工作容量?如果是這樣,請考慮分配一小部分但有意義的能力來建立技術財富。 

適當的時間將取決於您團隊的需要。例如,如果您想增加整合或單元測試覆蓋率,將 80% 的工程時間分配給產品開發,其餘 20% 用於構建技術財富可能就足夠了。如果您的團隊需要改進架構或系統以滿足新的需求,您可能需要將 60% 的時間用於積累技術財富,將 40% 的時間用於產品開發。

將技術財富納入每個規劃週期的優勢在於,它成為您團隊常規節奏的一部分,從而使實踐正常化。您的團隊甚至可以開始將成功指標歸因於您每個週期積累的財富。例如,您可能會跟蹤在投資構建自動化測試覆蓋率之前和之後引入的錯誤數量。

如果您不使用花哨的公式來確定工程能力,請從簡單開始。如果你的團隊足夠大——比如說,至少有四名工程師——一個人可以在每個週期專注於創造技術財富。考慮建立輪換制度,這樣每個工程師都有機會在技術財富專案上工作,同時也可以構建更引人注目的東西。

無論您採用何種方法,請務必定義並記錄您的技術財富任務產生的價值。這將有助於維持對這些投資的支援。

  • 奉獻一個季度的最後幾個週期

如果您無法在每個 sprint、迭代或計劃週期中投入固定的時間,您可能希望在每個季度中劃出特定的時間段。對於大多數團隊來說,季度末是這樣做的合適時機;一旦您完成了功能交付或正在對功能進行 A/B 測試,您可能會有更多的工程人員解放出來。至於該期限應該多長,這取決於您要積累的財富。如果您不確定從哪裡開始,請嘗試幾個為期兩週的迭代,這應該足以開始填補您的技術金庫。

與我列出的第一條路徑不同,這個季度策略將需要您團隊 100% 的能力,儘管是暫時的。我發現它在投資需要多個工程師的時間和精力的情況下特別有用。這種方法鼓勵專注並減少上下文切換,但它需要意志力和一些堅定的邊界設定,以確保業務或產品利益相關者不會滑入工程師的 DM,希望最後一次“快速更改”。此策略的另一個好處是:您可以利用時間整理本季度早些時候實施的任何黑客或變通方法,當時團隊正在努力實現產品目標。 

如果您按季度積累技術財富,您可能會發現為您的團隊保留積壓的技術財富專案以供諮詢很有用。例如,您可以建立一個 Jira 專案或 Trello 看板,專門用於跟蹤您計劃建立的財富。這將有助於保持您即將到來的計劃清晰並實現您的技術財富目標。

 

通過為科技財富做規劃,你實際上是在減少科技債務。

banq:可組合性是科技財富的複利!

建議將技術債務為科技財富 - increment

相關文章