写点什么

解析技术债务

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

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

关注

评论

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

DevOps进阶(一):DevOps 软件开发工艺解读

No Silver Bullet

DevOps 2月月更

会声会影如何制作视频影片-影片制作过程三步骤

懒得勤快

浪潮云说丨上云迁移实践

云计算,

Kafka消息存储机制

编程江湖

抓到Netty一个Bug,顺带来透彻地聊一下Netty是如何高效接收网络连接的

bin的技术小屋

网络编程 中间件 netty 死磕 NIO Java【

从小样本学习出发,奔向星辰大海

百度开发者中心

百度云 百度 飞桨

AI+Science:基于飞桨的AlphaFold2,带你入门蛋白质结构预测

百度开发者中心

百度AI

资讯|WebRTC M97 更新

网易云信

WebRTC

IAST 最佳实践 | 利用洞态做开源组件的安全治理

火线安全

百度AICA再添57位“首席AI架构师”,人工智能与产业场景结合愈发深入

百度开发者中心

飞桨 百度AI

移动办公时代,政企为何首选私有化的即时通讯平台?

BeeWorks

GIF 格式解析之表情包是如何动起来的

CRMEB

Linux系统-Makefile规则介绍、基本使用

DS小龙哥

Linux makefile 2月月更

Linux系统编程-(pthread)线程通信(读写锁)

DS小龙哥

2月月更

Linux系统编程-(pthread)线程通信(条件变量)

DS小龙哥

2月月更

2021 年软件安全报告:代码开源,福“祸”相依?

腾源会

开源 安全

加入科学计算SIG,挑战最前沿的AI+Science研发与创新

百度开发者中心

百度AI

对话 SphereEx 创始人张亮:开源与商业并行 做时间越久越有价值的事情

SphereEx

Linux系统编程-(pthread)线程通信(互斥锁)

DS小龙哥

互斥锁 2月月更

像搭积木一样定制系统,这家公司正瞄准数据库做增值服务

SphereEx

百度智能云开物再收“一个奖状”

百度开发者中心

工业互联网 百度智能云 百度智能云开物

一手实录!朱广权的AI手语搭档是怎样“养成”的?

百度开发者中心

百度智能云 百度AI

一站式交付体验:云效+Kubernetes

阿里云云效

阿里云 Kubernetes 云原生 持续交付 一站式平台

Linux系统编程-(pthread)线程通信(围栏机制)

DS小龙哥

2月月更 围栏机制

Linux系统编程-(pthread)线程创建与使用

DS小龙哥

线程 2月月更

某 E-Office v9 任意文件上传【漏洞复现实战】

H

网络安全 漏洞

如何将Perforce Helix Core与CI构建服务器结合使用

龙智—DevSecOps解决方案

ci 持续集成 持续交付 CD

全球案例 | 一家有着百年历史的航空公司如何扩展和转型,推动航空业创新

龙智—DevSecOps解决方案

Atlassian Jira 航空公司

AMD EPYC服务器芯片将涨价10%~30%

BeeWorks

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