这篇发表于『Journal of Systems and Software』 2019 年 10 月的文章,是一项关于『技术债务』(Technical Debt, TD)导致软件开发人员生产力损失的重复与扩展研究。
研究通过纵向调查和访谈,量化了『技术债务』对开发时间的浪费,并分析了其具体影响,为『技术债务』管理提供了实证依据。以下是核心内容要点:
25% 的开发者工作时间被浪费了。技术债务指软件开发中为短期便利采取权宜之计(如简化设计、仓促编码),长期可能导致维护成本增加、开发效率下降。虽理论上明确其负面影响,但缺乏实证数据说明具体造成的时间浪费和生产力损失。
通过纵向研究量化技术债务导致的开发时间浪费,分析浪费时间的具体用途、涉及的技术债务类型,比较开发者与管理者对时间浪费的认知差异,以增强对技术债务负面影响的理解。
对 43 名开发者进行为期 7 周的每周两次调查,记录因技术债务浪费的时间、具体活动及涉及的债务类型。
对 16 名开发者进行访谈,深入了解技术债务的影响机制。
使用独立数据集进行重复研究,验证初始结果的可靠性。
结合来源三角验证(不同时间 / 对象的数据)、观察者三角验证(多研究者分析)和方法三角验证(调查 + 访谈),提高结果可信度。
1. 时间浪费比例 开发者平均因技术债务浪费23%的工作时间,且个体差异较大(部分开发者浪费时间占比更高)。这一结果在重复研究中得到验证,表明技术债务对生产力的负面影响具有普遍性。
2. 浪费时间的主要活动 开发者将浪费的时间主要用于额外测试(最常见)、源代码分析、重构、手动处理原本可自动化的流程等。 3. 技术债务的"传染性" 在约25%的情况下,开发者因已存在的技术债务被迫引入新的技术债务(如为快速解决问题而进一步简化代码),形成恶性循环。 4. 认知差异 开发者对技术债务导致的时间浪费感知更强烈,而管理者往往低估其影响,反映出组织内部对技术债务认知的不一致。 5. 技术债务类型的影响 不同类型的技术债务(如代码债务、设计债务、文档债务等)均会导致时间浪费,但代码和架构相关的债务影响更为显著。
技术债务导致的生产力损失显著,需重视技术债务管理(如定期重构、完善文档),并建立开发者与管理者之间的共识,避免低估其长期成本。
研究首次通过纵向数据量化了技术债务的时间成本,为后续研究提供了方法参考;未来可进一步探索不同类型技术债务的具体影响机制,以及有效的债务偿还策略。
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)