我们不可能永远都在救火 ——Scrum中技术债务“偿还”指南

敏捷开发
• 阅读 289

技术债务是指开发人员为了加速软件开发,在应该采用最佳方案时进行了妥协,改用了短期内能加速软件开发的方案,以至于未来给自己带来额外的开发负担。

软件工程师Ward Cunningham首次将技术的复杂比作为负债。简单来说,技术债务类似于金融债务,软件开发就像是去银行“贷款”,而技术债务就像是贷款的“利息”。“利息”是需要以未来额外的时间来偿还的,所以重构才相当于支付“本金”。

表面上,软件的应用程序看起来质量很高且状况很好,但是这些问题却隐藏在下面。如果没有很好地管理并设法降低这些技术债务,那么程序编写和维护的代价最终将会超过它对客户的价值。

这些技术债务到底是从何而来?为什么某些团队在Scrum开发过程中会导致技术债务的积累呢?我们该如何解决技术债务呢?

我们不可能永远都在救火 ——Scrum中技术债务“偿还”指南

一、Scrum环境产生技术债务的原因

为了满足Sprint冲刺目标、发布功能和不断变化的需求,开发人员可能会更加关注短期收益,而忽视长期代码质量和可维护性。因此,开发人员会在必要的修改没有完成时就匆匆发布,权宜之计在不知不觉中就产生技术债务。

技术债务会导致Scrum团队产生生产力下降、代码质量下降、项目风险增加等多种影响。虽然在下一个迭代中偿还技术债务是可行的,但团队需要关注每个迭代的新需求,不可能永远都在救火。

那么我们该如何偿还技术债务?或者该如何避免产生技术债务呢?

二、技术债务如何还债

在Scrum环境中,偿还技术债务是一个重要的任务,以确保软件的可持续发展和质量。下面是一些偿还技术债务的方法:

  • 识别技术债务

首先,团队需要识别和记录技术债务。这可以通过代码审查、静态代码分析、系统性能监测等方式来发现潜在的问题和改进点。技术债务可以包括代码质量问题、未完成的任务、过时的技术选择等。

  • 优先级排序

一旦技术债务被识别,团队需要对其进行优先级排序。这可以基于影响业务价值、风险和复杂性等因素来确定。团队可以与利益相关者协商,以确保优先处理对业务和用户最重要的技术债务。

  • 制定计划

根据优先级排序,团队可以制定一个技术债务偿还计划。这个计划应该包括具体的任务、时间估计和分配给团队成员的工作量。团队可以将这些任务添加到产品待办列表中,并在每个迭代中分配一定的时间来处理技术债务。

  • 项目结构化

减少技术债务的有效方式之一是通过更好地构建项目来最大程度地减少技术债务。使用项目管理工具(如禅道)可以帮助团队跟踪开发状态,保持进度,并提高团队的整体协作效率。

  • 自动化测试

在偿还技术债务的过程中,团队可以优先考虑编写自动化测试来确保代码的正确性和稳定性。自动化测试可以帮助团队及时发现和解决问题,并减少未来的技术债务积累。

禅道团队自研了开源的自动化测试框架ZTF和通用数据生成器ZenData,加上禅道项目管理软件构成了专业的自动化测试解决方案,可以帮助用户实现规模化自动化测试,提升测试效率。

  • 分配固定重构时间

重构相当于贷款需要偿还支付“本金”,所以每个Sprint中分配固定的时间进行重构。这可以是若干小时数、若干故事点数,如一个团队可以为重构预留30个小时、4个故事点等。在Scrum环境中,持续改进是一个核心原则,只有定期回顾和评估偿还技术债务的进展,才能够一定程度上避免技术债务带来的消极影响。

通过遵循这些策略,Scrum团队可以有效地管理和减少技术债务,从而产生更高质量的软件产品并提高团队生产力。 我们不可能永远都在救火 ——Scrum中技术债务“偿还”指南

三、写在最后

正如电影《无间道》所说“出来混,迟早要还的”,技术债是无法避免的,只是产生技术债务多少的问题,但如果不及时处理技术债务就会产生破窗效应。团队欠下太多技术债务,必然导致影响后期的代码质量下降,这也会间接影响到完全没有关联的其他用户故事的研发。

点赞
收藏
评论区
推荐文章
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Stella981 Stella981
3年前
DevOps如何解决技术债务挑战?
!(https://oscimg.oschina.net/oscnet/32c0085858b04e6e80a771633912ce14.jpg)许多组织在迁移到云期间发现了大量的技术债务。但是什么是技术债务呢?DevOps如何帮助我们去解决技术债务呢?在这篇文章中,我们将讨论使用DevOps将您的技术债务负担减少的方式!什么是技
Wesley13 Wesley13
3年前
2021年,是时候把技术债务管理提上日程了
开发人员面临着前所未有的压力:从传统的基础设施转移到现代的基础设施,减少效率低下的情况,并创建构建客户满意度和增加收入的产品。许多企业都在以DevOps的思维方式前进,但在他们前进的过程中,他们可能会忘记一件事,技术债务。的确,开发者可能会快速移动并破坏某些内容,但却从未真正去修复它们。因此,技术债务的积累,导致工程生产力的下降和生产成本的上升。
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
codigger codigger
5个月前
从混乱到有序:Codigger 软件项目体检助力软件项目管理
Codigger的软件项目体检(SoftwareProjectHealthCheck)工具,致力于协助团队在整个软件开发生命周期内保持高标准的代码质量,降低技术债务,提升开发效率,保障软件产品的稳定性与安全性。
陈哥聊测试 陈哥聊测试
11个月前
应对 DevOps 中的技术债务:创新与稳定性的微妙平衡
技术债务如果得到有效管理,可以成为短期内优化交付速度和创新的工具。
京东云开发者 京东云开发者
10个月前
复杂SQL治理实践 | 京东物流技术团队
一、前言软件在持续的开发和维护过程中,会不断添加新功能和修复旧的缺陷,这往往伴随着代码的快速增长和复杂性的提升。若代码库没有得到良好的管理和重构,就可能积累大量的技术债务,包括不一致的设计、冗余代码、过时的库和框架以及不再使用的功能。这些因素都会导致软件结
陈哥聊测试 陈哥聊测试
7个月前
产品经理如何帮助减少技术债务 ?
这里有一些会起到帮助的可行策略。
codigger codigger
5个月前
与Bug较量:Codigger之软件项目体检Software Project HealthCheck来帮忙
Codigger之软件项目体检SoftwareProjectHealthCheck工具旨在帮助团队在整个软件开发生命周期中维护高标准的代码质量,减少技术债务,提高开发效率,并确保软件产品的稳定性和安全性。
敏捷开发
敏捷开发
Lv1
女 · 产品经理
公众号:敏捷开发 网址:www.minjiekaifa.com
文章
44
粉丝
2
获赞
0