2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

解析技术债务

  • 2009-10-27
  • 本文字数:1080 字

    阅读完需:约 4 分钟

术语”技术债务“是由 Ward Cunningham 首次提出,指的是开发团队在设计或架构选型时从短期效应的角度选择了一个易于实现的方案,但从长远来看,这种方案会带来更消极的影响,亦即开发团队所欠的债务。敏捷专家们就技术债务到底是什么以及如何对其进行分类给出了自己的看法。

Martin Fowler 认为下面的定义最能表现技术债务的含义:

技术债务类似于金融债务,它也会产生利息,这里的利息其实就是指由于鲁莽的设计决策导致需要在未来的开发中付出更多努力的后果。我们可以选择继续支付利息,也可以通过重构之前鲁莽的设计来将本金一次付清。虽然一次性付清本金需要代价,但却可以降低未来的利息。

Steve McConnell 将技术债务分为两类

  • 无意的——由于经验的缺乏导致初级开发者编写了质量低劣的代码。
  • 有意的——团队根据当前而非未来进行设计选型,这种方式可能很快就能解决当前的问题,但却很拙劣。

Bob 大叔补充到,有时人们将坏味道也看作是技术债务,但这是错误的,他说:

坏味道并非技术债务。坏味道就是坏味道。技术债务的评价标准是真实的项目约束,这些约束是风险和好处并存的。坏味道的产生永远都不是理性的结果,而是由懒惰和外行导致的,未来也没有机会偿还了。坏味道总是意味着损失。

Bob 大叔说技术债务让人们时刻牢记保持代码的整洁,就好像一个人在背负巨大的抵押债务时需要时刻保持警醒一样。他又说一旦团队决定采纳技术债务,那就意味着保持代码的整洁将变得空前的重要。如果不这样,情况很快就会变得糟糕不堪,偿还这些债务的代价也变得越来越大。

Martin Fowler 认为坏味道也是技术债务,只不过是另一种形式的技术债务而已。他觉得坏味道是一种不计后果(reckless)的债务,相对于根据精确计算而得来的谨慎的(prudent)债务而言,坏味道会让问题变得更加严重。他又加上了故意(deliberate)以及无意(inadvertent)从而将技术债务划分为四个象限。

Martin 通过如下示例将技术债务划分为 4 个象限

  1. 不计后果,故意的——团队没有时间做设计,仅仅给出了一个匆忙做出的方案,缺乏对质量的预见。
  2. 谨慎,故意的——尽管有很多已知的缺陷,但团队必须现在交付产品,同时对此造成的后果心中有数。
  3. 不计后果,无意的——团队压根就不知道基本的设计原则,更不用说引入的坏味道了。
  4. 谨慎,无意的——那些拥有优秀设计师的团队很容易遇到这种情况。他们交付的方案具有商业价值,但在完成方案后才明白什么才是最好的方案。

综上所述,实际的项目中将不可避免地存在技术债务问题,这是无法杜绝的,但问题的关键在于千万不能引入不计后果的债务,因为它会持续不断地产生坏味道,也很难对付。

查看英文原文: Dissecting Technical Debt

2009-10-27 05:434769
用户头像

发布了 88 篇内容, 共 273.2 次阅读, 收获喜欢 9 次。

关注

评论

发布
暂无评论
发现更多内容

什么是客户关系管理系统?全面指南

易成研发中心

以认证VMO实践者身份引领企业敏捷性新时代

ShineScrum

项目管理 敏捷、

1688商品列表API接口全面解析

代码忍者

1688API接口

谷云科技iPaaS产品3月更新速递|API计费、AI助手功能持续升级

谷云科技RestCloud

AI API 数据集成平台 ipaas

万字长文手把手教你实现MicroPython/Python发布第三方库

不在线第一只蜗牛

Python

BI 工具响应慢?可能是 OLAP 层拖了后腿

镜舟科技

OLAP BI StarRocks 湖仓一体 镜舟数据库

Go 语言常见错误——字符串

FunTester

如何进行项目的全生命周期管理

易成研发中心

项目管理

如何高效爬取淘宝天猫商品数据?【官方API与非官方接口全解析】

Geek_9dbf95

批量获取企业数据 开放 API 电商api接口 免费测试 淘宝天猫

Manus哪有那么神秘,Jeecg的AI流程编排都可以实现

JEECG低代码

AIGC JeecgBoot AI流程 Manus

深度测评国产 AI 程序员,在 QwQ 和满血版 DeepSeek 助力下,哪些能力让你眼前一亮?

阿里巴巴云原生

阿里云 AI 云原生

公司共享网盘怎么建立

易成研发中心

企业网盘

伟世通×火山引擎:端云协同让座舱更智能

极客天地

分布式锁—Curator的分布式锁

不在线第一只蜗牛

分布式

如何基于LLM及NL2SQL打造对话式智能BI助手

行云创新

AI智能体 NL2SQL 自动生成SQL

通过Func实现告警多通道发送权重管理

观测云

监控告警

SD-WAN是种怎样的网络技术?可以在哪些行业应用?

Ogcloud

SD-WAN SD-WAN组网 SDWAN SD-WAN厂商 SD-WAN厂家

DApp开发全解析:构建去中心化应用的流程与实践指南

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 公链开发 代币开发

数据分析与AI丨AI Fabric:数据和人工智能架构的未来

Altair RapidMiner

人工智能 AI 数据分析 知识图谱 RapidMiner

人工智能与机器人:打造未来工业的超级工厂

天津汇柏科技有限公司

人工智能 AI

罗永浩的AI新战场

趣解商业

创业 AI 罗永浩

vArmor:云原生容器安全的多场景应用实践

字节跳动开源

容器安全架构 零信任隔离 运行时防护 漏洞缓解实践 轻量级沙箱

未来交易,触手可及:全新交易所开发蓝图

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 公链开发 代币开发

SD-WAN方案可以解决哪些企业网络问题?

Ogcloud

SD-WAN SD-WAN组网 SD-WAN服务商 SD-WAN厂商 SD-WAN厂家

深度测评国产 AI 程序员,在 QwQ 和满血版 DeepSeek 助力下,哪些能力让你眼前一亮?

阿里云云效

阿里云 云原生 通义灵码 AI程序员

NineData 社区版正式上线,支持一键本地化部署!

NineData

DevOps 一键安装 NineData NineData社区版 单机部署

解析技术债务_研发效能_Vikas Hazrati_InfoQ精选文章