如何在软件开发中驯服技术债务

技术债务管理的关键观点

Marijn Huizenveld 在 OOP 2023 Digital 上讨论了如何有效管理技术债务,并提出了几个关键策略和启发式方法。

主要策略

  1. 纪律性:防止技术债务积累的关键在于团队纪律。通过让债务难以忽视,可以促使团队更积极地处理问题。
  2. 高可见性:将技术债务清单展示在显眼的位置,如走廊,能够引发更多关于债务的讨论,并促使组织采取行动。
  3. 好的技术债务:好的技术债务是故意的、可控的,并且能为组织带来好处。

启发式方法

Huizenveld 提供了一些实用的启发式方法来管理技术债务:

  • 立即修复小问题:如果能在五分钟内修复,就应该立即处理。
  • 改进领域模型:尝试通过改进领域模型来解决技术债务。如果太复杂,可以采用技术手段或自动化解决方案,最后可以制作清单以备下次使用。
  • 设定时间盒:与团队商定改进的时间盒,确保在规定时间内完成任务,如果超时则制作清单并继续前进。
  • 自动化优先:如果问题可以由机器修复,就不要手动处理。
  • 保持混乱的外观:如果系统因为技术债务而混乱,不要将其整理得过于整洁,视觉上的混乱有助于激发改变。
  • 仅由相关人员处理:只有那些真正参与项目的人员才被允许处理技术债务,以确保解决方案在实际中有效。

技术债务的现状

根据 Stripe Inc. 在 2018 年的研究《The Developer Coefficient》,开发人员每周平均工作 41.1 小时,其中约 13.5 小时用于处理技术债务,包括坏代码则达到 17.3 小时。这意味着开发人员实际用于开发的时间非常有限,即使数据被夸大 50%,技术债务的影响仍然很大。

衡量成功处理技术债务的指标

Huizenveld 提出了几个衡量成功处理技术债务的指标:

  • 团队幸福感:通过简单的笑脸评分来跟踪团队成员的感受,如果团队因为技术债务的减少而感到更快乐,说明处理方向正确。
  • 非计划工作减少:非计划工作通常会阻碍团队的产出,减少这类工作可以提高团队的效率。
  • 修复 bug 的平均时间缩短:减少技术债务可以加快 bug 修复的速度,特别是那些阻碍系统快速变更的债务。
  • 上市时间缩短:所有小的改进累积起来,最终会显著缩短产品的上市时间,团队能够更专注地完成计划中的工作,而不会受到干扰。

结论

Huizenveld 强调,技术债务的管理需要团队的纪律性和高可见性,通过一系列实用的启发式方法和明确的成功指标,可以有效减少技术债务对开发效率和团队幸福感的影响。

阅读 20
0 条评论