写点什么

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

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

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

关注

评论

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

直播回顾 | 一体化智能可观测平台如何保障电商节大促

博睿数据

可观测性 智能运维 博睿数据 618 电商行业

教培行业的“智能GPT私教”?WorkPlusAI助理帮助教培机构实现十倍人效!

BeeWorks

HummerRisk获中国开源创新大赛优秀奖

HummerCloud

开源 云安全

喜讯 | 华秋电子荣获证券时报年度高成长企业

华秋电子

深度学习应用篇-自然语言处理-命名实体识别[9]:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)

汀丶人工智能

人工智能 自然语言处理 深度学习 命名实体识别 6 月 优质更文活动

千万级数据的可视化交互展示:Vue.js 技术解析

xfgg

Vue eCharts 6 月 优质更文活动

智慧生活垃圾焚烧发电厂Web3D可视化平台

2D3D前端可视化开发

物联网 数字孪生 三维可视化 工业组态 智慧垃圾焚烧发电厂

【Netty】「萌新入门」(一)Hello, World!

sidiot

Java 后端 Netty 6 月 优质更文活动

浪潮 KaiwuDB x 大数据中心 | 数据驱动政府治理能力快速提升

KaiwuDB

KaiwuDB 大数据中心建设

平台即产品:数字化转型的全新驱动力

SEAL安全

平台工程 平台即产品

科兴未来|2023”福地句才”海外人才创业大赛

科兴未来News

3 个技巧,让你像技术专家一样解决编码问题

LigaAI

程序人生 技术专家 技术人成长 问题分析及解决 企业号 6 月 PK 榜

Win服务器图床配置

路北路陈

6 月 优质更文活动

Web网页端IM产品RainbowChat-Web的v5.0版已发布

JackJiang

网络编程 即时通讯 IM

构建系列之新一代利器Esbuild(上)

江湖修行

cli 构建 esbuild 前端‘’

【零售电商系列】走进亚马逊之自建仓储&物流

小诚信驿站

6 月 优质更文活动

DevEco创建项目时的错误解决

路北路陈

6 月 优质更文活动

NFTScan | 06.05~06.11 NFT 市场热点汇总

NFT Research

NFT 热点

赋能矿山 | KaiwuDB 智慧矿山解决方案

KaiwuDB

解决方案 智慧矿山 KaiwuDB

深度学习应用篇-自然语言处理[10]:N-Gram、SimCSE介绍,更多技术:数据增强、智能标注、多分类算法、文本信息抽取、多模态信息抽取、模型压缩算法等

汀丶人工智能

人工智能 自然语言处理 深度学习 命名实体识别 6 月 优质更文活动

“敏捷教练进阶课程”7月22-23日 ·A-CSM认证在线周末班【提前报名特惠】CST导师亲授

ShineScrum

敏捷教练

“数字创新产品课程”7月29-30日 · CSPO认证周末班【提前报名特惠】CST导师亲授

ShineScrum

精耕丝路,智胜全球 | 新华三助力中企跑好“出海”赛道

新消费日报

Java线程池三、调优和性能优化

echoes

Java 线程池

数据可视化设计四大原则透析

搞大屏的小北

数据可视化 设计要素 大屏设计

相约未名湖畔,百度商业AI技术创新大赛携手北大学子共探AI发展

百度Geek说

人工智能 百度 企业号 6 月 PK 榜

分享几款 Mac 上非常好用的的免费软件

搞大屏的小北

数据可视化 数据库工具 截图软件 视屏转 gif 视频号下载

短视频云端批量混剪实操指南

阿里云CloudImagine

云计算 短视频 视频云 云剪辑

数据分析:电子商务需要关注的重要指标有哪些?

搞大屏的小北

电子商务 销售指标

科兴未来|2023年扬中高层次人才创新创业大赛

科兴未来News

通过技术变革,推动全面预算管理前行

智达方通

全面预算管理

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