cover

「反正先 work 就好。」——恭喜你,你剛借了一筆高利貸,而且沒打算還。

先講結論

技術債跟財務債一樣:有計畫地借是槓桿,無意識地借是災難。不是所有爛 code 都叫技術債——偷懶寫的爛 code 叫品質問題,不叫債。

什麼才算技術債

Ward Cunningham 原意:「不夠完善的 code 發布出去就是借債,後來重構還清就好,危險的是不還,利息會壓垮你。」

關鍵區分:

  • 有意識地趕時間沒寫測試 → 技術債(記下來,排期還)
  • 用不完美架構快速驗證市場 → 策略性技術債(驗證成功立刻還)
  • 不知道有更好做法 → 不是債,是認知盲區(透過 review 和學習預防)
  • 偷懶或缺乏紀律技術債 品質問題(改善工程文化)

利息長什麼樣

你借的「本金」是省下來的開發時間。「利息」是:

  • 改動成本增加:改一個欄位 5 分鐘 → 因為耦合嚴重要改 10 個檔案花 2 小時
  • Bug 率上升:每次改動都怕壞其他東西,因為沒有測試保護
  • 新人上手變慢:「這段 code 為什麼這樣寫?」「不知道,別碰它。」
  • 信心下降:團隊害怕改東西,能繞就繞,惡性循環
  • 機會成本:想加新功能但架構撐不住,被迫先重構

當利息超過本金,你就開始虧了。

什麼時候該借

場景理由前提
MVP 市場驗證快速上線比完美架構重要有計畫驗證後重構
Deadline 壓力晚一天有具體商業損失記錄欠的債並排期
技術探索不確定最好做法,先做一版學到更好做法後願意重寫

不該借的情況:「反正沒人看」(三個月後的你會看)、「先 work 就好」但沒有「之後怎麼辦」的計畫、已經在高利息的 code 上繼續疊加。

什麼時候該還

這些訊號代表利息太高了:

  1. 團隊說「別碰那塊」或「這很危險」
  2. 同樣的 bug 反覆出現——修了 A 壞了 B
  3. 新功能開發速度明顯下降
  4. 新人超過兩週才能做第一個 PR
  5. 你在 workaround 上面疊 workaround

還債的好時機:做新功能時順手改善(Boy Scout Rule)、修 bug 時處理周圍壞味道、Sprint planning 保留 20% 容量持續小額還款、大版本 feature freeze 空檔做結構性重構。

還債策略

  • 持續小額還款:每個 PR 順手改善一點,低風險
  • Strangler Fig:新功能用新架構,舊功能逐步遷移,適合大型重構
  • Feature Flag 漸進替換:新舊邏輯並行確認沒問題再切換
  • 寫測試先行:先補測試再改結構

最常見的錯誤:想一次還清所有債。 大型重構風險極高。

怎麼跟 PM 講

PM 問:「功能不是好好的嗎,為什麼要花時間重構?」

不要說「code 太醜了」(他不在乎)或「架構需要改善」(太抽象)。

要說:「現在加一個功能要 3 天,重構後每個功能只要 1 天」、「這區域每月平均 2 個 bug,重構後接近 0」、「新人上手 2 週 → 重構後 3 天」。

用數字和商業影響說話,不要用技術術語。

延伸閱讀


你的專案裡,哪三塊 code 改動時你最害怕?那就是利息最高的技術債。你有記錄它們嗎?還是都存在腦子裡,等你離職就沒人知道了?