Seb Rose

Whatever you undertake, act with prudence and consider the consequences. —Anon

「做對」還是「做快」#

無論時程看起來多麼充裕,開發過程中總會面臨壓力。當你發現自己必須在**「做對」(doing it right)「做快」(doing it quick)**之間抉擇時,「先求快、之後再修」的選項往往更具吸引力。你對自己、團隊和客戶承諾會回頭處理,但下一個迭代帶來新問題後,這些承諾往往被遺忘。

這種延遲處理的工作被稱為技術債(technical debt),而且它不是你的朋友。Martin Fowler 在他的技術債分類中,將這種情況稱為刻意的技術債(deliberate technical debt),必須與**無意的技術債(inadvertent technical debt)**區分開來。

技術債如同貸款#

技術債就像貸款——短期內你從中獲益,但在全額償還之前,你必須持續支付利息:

  • 程式碼中的捷徑讓新增功能或重構變得更困難
  • 捷徑是缺陷和脆弱測試案例的溫床
  • 拖得越久,問題越嚴重——最終可能堆積一整層「差不多對」的設計決策
  • 往往直到問題嚴重到必須修復時才會動手,但此時修復的成本和風險已經難以承受

如何管理技術債#

有時你確實必須承擔技術債來趕上截止日期。但關鍵是:承擔後必須追蹤,並儘快償還

具體做法:

  1. 立即記錄:一旦決定妥協,馬上寫一張任務卡或在 issue tracker 中記錄,確保不會被遺忘
  2. 排入下一個迭代:越早償還,成本越低
  3. 追蹤利息:讓技術債的代價可視化,突顯其對專案商業價值的影響,有助於合理排定優先順序

放任技術債不管,利息只會不斷累積。儘早償還技術債,否則就是不審慎的行為。