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

敏捷开发
• 阅读 53

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

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

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

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

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

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

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

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

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

二、技术债务如何还债

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

  • 识别技术债务

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

  • 优先级排序

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

  • 制定计划

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

  • 项目结构化

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

  • 自动化测试

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

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

  • 分配固定重构时间

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

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

三、写在最后

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

点赞
收藏
评论区
推荐文章
企业级飞速低代码 | 这5个理由让软件架构师积极拥抱低代码
从避免技术债务到简化和整合业务流程到解锁单体系统,低代码提供了速度和灵活性。软件开发者和架构师曾经有理由对低代码技术持怀疑态度,但今天,许多成熟的低代码平台使敏捷开发团队能够提高生产力、增加质量、并频繁部署。开发人员使用低代码技术来构建应用程序、客户体验、门户网站、搜索体验、工作流集成、数据管道、数据流、仪表板、测试自动化、机器学习模型和其他解决方案。"低代
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Wesley13 Wesley13
2年前
FLV文件格式
1.        FLV文件对齐方式FLV文件以大端对齐方式存放多字节整型。如存放数字无符号16位的数字300(0x012C),那么在FLV文件中存放的顺序是:|0x01|0x2C|。如果是无符号32位数字300(0x0000012C),那么在FLV文件中的存放顺序是:|0x00|0x00|0x00|0x01|0x2C。2.  
Wesley13 Wesley13
2年前
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
2年前
DevOps如何解决技术债务挑战?
!(https://oscimg.oschina.net/oscnet/32c0085858b04e6e80a771633912ce14.jpg)许多组织在迁移到云期间发现了大量的技术债务。但是什么是技术债务呢?DevOps如何帮助我们去解决技术债务呢?在这篇文章中,我们将讨论使用DevOps将您的技术债务负担减少的方式!什么是技
Wesley13 Wesley13
2年前
2021年,是时候把技术债务管理提上日程了
开发人员面临着前所未有的压力:从传统的基础设施转移到现代的基础设施,减少效率低下的情况,并创建构建客户满意度和增加收入的产品。许多企业都在以DevOps的思维方式前进,但在他们前进的过程中,他们可能会忘记一件事,技术债务。的确,开发者可能会快速移动并破坏某些内容,但却从未真正去修复它们。因此,技术债务的积累,导致工程生产力的下降和生产成本的上升。
Wesley13 Wesley13
2年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
京东云开发者 京东云开发者
9个月前
订单逆向履约系统的建模与PaaS化落地实践 | 京东云技术团队
本文重点介绍了京东零售电商业务在订单逆向履约上面的最佳技术实践,阅读本文,读者可以了解到整个快退平台新系统设计的底层逻辑,也可以参考本文并结合实际场景,将方案应用在遗留债务系统改造、业务和技术建模中。
陈哥聊测试 陈哥聊测试
3个月前
应对 DevOps 中的技术债务:创新与稳定性的微妙平衡
技术债务如果得到有效管理,可以成为短期内优化交付速度和创新的工具。
京东云开发者 京东云开发者
3个月前
复杂SQL治理实践 | 京东物流技术团队
一、前言软件在持续的开发和维护过程中,会不断添加新功能和修复旧的缺陷,这往往伴随着代码的快速增长和复杂性的提升。若代码库没有得到良好的管理和重构,就可能积累大量的技术债务,包括不一致的设计、冗余代码、过时的库和框架以及不再使用的功能。这些因素都会导致软件结
敏捷开发
敏捷开发
Lv1
女 · 产品经理
公众号:敏捷开发 网址:www.minjiekaifa.com
文章
18
粉丝
0
获赞
0