Developers spend most of their time figuring systems out

The oldest reference on the topic that we know of dates back to 1979, in a book by Zelkowitz, Shaw, and Gannon titled Principles of software engineering and design. It said that most development time was spent on maintenance (67%).

Software development costs (1979)

Granted, the book does not specify how the figure was obtained. Still, it was deemed an important enough problem to attract significant research attention since then.

So, how far are we now, more than four decades later?

Let’s look at a recent paper by Xia, Bao, Lo, Xing, Hassan, and Li titled Measuring Program Comprehension: A Large-Scale Field Study with Professionals and published in IEEE Transactions on Software Engineering, 44, 951–976 (2018). This paper is quite interesting in that it describes in great detail how the figures are obtained. It says that comprehension took an average of ~58%.

Now, take a closer look at the results table.

Software development costs (2018)

In particular, the third column in the table says navigation accounts for 24% of the effort, and that is considered separately from the comprehension effort!

These observations are not isolated. Here are some others spread over several decades:

Roberto Minelli, Andrea Mocci and Michele Lanza. Proceedings of the 23rd IEEE International Conference on Program Comprehension (2015). I Know What You Did Last Summer: An Investigation of How Developers Spend Their Time

Quote: Program understanding is as expected the dominant activity, but as we see our analysis attributes to it even more importance than what the common knowledge suggests, reaching a value of roughly 70%.

Thomas D. LaToza, Gina Venolia and Robert DeLine. Maintaining mental models: a study of developer work habits. In ICSE '06: Proceedings of the 28th International Conference on Software Engineering, pp. 492–501, ACM, 2006.

Quote: 66% of developers stated that understanding the code is the biggest development problem; 82% stated that it takes a lot of effort to understand the existing code

Robert L. Glass. Frequently forgotten fundamental facts about software engineering. IEEE Software. 18(3), 2001.

Quote: Maintenance typically consumes about 40 to 80 percent (60 percent average) of software costs.

Victor Basili. Evolving and Packaging Reading Technologies. In Journal of Systems and Software 38(1), pp. 3–12, 1997.

Quote: 50% of effort is spent in reading the code

So, after four decades, we can observe that not much has changed besides learning how to measure the “figuring out” time.

So what?

Well, that is the single largest expense we have. If we want to optimize anything in our discipline, we should look at this part first. We often talk about how we build systems, but how often do we talk about how we spend the “figuring out” time? If we do not talk about it, it is not explicit. If it is not explicit, it does not get optimized.

If we do talk about how the “figuring out the system” time is spent, we notice that people spend it reading. In fact, as the above paper shows, comprehension is essentially measured as reading. The two are considered mostly synonymous.

So, how should we talk about how we figure out the system?

Given that not much happened for four decades, we should entertain the idea that maybe we should frame the problem differently.

This is where it gets interesting. Why do developers read code? Because they want to figure out the situation well enough to know what to do next. The intent is important. This is decision-making.

What is the alternative? Moldable Development.