This week I read Technical Debt Cripples Software Developer Productivity, a paper by Terese Besker, Antonio Martini, and Jan Bosch. The aim of this study was to explore the negative consequences of technical debt in terms of wasted software development time. Researchers looked to understand how much time is wasted as well as how exactly that wasted time is spent.
Note: A recent conversation on Twitter revolves around the problem of explaining technical debt. The TLDR: “many engineering problems don’t neatly translate into a language the C-Suite understands.” This paper provides one way to frame these problems: talking about technical debt (and other engineering problems) in terms of ‘time wasted’.
My summary of the paper
The paper opens with a description of technical debt: “[a metaphor that was created to] describe the need to recognize the potential long-term negative effects of immature code that is made during the software development lifecycle. This debt potentially has to be repaid with interest in the long term. Interest is the negative effect in terms of the extra effort and activities that have to be paid due to the accumulated amount of TD in the system…” This extra effort is described as waste, or “any activity that produces no value for the customer,” thus negatively affecting developer productivity.
To understand how much time is wasted and what additional activities technical debt forces developers to do, researchers collected self-reported data from developers over the course of ten months. Then, they supplemented that data with follow-up interviews.
Here’s what their study found:
Developers waste 23% of their working time due to technical debt
Almost a quarter of developers’ working time is reported as wasted due to having technical debt. And while the amount of time that is wasted will fluctuate for individuals, “the overall distribution of the wasted time for all developers and over time is largely consistent.”
Wasted time is most commonly spent performing additional testing
Over the course of the study, respondents were asked to report the additional activities on which the wasted time was spent. They selected activities from a predefined set of options.
The activity most strongly associated with wasted time is “performing additional testing.” Having technical debt also caused developers to do “additional source code analysis” and “perform additional refactoring.”
Code related issues, testing issues, and architectural issues are most strongly correlated with wasted time
Respondents were also asked to rank the level of negative impact different types of technical debt had on wasted time. In Table 4 we can see that all types of technical debt except requirements issues are correlated with wasted time. Additionally, “the levels of encountering each of the different TD types have a positive relation to the amount of wasted time, meaning that the more of each TD type the developers encounter, the more time they waste.”
Developers are largely aware of the amount of time wasted due to technical debt. However, managers are not as aware
After the longitudinal study, developers and managers were shown the reported time wasted due to technical debt. Developers acknowledged a quarter of their time was wasted due to technical debt and were not surprised. However, managers were generally not aware that a quarter of developers’ time was wasted due to technical debt.
Final thoughts
This paper provides a path for engineering to help leadership understand the “reality on the ground.” Framing the problem in terms of “time wasted” is one way to get the message across so that leadership either invests in improving the problem, or gets comfortable with the reality and forecasts delivery schedules accordingly. I’ll conclude with a quote related to this from Cindy Sridharan:
That’s it for this week! If you know someone who would enjoy this newsletter, please consider sharing it with them.
As always, reach out with thoughts about this newsletter on LinkedIn, or reply to this email.
-Abi