首页/开发/代码质量与评审速查/Fowler 技术债四象限
技术债与度量63 条

Fowler 技术债四象限

Fowler 用两轴划分债务:有意/无意 × 审慎/鲁莽;「审慎且有意」是主动取舍,需要记录与偿还计划;「鲁莽且有意」是明知故犯;无知型债务来自知识缺口。

技术债四象限是什么

Fowler 用两根轴划分技术债:有意还是无意,审慎还是鲁莽。「审慎且有意」是主动取舍,需要登记与偿还计划;「鲁莽且有意」是明知故犯,风险最高;无意型来自知识缺口,往往要等团队水平提升后才会被识别。分象限的意义在于:不同类型的债要用不同方式处理,不能统一压成一句「以后重构」。

基本信息

提出Martin Fowler(2019 年的 TechnicalDebtQuadrant 一文)
两根轴有意 / 无意 与 审慎 / 鲁莽
处理差异主动取舍需登记;鲁莽型需复盘;无意型需补能力
登记要素债务描述、成因、利息、偿还计划与验收标准

典型使用场景

  • 交付窗口压缩时的临时方案:有意且审慎,必须登记
  • 来不及做设计直接上线:有意但鲁莽,值得复盘而不是夸奖速度
  • 当时不知道有更好做法:无意且审慎,属于学习成本
  • 基础概念缺失导致的错误结构:无意且鲁莽,需要培训
  • 季度回顾排序:按利息高低决定先还哪一笔

四象限与处理方式

象限典型说法处理方式
有意且审慎先交付,回头补上登记台账,排入版本计划并给出验收标准
有意且鲁莽来不及做设计,先上复盘决策过程,补上必要的设计约束
无意且审慎现在才明白应该怎么做写进团队经验,修正相关模块
无意且鲁莽不知道这样有什么问题补培训与规范,必要时加评审检查项

登记模板

登记模板
债务:订单模块直接拼接 SQL,没有参数化
成因:上线窗口压缩(有意 / 审慎)
利息:每次改动都要回归注入风险,SQL 复用困难
偿还:下一季度引入仓储层,预计 3 人日
验收:注入测试通过,订单查询全部走参数绑定
分象限不是为了贴标签:它决定这笔债是登记、复盘还是培训,处理路径不同,优先级也不同。
只承认「有意」却不登记:偿还遥遥无期,利息没人计数,下一次交付只会更慢。

易错点

  • 有意但不登记:偿还遥遥无期,利息无人计数
  • 把能力缺口当成有意债务:掩盖了培训需求,同类问题换个模块再来一次
  • 用技术债笼统指代所有质量问题:讨论落到情绪上,排不出优先级
  • 只登记不偿还:台账变成存档文件,团队对登记本身失去信任

数据来源与参考

  • Martin Fowler · TechnicalDebtQuadrant(2019 博文)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌