Stand with


Newsletter sent on Thursday, Jan 26, 2023

Why leaked abstractions cause planning hiccups and how to prevent that?

When creating new things, we often resolve abstractions, i.e. make less abstract from more abstract. We do it in various ways: identifying the underlying principles, properties, or components of a more abstract concept or providing examples or counterexamples. Or planning. One needs to identify the goals and objectives and break them down into actionable steps when planning. This process is, in fact, the resolution of abstraction.

Abstractions are exciting. You may remember by now the classical “Law of Leaky Abstractions” that @spolsky described in 2002 in his blog post.

“All non-trivial abstractions, to some degree, are leaky.”

What my experience tells is:

  • No amount of insulation between abstraction layers will prevent such leakages;
  • The most likely place to leak is the place of a risky faulty assumption;
  • Check these places in isolation (before it starts raining).

Imagine the activity of painting a wall (less abstract), which emerged from a plan to improve your house (more abstract), which is how you want to enhance the comfort of grandparents visiting your home for your daughter’s birthday, for that you want to paint walls and install new furniture. Let’s say that there are two constraints for this project:

  • Deadline: daughter’s birthday;
  • Order: Furniture must arrive when walls are dry;

Thinking in sequences

A trivial approach to planning would be to sequence the steps (already hard enough if you’ve little experience with home renovation projects) and start working. However, standing on the ladder and making strokes, you’re likely to see that the paint dries quicker than you expected, but will you be able to connect this observation with the higher-level plan and see that because of that and the sunny week, you can pick that more convenient option for furniture delivery and have the room finished in a week instead of 4 weeks?

Or, having spent a few days buying paint, you went into furniture-choosing mode and got stuck waiting for feedback from your family for a few days. In the meantime, all delivery slots for the upcoming month disappear…

Example of thinking in sequences

In short, there are always a bunch of variables in your plan; they will change with time. Moreover, some variables depend on others and ultimately influence the outcome. Good abstractions hide variables or replace them with ones you can easily control. A cheaty way to do that is to pretend that some variables are not there and others are not significant. When you think in sequences, you isolate “chunks” of the plan without considering the variables, assuming they are constants or underestimating their impact. They will cause leaking. However, it’s totally in your control to decrease the number and the size of such leaks!

What it takes is adopting a different mindset and sprinkling some lightweight discovery execution into the planning phase. In my experience, however, the 20/80 rule works well there, and you can make significant progress with little effort.

But how do you find those assumptions that will prevent most of the leaking? Let’s follow up on our small example.

Example of thinking in causality

  1. Think causally and visualise. Consider not just the task, but include the context too!
  2. Find critical assumptions and break them further down. You can ignore trivial ones but pay close attention to high-impact and high-probability signals.
  3. Analyse and find ways to validate if your assessment of probability is correct. Make educated guesses.

Causal relationships between assumptions

In our case, we can:

  • Check the weather forecast;
  • Choose and purchase the paint early, make a few strokes and see if the declared time of real drying time matches the one on the can;
  • Read the public reviews of the furniture store and see if they often have delays;
  • Check the booking system and see what delivery slots are available right now;

When having this information, your planning will be much more accurate. Of course, software products are slightly more complex, but that is why you should use techniques like this when planning them!

Closing thoughts. It’s very non-trivial for an individual to simultaneously reason on two levels of abstraction. However, group thinking can often be more effective than individual thinking when solving complex problems requiring multiple levels of abstraction! I’ve witnessed many times how working in a group allows for different perspectives and expertise to be brought to the table, which can help to identify and understand various aspects of the problem.

Share on Twitter | Browse archive

Find this useful? I send out a short email every couple of weeks to help innovation-minded product and tech executives, directors and business owners to deliver more user value faster and with less risk. Join the evergrowing club of my subscribers.

✅ Subscribed! ✅
Words of wisdom are coming your way.

| Absolute Value |

Hi! I'm Mike Kotsur, a software consultant deeply passionate about technology and innovation. During the last decade I've helped many startups, innovation labs and product incubators to validate and develop business ideas from scratch into well-founded software systems valued by users and customers.

I can help you with your next innovative software project!

Schedule a free video call to discus a project, follow me on LinkedIn or subscibe to my bi-weekly newsletter to stay in touch.