Tudor Girba Profile picture
22 Jan, 18 tweets, 7 min read
“Developers spend most of their time figuring the system out."

Let’s dissect this a little.

🧵

1/
The oldest reference on the topic I know of dates back to 1979:

Zelkowitz, Shaw, and Gannon. Principles of software engineering and design. Prentice-Hall Englewood Cliffs, 1979.

2/
It said that most of the development time was spent on maintenance (67% in the book).

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.

3/
So, how far are we now, more than 4 decades later?

Let’s look at this recent paper:
Xia, Bao, Lo, Xing, Hassan, & Li. Measuring Program Comprehension: A Large-Scale Field Study with Professionals. IEEE Transactions on Software Engineering, 44, 951-976.

4/
This paper describes in great details how the figures are obtained.

And it says that Comprehension took on average ~58%.

Now, take a closer look at the third column in the table: it says Navigation (24%), and that is considered separately from the Comprehension effort!

5/
So, after 4 decades, we can observe that not much has changed beside 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.

6/
We talk often about how we build systems, but how often do you talk about how you spend the “figuring out" time?

If we do not talk about it, it’s not explicit. If it’s not explicit, it does not get optimized.

7/
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 also shows, comprehension is essentially measured as reading! The two are considered as mostly synonymous.



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

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

Please, bare with me. This is where it gets interesting.

9/
So, why do developers read code?

Because they want to figure the situation enough to know what to do next. The intent is important. This is decision making.

From this perspective, reading is just the means through which information is gathered from data.

10/
Now, before you can do something significant about anything, you have to name it. Otherwise it's like with Voldemort.

So, many winters ago, I called the “figuring the system out to know what to do next" effort assessment. And I said we should optimize development around it.

11/
For a whole decade my colleagues and I explored this idea. And it led us to #MoldableDevelopment.

What’s that?

Reading is the most manual way to extract information out of data. It does not scale and leads to incomplete information & uncertainty.



12/
Software is hard enough. Not knowing what the current system is like should not be an acceptable variable in the equation.

A hand drawn picture about the current system is a belief. Decisions should not be based on beliefs. Not in engineering.



13/
So, how does #MoldableDevelopment work?

Once we accept that systems are data, it becomes obvious we should approach it like data, too. How do we do that?

Data science tells us that you first start from the problem and then reason through a tool that matches the context.

14/
The key idea of #MoldableDevelopment is that the tool is custom built after knowing the problem. Hence it’s contextual, and because of it, it can take care of the boring part of reading.

Of course, for this to be practical, the cost of creating custom tools must be small.

15/
I see the flow of constructing custom tools during development, and, ideally, for every single development problem, as the next major leap in software development.



16/
In a decade from now, we should not be measuring the "figuring the system out” in terms of reading. We should occupy our energy with solving actual problems.

To get there we should start by talking about how not to read code.

We cannot afford not to.

17/
We created #gtoolkit to provide a concrete start for the "how not to read code" conversation.

Go to gtoolkit.com. Play with it. Feel #MoldableDevelopment.

And engage with us:
discord.gg/FTJr9gP

Let’s make that conversation happen.

18/18

• • •

Missing some Tweet in this thread? You can try to force a refresh
 

Keep Current with Tudor Girba

Tudor Girba Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

PDF

Twitter may remove this content at anytime! Save it as PDF for later use!

Try unrolling a thread yourself!

how to unroll video
  1. Follow @ThreadReaderApp to mention us!

  2. From a Twitter thread mention us with a keyword "unroll"
@threadreaderapp unroll

Practice here first or read more on our help page!

More from @girba

5 Apr 20
The governor of New Jersey called explicitly for COBOL programmers to help with the development of the unemployment system:


This is how the software environmentalism crisis looks like. An explanatory thread. 1/
In the software development industry, we focus exclusively on building systems. The conversations are dominated by new languages, new frameworks, new deployment options. And the body of software grows exponentially. At the same time, we are unable to remove old systems. 2/
From this perspective, our software industry behave not unlike the plastic industry: we focus on building without any regards to recyclability. That is not sustainable. And, given the breadth of software’s reach, it is not responsible either. 3/
Read 44 tweets

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3/month or $30/year) and get exclusive features!

Become Premium

Too expensive? Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal Become our Patreon

Thank you for your support!

Follow Us on Twitter!