在 2025 收官前,看清 Data + AI 的真实走向,点击查看 BUILD 大会精华版 了解详情
写点什么

解析技术债务

  • 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:434792
用户头像

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

关注

评论

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

如何下载YouTube视频/影片(4K画质)

资源君

分享 经验分享 youtube视频下载 工具分享 教程分享

毕业总结

菲尼克斯

架构实战营

2021年FiL最新消息:fil值得投资吗?

区块链 IPFS fil fil矿机 fil行情

Tensorflow for Java + Spark-Scala分布式机器学习计算框架的应用实践

Qunar技术沙龙

机器学习 tensorflow spark 后端 分布式计算

加码物联网安全,熵核科技做终端安全的守护者

熵核科技

CODING 携手 CoDesign:让设计与开发更简单

CODING DevOps

DevOps 设计 开发工具 CoDesign

网络攻防学习笔记 Day86

穿过生命散发芬芳

网络攻防 7月日更

【云厂商】部分知名云服务商名单

行云管家

云计算 公有云 云服务 私有云 云厂商

PancakeSwap交易所做市机器人|交易所画K线机器人

Geek_23f0c3

交易所机器人 pancakeswap 做市机器人

"开放数据,蔚然成林"—浪潮助力多地获得数据开放全国标杆

云计算

模块三作业

king

2021- iOS开发者一份你一定会被问到的面试题(附参考答案)

iOSer

ios 面试 ios开发 iOS 知识体系

时序数据库助力安全监控

greatersecurity

Go 语言的信号式抢占原理

Xargin

后端 Go 语言 系统编程

程序员崩溃的40个瞬间!最后一个是你意想不到的.....

掌握这些核心算法,拿不到10+个offer你来找我,我锤飞你个不争气的

北游学Java

Java 算法

15年前的3篇论文,变成了万亿大生意

百度大脑

人工智能 论文

程序员面试时自称字节跳动工作两年,被发现学历造假,结果蒙了!

粉了!京东商城核心亿级流量并发Java系统架构设计方案手册

Java架构追梦

Java 架构 面试 高并发 京东

关于体验设计的十大重要定律

石云升

读书笔记 用户体验 商业洞察 7月日更 体验设计

一种Vue应用程序错误/异常处理机制

devpoint

Vue 异常处理 vue2 7月日更

spring,springboot,底层原理解析

java小李

学生管理系统详细架构设计文档

张文龙

#架构实战营

Java版人脸检测详解上篇:运行环境的Docker镜像(CentOS+JDK+OpenCV)

编程菌

Java 编程 程序员 后端 java技术宅

NGINX社区线下Meetup第三期成功举办 感受成都开发者们的NGINX热情

爱极客侠

详细架构设计文档

刘丽

Baetyl邀你来战EdgeX中国挑战赛!

百度开发者中心

人工智能 最佳实践 物联网

为什么双赞安卓ARM工控主板应用前景那么好?

双赞工控

程序员小哥月入5万,却被丈母娘拒绝,丈母娘一番话让小哥很尴尬

《面试八股文》之 Redis 16卷

moon聊技术

redis 面试

别人都在谈爱琴海,凭什么程序员就“地中海”网友:还是太优秀!

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