如何在敏捷中管理和减少技术负债?
不要让技术负债滚雪球。以下是如何监控、维护和减少敏捷中的技术债,继续应用程序开发项目。
当债务累积时,它需要随着时间的推移偿还,而且通常还带有利息,技术负债也不例外。
当开发人员为给定程序添加更具功能性、可扩展性或互操作性的内容时,他们将面临技术负债积累的风险。例如,如果开发人员根据客户需求采取捷径来添加新的应用程序功能,那么任何源自附加功能而产生的更多工作(例如重构)都称为技术负债。敏捷开发中的技术负债也不例外,无论用哪种方式,都需要偿还。
让我们来看看如何计算、监控和理想地消除敏捷开发中的技术负债。
如何计算技术负债
衡量和监控技术负债
虽然组织不想产生新的技术负债,但它却非常普遍并且通常是可预测的。如果公司要等到每一行代码都完美无缺,那么项目将永远处于开发阶段。
但是,团队可以通过监控和管理技术负债并找到其所占比例之后,再继续进行应用程序的开发。例如,SonarQube 和 Coverity 等工具可以衡量技术负债并提供数据来计算技术负债率,从而保证开发任务按时完成。
一旦团队找到了他们的技术负债率,便可以主动监控和管理他们的开发,控制未来可能出现的潜在问题。
敏捷中的技术负债
敏捷开发依赖于效率,因此应用程序功能需要正常运行就能继续开发。但由于他们将速度和加速交付置于最佳实践和质量保证之上,即使应用程序运行良好,团队也可能会积累技术负债。
当团队争先恐后地赶 sprint 的最后期限,过程中通常会导致代码方法冗长、例程效率低或质量低下。如果团队着重于新功能而不是修复bug,产生技术负债需要在进入下一个开发步骤之前解决。
敏捷开发人员必须对他们的工作负责,这意味着允许他们在最后期限前走捷径。卓越和一致性是敏捷冲刺不可或缺的一部分,但它们可能会带来成本。
总而言之,监控您的团队积累了多少技术负债,并在产品待办事项阶段解决它。
技术负债成本
以下是敏捷开发中与技术负债相关的四种最常见的成本:
1、代码质量低。如果开发人员急于赶上最后期限,他们可能会牺牲整洁且组织良好的代码。糟糕的设计和编码实践可能会让项目按时完成,但会带来长期的麻烦,例如后来的开发人员将不得不处理这些失误,代码库将难以被维护和监控。糟糕的代码设计让团队产生了技术负债,导致与代码清理相关的工作积压。
2、项目停滞不前。随着技术负债的积累,保持项目运行所需的工作量会成比例地增长,无论是代码复杂性、测试还是任何其他问题,它都会增加本可以在项目早期阶段修复的时间,导致您的开发人员将花时间解决这些问题,而不是交付具有商业价值的其他工作。
3、缺陷增加。缺陷是技术负债的常见后果,这些缺陷会影响客户体验并提高产品整个生命周期的维护成本。
4、团队士气消极。随着技术负债的积累,理解当前系统状态和添加新功能所需的工作量变得更具挑战性,大大降低团队的生产力。随着工作陷入停顿,团队的士气无疑会下降,因为他们需要花时间解决本可预防的问题——并避免产生新的问题。
如何减少或消除技术负债
减少或消除技术负债的几种方法包括:
1、自动化测试。不要在手动测试上浪费时间,它在很大程度上是低效的。减少或消除技术负债的最成功方法之一是自动化测试,自动化测试减少了代码问题,因为自动调试周期和其他过程会在每次更新模块时扫描代码以查找问题。
2、项目结构化。最大程度地减少技术负债的有效方法之一是更好地构建您的项目,项目管理工具(例如 Hive Trello)可以帮助团队跟踪开发状态并保持进度。减少技术负债的另一种方法是监控代码问题并尽快修复它们,Sonargraph 和 Klocwork 等代码分析工具可以帮助识别这些问题并确定它们的优先级。
3、建立代码最佳实践。组织应准备一份编码标准文档,其中包括开发人员应遵循的最佳实践。当您的开发人员遵守编码标准和最佳实践时,将大大减少技术负债,您还可以利用结对编程来产生更好的结果。
4、重构源码。重构是处理技术负债的另一种方式,您可以利用重构来改变源代码的内部质量而不改变外部行为。然而,重构的目的是 改变那些糟糕的代码 ,通常被称为脏代码——由于开发人员的能力不足或缺乏经验,或者他们为了快速的解决问题,才会出现这种代码,导致技术负债。如果团队定期重构,将会减少现有的技术负债并提高代码的可维护性、可读性和效率。
5、选择可扩展、灵活的架构。为尽量避免重构,团队应该确定一个安全、可扩展且灵活的架构。架构负债不仅在技术负债方面成本很高,而且在现实中的花销也是如此。因此,需要为您的平台选择能无缝集成、可扩展的新技术和架构。
技术负债并没有那么糟糕
技术负债并不总是有害的,例如,如果开发待办事项包括应用程序改进而不是Bug修复,它有助于推动应用程序向前发展。
尽管如此,最好还是避免技术负债。团队一旦确定了技术负债的根本原因,将有助于加强开发,有效避免未来出现这些问题。
推荐阅读:
了解敏捷开发:什么是敏捷开发? | 瀑布与敏捷的区别 | 敏捷宣言及相关解读 | 国内外主流敏捷开发框架对比 | 主流敏捷框架之Scrum 敏捷开发中的模式介绍 | 敏捷开发的优缺点 | 待续...
落地敏捷开发:敏捷开发模式 Scrum vs Kanban如何选择?| 国内外最著名的10个敏捷开发项目管理工具盘点 | 从8人到100多人的敏捷实践分享 | 百人左右团队如何做好敏捷开发?| 待续...