生成式AI领域的最新成果都在这里!抢 QCon 展区门票 了解详情
写点什么

如何偿付技术债务

  • 2010-12-17
  • 本文字数:1311 字

    阅读完需:约 4 分钟

Paul Tevis 的团队在四个月前开始使用 Scrum。 该项目拥有大量技术债务,他正在努力解决如何跟踪和偿付技术债务的问题。 Tevis 写到:

我关心的问题是:(1)我们一开始跟踪非故事的任务,就无法集中于交付客户的价值;(2)如果我们不让这些任务可见,那么就无法以需要的速度取得进展。 对于解决不是直接与故事相关(或者涉及到多个故事)的技术债务,你有什么好的模式吗?

什么是技术债务? Ward Cunningham 创造了“技术债务”这个词,它指的是组织为了达到短期的目标,而降低代码质量时所造成的债务。 想要重新提高代码质量,马上解决会很容易,而做的越晚,成本就越高。 额外的成本就是技术债务的“利息”。

Malcolm Anderson 创建了一个案例,它与特定情况下的技术债务相关

之所以使用短期的技术债务,会有很多种原因。 让我使用利息率为 36% 的信用卡作为比喻。 你不想使用那个卡。 但是,当拥有很大的业务合理性的时候,你就会在短期的情况下使用那个卡。

但是 Adam Sroka 反对说

如果你想要做出业务决定,至少要知道: 1. 我会花费多少?
2. 会产生多少利息? 会经过多长时间?
3. 我是否有足够的收入来偿付?

当团队自发地采用技术债务的时候,甚至很少有人(如果有的话)知道以上任何一个问题的答案。

不管这是否是个好主意,在 Tevis 的案例中,债务已经发生了。 那么我们如何才能在项目中减少已经存在的技术债务呢?

Roy Morien 为如何偿付技术债务的问题提供了两种可能的解决方案

你真的需要做出这么困难的选择吗? 我想,如果你的“技术”开发需求那么重要,那么大,或者那么多,那么暂停面向用户的开发是否是可行的呢?那样你可以把那些技术问题理清并清理掉。 或者,是否可以重新分配一些开发者来解决这些技术问题,同时团队中其它人员会继续开发面向用户的内容。 这可能会影响团队的效率,但那又怎么样呢?

然而,Ron Jeffries 并 不同意这两个方法

当技术问题是由故事驱动的时候,处理它才会最有效。 代码库可能到处都需要处理,但是只有在因为面向用户的原因工作的代码才需要偿付技术债务。 如果某些糟糕的代码没有涉及到任何故事,那么对它所做的工作就是很大程度上的浪费。

因此,我更喜欢像平时那样(但可能很少会那样)采用故事的方法,并且遵循“童子军军规”,在离开营地时让它比我们找到时更干净。 也就是说,在故事引领我们到达的地方,让我们编写更多的测试,并更积极地进行更多的重构。

这个方法至少拥有以下优点:

  • 保持故事“最敏感”的流程;
  • 发动所有团队智慧来提供帮助;
  • 让整个团队知道如何保持代码整洁;
  • 专注于对需要的地方进行改善;
  • 不浪费精力在可能需要的改善上;

… 以及更多。

而“banshee858”提供了下面的建议(他最初信任 Tobias Mayer),这与 Jeffries 的方法非常吻合:

在很小的便利贴上列举所有技术债务,并把它们贴到任务板上。 当为 Sprint 选择产品 Backlog 项目(PBI)的时候,看一下各个技术债务,并找到处理 PBI 的同时可以合理完成的那些项目。 把它们添加到 PBI 的工作范围之内,并估计需要多长时间才能完成特性和技术债务内容。 使用这种方式,你就可以看到技术债务方面的工作,并且能够区分出优先次序,与真正的价值关联起来。

查看英文原文: How To Pay Down Technical Debt

2010-12-17 18:431439
用户头像

发布了 340 篇内容, 共 125.9 次阅读, 收获喜欢 13 次。

关注

评论

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

移动端浏览器性能优化探索

阿里技术

性能优化 移动端开发

分享给程序员的6款实用工具

这我可不懂

程序员 工具 开发工具

PWA和小程序的比较与优势

没有用户名丶

强化学习从基础到进阶-案例与实践[2]:马尔科夫决策、贝尔曼方程、动态规划、策略价值迭代

汀丶人工智能

人工智能 深度学习 强化学习 马尔科夫决策 6 月 优质更文活动

规则引擎调研及初步使用 | 京东云技术团队

京东科技开发者

算法 规则引擎 企业号 6 月 PK 榜 匹配算法 rete

带你彻底掌握Bean的生命周期

华为云开发者联盟

后端 开发 华为云 华为云开发者联盟 企业号 6 月 PK 榜

DevOps|中式土味OKR与绩效考核落地与实践

laofo

DevOps OKR 研发效能 绩效考核

强化学习从基础到进阶-常见问题和面试必知必答[2]:马尔科夫决策、贝尔曼方程、动态规划、策略价值迭代

汀丶人工智能

人工智能 深度学习 强化学习 马尔科夫决策 6 月 优质更文活动

2023上半年Java高频面试题库总结(600+java面试真题含答案解析)

小小怪下士

Java 程序员 面试

Git常用命令分享

这我可不懂

git

【直播预告】今晚7点,来HarmonyOS极客松直播间与技术专家聊聊新技术!

HarmonyOS开发者

HarmonyOS

分享6个SQL小技巧

EquatorCoco

sql 开发语言

火山引擎数智平台最新直播活动:ByteHouse技术架构与最佳实践分享

字节跳动数据平台

数据 活动 直播

基于ChatGPT函数调用来实现C#本地函数逻辑链式调用助力大模型落地

EquatorCoco

函数 C++ ChatGPT

ChatGPT小型平替之ChatGLM-6B本地化部署、接入本地知识库体验 | 京东云技术团队

京东科技开发者

知识库 企业号 6 月 PK 榜 ChatGLM-6B LLM模型

杭州市等级保护测评机构名录-2023年

行云管家

等保 等级保护 等保测评 杭州

英特尔锐炫:驱动持续进步,尽展硬件潜力

E科讯

软件测试/测试开发丨Pytest结合数据驱动-JSON

测试人

json 程序员 软件测试 数据驱动 pytest

一场专属开发者的技术盛宴——华为开发者联创日首站登陆深圳

华为云PaaS服务小智

云计算 AI 华为云 华为开发者大会2023

软件设计原则与设计模式

源字节1号

开源 软件开发 前端开发 后端开发 小程序开发

从0到1构造自定义限流组件 | 京东云技术团队

京东科技开发者

限流算法 令牌桶算法 企业号 6 月 PK 榜 接口限流

堡垒机免费版在哪里下载?是否安全可靠?

行云管家

网络安全 堡垒机 免费堡垒机

Flutter状态管理新的实践 | 京东云技术团队

京东科技开发者

flutter ios 企业号 6 月 PK 榜 声明式UI

CSR格式如何更新? GES图计算引擎HyG揭秘之数据更新

华为云开发者联盟

大数据 华为云 华为云开发者联盟 企业号 6 月 PK 榜

趋势分享 | 多云时代数据安全面临的挑战

原点安全

来啊!跟我一起“单排”推荐系统!

博文视点Broadview

2024深圳电博会

AIOTE智博会

电子信息展

直播源码搭建技术弹幕消息功能的实现

山东布谷科技

软件开发 直播 源码搭建 直播源码

如何偿付技术债务_研发效能_Dan Puckett_InfoQ精选文章