2025上半年,最新 AI实践都在这!20+ 应用案例,任听一场议题就值回票价 了解详情
写点什么

技术债还是有用的隐喻吗?

  • 2011-08-07
  • 本文字数:1572 字

    阅读完需:约 5 分钟

技术债由 Ward Cunningham 提出,是指:

另一个更严重的缺陷是无法稳固 。虽然不成熟的代码有可能工作正常也能被客户完全接受,额外的工程量将会导致程序不可掌控,引发程序的极端特化并最终得到一个不灵活的产品。交付第一次的代码就像开始背负债务。少量的债务可以加速开发过程,但很快就要偿还回来,代码需要重写。目标让这种成本可被接受。当债务没被偿还的时候会引发危险。在“不那么正确”的代码上花费的每一分钟都是技术债的利息。整个工程组织都会因这种债务压力导致的不稳定的实现,无论是面向对象还是其它方法,而停滞不前。

在 LinkedIn 敏捷联盟小组的一个讨论中质疑“技术债”在如今全球化软件开发世界中是否仍是个有效的隐喻 Marvin Toll 发起了这个讨论,他说到:

在将近二十年之后可能我们现在有足够的经验来观察这个隐喻是否还有效。我的观察?“没什么用”在一个愈加全球化的 IT 社区中,英语作为第二语言,140 个字符就能引起注意,这个隐喻的细微差别已不能很好的指导应用程序开发了。

换句话说,关于劣质代码的讨论陷入解释财务用例的困境。

绝大多数人站出来为这个术语辩护,它的重要性在于让人们关注一个常常忽视但代价高昂的问题。 Daniel Nelson 分享了他的感受,即人们不熟悉这个术语的危险:

从我数年的编程经历、然后成为业务分析师、现在是 CSPO 的经验来看,我发现如果敏捷团队成员没有对技术债(无论在你的特定环境下叫做什么)哪怕基本的理解将是危险的,也是引发和补救这种技术债的常见原因。

没有明确的实践来预防它,技术债能够并会发展超出控制并损害软件。代码会变得缺陷众多、零碎,并导致接口混乱。

我喜欢这里用的隐喻并认为适用得很好,只要用某些东西提醒团队注意这些问题。

Steve Gordon 指出隐喻可以并存:

隐喻只是模型,但使用其它常见的概念而非数学术语或绘图约定。像所有模型一样,隐喻描述了某个方面并忽视了其它方面。

技术债隐喻描述了劣质代码的持续增长的成本。它并不想描述坏的代码是什么……许多模型或隐喻能没冲突的共存,特别是当它们描述不同的方面或让不同的人达成共识。

Curtis Stuehrenberg ,QA 经理,解释了为什么对他的角色来说技术债是个重要的术语:

我个人喜欢这个术语,因为关于它的讨论趋向凸显主题和冲突,这在通常的标准项目团队中是想掩盖的。无论你在那种团队中,总会有你了解需要做的基础设施的事情和销售团队知道他们能卖更多钱的炫目的功能的角力。如果你关注居住改善,你也会看到类似的角力,卖房者尝试在卖出房子之前粉饰一新。房屋代售的每一天,卖房者都会损失钱,无论是直接的维持成本还是他可以将资本投资其它方面的间接成本。这就导致了售房者希望项目时间尽可能短。他们也希望尽可能少的投资以便最大化他的投资回报率(ROI)。

如果你仔细观察,你会发现有经验的售房者尽其所能的避免做诸如打开墙壁或挖开地板之类的事情。有经验的售房者知道一旦他们做了这些事,他们从统计上来说总会发现他们不得不因结构或安全原因进行修复或是基于法律缘故告知潜在买家的有风险的事实。

项目中的技术债就像隐藏在墙后的,埋于地板下的和在屋顶內的缺陷。大多数团队会花大量精力不搞坏原始的源代码因为他们知道一旦这么做了他们就是打开了需要高昂代价重做的大口子。就像房屋一样,代码库越老你越可能发现把手和管子的线路或石棉或铅涂料。

这就是为什么我作为一个 QA 喜欢谈论“技术债”。如果我们只是等在那儿并说我们隐约担心检查天窗因为我们非常肯定会找到黑霉菌,那我们可以理性的评估风险并选择一个风险规避策略。不谈论它只意味着一些人正在试穿一件新的公司衬衣后背缝着巨大的靶子。

因此,技术债是一个好的隐喻吗?看上去对于大多数人还是管用的,至少它没什么害处。它可能不适合所有的文化和所有团队,这也可以接受因为隐喻可以共存。这符合你的经验吗?

查看英文原文: Is Technical Debt Still a Useful Metaphor?

2011-08-07 21:542248
用户头像

发布了 32 篇内容, 共 94677 次阅读, 收获喜欢 1 次。

关注

评论

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

【YashanDB知识库】解决mybatis的mapper文件sql语句结尾加分号";"报错

YashanDB

数据库 yashandb

浏览器缓存清理工具Cookie for Mac激活版

小玖_苹果Mac软件

【YashanDB知识库】YMP在迁移过程中,遇到报错:failed to open file /qianyi/ymp/ymp_23.3, errno 2, error message "No such file or directory".

YashanDB

数据库 yashandb

主体分割技术,提升图像信息提取能力

HarmonyOS SDK

HarmonyOS

桌面贴纸工具Desktop Stickers for Mac激活版

小玖_苹果Mac软件

使用海外直播专线,拓展直播带货的海外市场

Ogcloud

海外直播专线 海外直播 直播专线 海外直播网络 海外直播IP

PingCAP 连续两年入选 Gartner 云数据库管理系统魔力象限“荣誉提及”

PingCAP

数据库 开源 分布式 TiDB pingCAP

贝锐花生壳简单3步映射金蝶KIS接口,实现财务凭证远程同步

贝锐

内网穿透 金蝶

【YashanDB知识库】进行load data的时候报找不到动态库liblz4.so

YashanDB

数据库 yashandb

TiDB 8.5 LTS 发版——支持无限扩展,开启 AI 就绪新时代

PingCAP

数据库 AI 分布式 TiDB

陪玩系统源码,陪玩小程序怎么做才能赚钱,陪玩多人语聊房,游戏陪玩app源码陪玩H5源码

DUOKE七七

Vue 前端 后端 uniapp thinkphp

多样化消息通知样式,帮助应用提升日活跃度

HarmonyOS SDK

HarmonyOS

剪贴板文件笔记快捷工具Unclutter for Mac激活版

小玖_苹果Mac软件

显卡较量:AMD和英伟达哪个好?

Finovy Cloud

英伟达 AMD 显卡

指标平台如何帮助企业更有效地利用指标?

Aloudata

指标管理 数据虚拟化 数据编织 指标平台 指标开发

指标平台在处理大量数据和复杂指标查询时的性能如何?

Aloudata

数据分析 指标管理 指标平台 指标开发

推荐一个适合TikTok直播的海外直播专线

Ogcloud

海外直播专线 tiktok直播 tiktok直播专线 tiktok直播网络 tk直播专线

【YashanDB知识库】如何输入小写表名的函数参数

YashanDB

数据库 yashandb

基于时间维度水平拆分的多 TiDB 集群统一数据路由/联邦查询技术的实践

PingCAP

数据库 分布式 TiDB

“面面俱到”!人脸活体检测让应用告别假面攻击

HarmonyOS SDK

HarmonyOS

【YashanDB知识库】如何解决删除分区后索引失效问题

YashanDB

数据库 yashandb

Rakuten 乐天积分系统从 Cassandra 到 TiDB 的选型与实战

PingCAP

MySQL TiDB newsql

年度人力费用你管对了吗?

AMT企源

企业管理 人力成本管控 人力费用

如何在 NocoBase 中开发插件发送 WhatsApp 消息?

NocoBase

开源 工作流 低代码 插件 无代码

软件提取工具Pacifist for Mac激活版

小玖_苹果Mac软件

浅谈 2025 年加密货币叙事中的「真相」和「谎言」,哪些叙事值得关注?

TechubNews

研究报告 #区块链 #Web3

G1原理—G1是如何提升分配对象效率

不在线第一只蜗牛

Java 算法 JVM

技术债还是有用的隐喻吗?_研发效能_Amr Elssamadisy_InfoQ精选文章