写点什么

初探“技术债务”

  • 2008-08-28
  • 本文字数:1180 字

    阅读完需:约 4 分钟

最近举行了一个技术债务研讨会,以改进我们对“技术债务(technical debt)”的理解及其解决之道,该研讨会迸发出一些有趣的观点。其中一个观点引起了包括 Michael Feathers 和 Brian Marick 在内的很多人的注意,那就是我们应该将对问题的理解集中在“资产”而不是“债务”上。

会议组织者 Matt Heusser 和 Steve Poling 介绍了他们对这个持续两天的会议的愿景:

成功的会议应能采取一些具体的度量,通过这些度量来对技术债务进行切实可行的讨论。当我们说自找麻烦就像借钱一样时,我们并没有自欺欺人,这一点会议已经给我们提供了证据。(往好点说,我们证明了另一个动态是在开玩笑。)该会议还将阐述债务管理和债务偿还策略以及它们何时会显现出来。

该会议意在解决如下三个主要问题: 1. 什么是技术债务?什么不是?
2. 我们如何对其进行度量?其影响如何?
3. 我们能否像管理其他债务一样去管理技术债务?

该会议迸发出一些有趣的观点, Heusser 总结如下: - 无知:劣质代码要么产生于无知,要么产生于错误的决定。请阅读 Brian Marick 的文章以深入了解这一点。

  • Bug 修复:发现 Bug 后一定要尽早修复;由此产生了 stop-the-line 文化。
  • 风险:客户没有对团队施加足够的影响会导致开发速度很快但是质量很低,这是由 Heusse 引入的观点。
    - 不匹配:如果开发者的技术水平参差不齐,那么就会对代码质量产生副作用,这使得开发任务很难完成。请阅读 Chris McMahon 的文章以深入了解这一点。
  • 流动的资产:或许“技术债务”让我们专注于错误的事情上;或许专注于相反的事情、专注于投资( McMahon 最近谈到了这一点)更有效。
  • 供给:证明团队在正常的情况下可以降低技术债务,这样就可以“增加资产”了。

或许上面这些观点中最有趣,大家也最熟悉的就是从另一个角度思考技术债务:努力“增加资产”。从会计学的“借贷”角度来说:一个人可以将精力集中于减少借款或者增加存款,但最终理想的目标还是增加资产。某些情况下这只是视角的问题。 就在会议之前 Michael Feathers 提出了“代码即资产”这样一种观点。他的观点很大程度上表明从“资产”角度看待代码会接近人类的本性,这会对代码质量及“技术债务”问题的反映产生更好的结果。根据Feathers 所述,这样做更好,因为人们都喜欢获取东西(“资产”)而不是损失东西(“债务”)。

随后Brian Marick 继续该讨论,他使用了“充裕的资产”来描述代码质量对开发所产生的结果。他将其类比于园艺,说到土壤必须保持肥沃以持续种植,但尽管如此也不能永远肥沃,这样就有碍于种植了。他的想法就是产品代码与此类似。

此外Brian Marick 还撰写了一篇简短但有趣的捧场文章,重点讲述了一些著名的敏捷文化的鼓吹者对降低债务的团队有什么特别之处这个话题的描述。

与往常一样,请点击下面的链接以了解全部内容的总结,然后回来谈谈你对这些观点的看法以及经历。

查看英文原文: A Fresh Look at ‘Technical Debt’

2008-08-28 09:25722
用户头像

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

关注

评论

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

EMR重磅发布智能运维诊断系统(EMR Doctor)——开源大数据平台运维利器

阿里云大数据AI技术

大数据 运维 企业号九月金秋榜 EMR

Python中的super函数,你熟吗

华为云开发者联盟

Python 开发 企业号九月金秋榜

容器化|自建 MySQL 集群迁移到 Kubernetes

RadonDB

MySQL 数据库 RadonDB Kubernetes 集群

恭喜 SelectDB 三位开发者成为 Apache Doris 新晋 Committer!

SelectDB

大数据 开源项目 Committer SelectDB 企业号九月金秋榜

解析Stream foreach源码

华为云开发者联盟

Java 开发 企业号九月金秋榜

网络安全周是什么意思?为什么要开展网络安全周?

行云管家

网络安全 网络安全周

毫末智行董事长张凯:渐进式路线将在智能驾驶竞赛中赢得终局

科技大数据

新一代开源时序数据库TDengine有哪些优势?

TDengine

数据库 tdengine 开源 企业号九月金秋榜

开源指南|如何从零开始参与 Apache 顶级开源项目?(二)

SelectDB

数据库 大数据 Doris 开源治理 企业号九月金秋榜

你必须知道的Java泛型

自然

Java core 9月月更

led显示屏有污垢时该怎么清洗?

Dylan

LED显示屏 led显示屏厂家

怎么合理使用索引

急需上岸的小谢

9月月更

Redis 的PSYNC命令

急需上岸的小谢

9月月更

高频面试题:谈谈你对 Spring Boot 自动装配机制的理解

Java快了!

Spring Boot

前端二面面试题(附答案)

helloworld1024fd

JavaScript 前端

[MyBatisPlus]DQL编程控制②(查询投影、查询条件)

十八岁讨厌编程

Java 后端开发 9月月更

Istio Ambient Mesh 介绍

Se7en

不懂 Kubernetes 实现云原生是什么体验?

北京好雨科技有限公司

云原生 #Kubernetes#

虚实交互,重磅开启|共建多元、互联的元宇宙产业生态圈,赋能上海打造产业高地

Geek_2d6073

[Spring boot] Spring boot 整合RabbitMQ实现通过RabbitMQ进行项目的连接

Java快了!

Spring Boot

阿里云EMAS移动测试|快速掌握移动端兼容性测试技巧

移动研发平台EMAS

阿里云 应用开发 兼容性测试 移动测试

[MyBatisPlus]DQL编程控制①(条件查询)

十八岁讨厌编程

Java 后端开发 9月月更

PSYNC 部分重同步的原理

急需上岸的小谢

9月月更

SpringBoot 源码 | applicationContext.refresh() 方法解析

六月的雨在InfoQ

springboot 源码阅读 Refresh 9月月更 SpringBoot启动流程

开源云管平台有哪些?有哪些优势?

行云管家

云计算 云平台 云管平台 云管理

大学三年狂拿国内外十几个3D挑战赛大奖?!国内CG新星崛起

Renderbus瑞云渲染农场

CG 云渲染 3D动画 渲染农场 Renderbus瑞云渲染

[SpringBoot系列]基础过渡与夯实(基础配置)

十八岁讨厌编程

Java 后端开发 9月月更

开奖啦!看看8月月更获奖名单有没有你?

InfoQ写作社区官方

热门活动 8月月更

字节跳动基于ClickHouse优化实践之“高可用”

字节跳动数据平台

数据库 大数据 Clickhouse 数据开发 数据计算

【云原生】Kubernetes操作精讲

陈橘又青

9月月更

了解布隆过滤器

自然

Java core 9月月更

初探“技术债务”_Java_Mike Bria_InfoQ精选文章