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:
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:
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…
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.
In our case, we can:
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.
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!