最新发布《数智时代的AI人才粮仓模型解读白皮书(2024版)》,立即领取! 了解详情
写点什么

如何偿付技术债务

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

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

关注

评论

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

与Web3支付赛道主要项目相比,Zebec生态潜力相当大

EOSdreamer111

事务相关知识集锦

京东科技开发者

MySQL 数据库 spring mybatis 事务

架构训练营模块1作业

gigifrog

架构训练营

大数据培训学习需要注重哪些知识呢

小谷哥

微信业务架构图 & 学生系统技术架构图

白杨

Redis数据持久化机制(备份恢复)、缓存淘汰策略、主从同步原理、常见规范与优化详解

C++后台开发

数据库 redis 中间件 后端开发 C++开发

前端leetcde算法面试套路之堆

js2030code

JavaScript LeetCode

架构训练营模块一作业

Dinfan

架构实战营

各开发语言DNS缓存配置建议

京东科技开发者

#DNS

【PCB技能】脑瓜疼的PCB反复评审难题,解决方法在这!

华秋PCB

工具 PCB PCB设计

大数据培训学习后程序员就业前景如何

小谷哥

面试官:小伙子你说一下分布分表

Java全栈架构师

程序员 程序人生 后端 架构师 分布分表

前端精准测试实践

京东科技开发者

前端 测试 精准测试 webhook 精准分析

秒云成功入选《2022爱分析 · 信创厂商全景报告》

MIAOYUN

信创 信创云 金融信创 信创产业

2022阿里云研发效能峰会,来啦!

阿里云云效

DevOps 研发效能 开发 数字化转型

文盘Rust -- r2d2 实现redis连接池

京东科技开发者

redis 后端 封装 连接池 rust语言

深圳前端培训学习编程的就业方向有哪些?

小谷哥

华为云发布CodeArts Req需求管理工具 让需求管理化繁为简

Geek_2d6073

数读甘肃数字经济 | 2022年甘肃14市州数字经济发展活跃度指数发布

易观分析

数字经济 甘肃

看场景、重实操,实时数仓不是“纸上谈兵”

阿里云大数据AI技术

大数据 实时数仓 12 月 PK 榜

极客时间-架构训练营-作业一

devilyaos

架构训练营 架构训练营10期

专业开发人员需要低代码开发平台吗

力软低代码开发平台

AI技术实践|用腾讯云录音文件识别让无字幕视频自动生成字幕

牵着蜗牛去散步

人工智能 腾讯云 腾讯 语音识别

【中国信通院|低代码·无代码应用沙龙】低代码平台在云智慧的实践探索

云智慧AIOps社区

大前端 低代码 数据可视化 无代码 可视化大屏

如何通过C#合并Word文档

在下毛毛雨

C# .net word文档 文件合并

架构实战营模块一作业

😊😊😊

作业一

北京前端培训程序员学习方法有哪些

小谷哥

与Web3支付赛道主要项目相比,Zebec生态潜力相当大

股市老人

迁移回归问题新突破,火山语音团队论文被人工智能顶级期刊IEEE TPAMI接收

科技热闻

PostgreSQL 技术内幕(三)聚集算子

酷克数据HashData

postgresql

java架构师培训学习需要多久?

小谷哥

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