首页 > 其他分享 >我们不可能永远都在救火 ——Scrum中技术债务“偿还”指南

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

时间:2023-12-22 11:48:09浏览次数:31  
标签:指南 重构 偿还 Scrum 债务 技术 救火 团队

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

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

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

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

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

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

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

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

 二、技术债务如何还债

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

  • 识别技术债务

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

  • 优先级排序

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

  • 制定计划

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

  • 项目结构化

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

  • 自动化测试

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

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

  • 分配固定重构时间

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

通过遵循这些策略, Scrum团队可以有效地管理和减少技术债务,从而产生更高质量的软件产品并提高团队生产力。

 

三、写在最后

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

因此,从现在开始把偿还技术债务纳入待办事项中,把避免产生技术债务作为工作准则!

标签:指南,重构,偿还,Scrum,债务,技术,救火,团队
From: https://www.cnblogs.com/minjieagile/p/17921272.html

相关文章

  • Guava自加载缓存LoadingCache使用指南
    第1章:引言大家好,我是小黑,今天我们来聊聊缓存。在Java世界里,高效的缓存机制对于提升应用性能、降低数据库负担至关重要。想象一下,如果每次数据请求都要跑到数据库里取,那服务器岂不是要累趴了?这时候,缓存就显得尤为重要了。那么,怎么实现一个既高效又好用的缓存呢?别急,咱们今天的主......
  • Python 中迭代器与生成器:深度解析与实用指南
    Python作为一门强大而灵活的编程语言,提供了许多高效的工具来处理数据集合。在这些工具中,迭代器(Iterators)和生成器(Generators)是两个重要的概念,它们在数据遍历和惰性计算方面发挥着重要作用。本文将深入探讨Python迭代器和生成器的概念、用法以及它们之间的区别。1.什么是迭代器?迭代......
  • 智慧医疗APP开发指南:医疗陪诊系统源码实战
    本文将深入探讨智慧医疗APP开发中的医疗陪诊系统,重点介绍实际应用中的源码实战经验。 一、技术选型在开发医疗陪诊系统时,合理的技术选型是确保系统高效运行的关键。可以选择采用前后端分离的架构,使用Vue.js作为前端框架,SpringBoot作为后端框架,通过RESTfulAPI进行通信。二、实战经......
  • APP应用加固指南:如何有效辨别,网络上伪造的地理位置?
    在数字互联时代,已经离不开地理位置数据。地理位置数据不仅仅是一个简单的坐标,更是一种数字足迹,描绘了人们在数字世界中的实际存在。这些数据为我们提供了关键的背景信息,让人们在享受数字服务的同时,也能更好地理解人们的生活环境。  首先,基于地理位置数据的地图和导航服务......
  • VxWorks 6.9 BSP开发指南
    概述本文主要是记录《VxWorksBSPDeveloper'sGuide6.9》和《VxBusDeviceDriverDeveloper'sGuide6.9》的部分章节内容,重点关注VxWorks6.9的BSP移植和驱动开发。BSP概述本章主要介绍VxWorks启动过程中调用的BSP相关函数,BSP移植的主要工作就是实现这些函数。函数文......
  • 打造高效用户旅程:埋点分析系统的实操指南
    引言什么是用户行为在数字化时代,了解用户如何与我们的产品或服务互动是至关重要的。用户行为,在广义上,指的是用户在网站、应用程序或其他数字界面上的所有动作和反应。这些行为可能包括点击链接、浏览页面、填写表单,甚至是在社交媒体上分享内容。每一个动作都是用户体验的一部分,并......
  • 青少年信息学奥赛学习规划指南!
    一、什么是信息学奥赛二、信息学奥赛赛制流程三、信息学奥赛系列赛事CSP-JCSP入门级(CSP-J),前身是NOIP普及组,是NOI系列赛事中难度最低,面向年龄最低的赛事,它是很多学生参与的第一个信息学的大型比赛。比赛时间:第一轮(初赛)为9月,第二轮(复赛)为10月。比赛形式:第一轮为2......
  • 资深Scrum敏捷转型培训公司-解锁Scrum成功转型的关键
    ​针对敏捷转型培训,有一些知名的培训公司提供专业的敏捷培训课程和认证。以下是几家备受认可的敏捷转型培训公司:Leangoo领歌: Leangoo领歌是一款永久免费的专业的敏捷开发管理工具,提供端到端敏捷研发管理解决方案,包括小型团队敏捷开发​​​​​​​,规模化敏捷SAFe,ScrumofSc......
  • 构建陪诊预约系统:技术实战指南
    在医疗科技的飞速发展中,陪诊预约系统的应用为患者和陪诊人员提供了更为便捷和贴心的服务。本文将带领您通过技术实现,构建一个简单而实用的陪诊预约系统,以提升医疗服务的效率和用户体验。技术栈选择在开始之前,我们需要选择适用于陪诊预约系统的技术栈:前端:使用React.js构建交互界面......
  • Nginx 服务器的基本原理和配置指南
    什么是Nginx?Nginx(EngineX)是一个轻量级的Web服务器、反向代理服务器及电子邮件(IMAP/POP3)代理服务器、高性能的HTTP服务器,它以高稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。什么是反向代理?反向代理(ReverseProxy)方式是指以代理服务器来接受inter......