持续交付2.0

技术债务如何吞噬开发者时间?实证揭秘!

关注我,每天收获一个新技能!

1
引言

这篇发表于『Journal of Systems and Software』 2019 年 10 月的文章,是一项关于『技术债务』(Technical Debt, TD)导致软件开发人员生产力损失的重复与扩展研究。

研究通过纵向调查和访谈,量化了『技术债务』对开发时间的浪费,并分析了其具体影响,为『技术债务』管理提供了实证依据。以下是核心内容要点:

  • 25% 的开发者工作时间被浪费了。
  • 额外的代码分析与时间浪费的关联性最强。
  • 25% 的『技术债务』案例会迫使开发人员引入新的『技术债务』。
  • 『开发人员』比『管理者』更清楚有多少时间被浪费了。

2
研究背景与目标

技术债务的影响

技术债务指软件开发中为短期便利采取权宜之计(如简化设计、仓促编码),长期可能导致维护成本增加、开发效率下降。虽理论上明确其负面影响,但缺乏实证数据说明具体造成的时间浪费和生产力损失。

研究目标

通过纵向研究量化技术债务导致的开发时间浪费,分析浪费时间的具体用途、涉及的技术债务类型,比较开发者与管理者对时间浪费的认知差异,以增强对技术债务负面影响的理解。

3
研究方法

纵向调查

对 43 名开发者进行为期 7 周的每周两次调查,记录因技术债务浪费的时间、具体活动及涉及的债务类型。

访谈

对 16 名开发者进行访谈,深入了解技术债务的影响机制。

重复验证

使用独立数据集进行重复研究,验证初始结果的可靠性。

三角验证

结合来源三角验证(不同时间 / 对象的数据)、观察者三角验证(多研究者分析)和方法三角验证(调查 + 访谈),提高结果可信度。

4
核心研究结果

1. 时间浪费比例 开发者平均因技术债务浪费23%的工作时间,且个体差异较大(部分开发者浪费时间占比更高)。这一结果在重复研究中得到验证,表明技术债务对生产力的负面影响具有普遍性。 

2. 浪费时间的主要活动 开发者将浪费的时间主要用于额外测试(最常见)、源代码分析、重构、手动处理原本可自动化的流程等。 3. 技术债务的"传染性" 在约25%的情况下,开发者因已存在的技术债务被迫引入新的技术债务(如为快速解决问题而进一步简化代码),形成恶性循环。 4. 认知差异 开发者对技术债务导致的时间浪费感知更强烈,而管理者往往低估其影响,反映出组织内部对技术债务认知的不一致。 5. 技术债务类型的影响 不同类型的技术债务(如代码债务、设计债务、文档债务等)均会导致时间浪费,但代码和架构相关的债务影响更为显著。

5
讨论与启示

对实践者

技术债务导致的生产力损失显著,需重视技术债务管理(如定期重构、完善文档),并建立开发者与管理者之间的共识,避免低估其长期成本。

对研究者

研究首次通过纵向数据量化了技术债务的时间成本,为后续研究提供了方法参考;未来可进一步探索不同类型技术债务的具体影响机制,以及有效的债务偿还策略。

6
研究贡献

  • 实证量化了技术债务导致的时间浪费比例,填补了理论与实践之间的证据缺口。
  • 揭示了技术债务的『传染性』特征,为理解债务累积机制提供了新视角。
  • 通过重复研究验证了结果的可靠性,增强了结论的普适性。

原文链接

Software developer productivity loss due to technical debt—A replication and extension study examining developers’ development work (https://www.sciencedirect.com/science/article/abs/pii/S0164121219301335)