Reason Under Pressure

The Essence of Abstraction


A word that we hear and speak all the time, and that is ever-present in discussions and technical exchanges among our peers.

A concept so fundamental, that it is at the root of almost every construct in software development, without which we would certainly be lost in a raging sea of complexity.

But what exactly is an abstraction?

One would rightfully think that the very people for whom this word is so dear and by whom it is so often used, when asked this question would promptly provide a clear answer.

But, alas, like many other terms with a similar status in software development, this is simply not the case.

Stop and think for a minute.

How would you define abstraction?

Has anyone ever given you a precise definition of it?

Although concepts can still be remarkably useful even when we lack a precise definition for them, there is a certain power that comes with tracing clear-cut boundaries around concepts.

Dealing with fuzzy concepts is like looking at an object through an unfocused lens: the object seems blurry and we can't quite make out its details, it's hard to tell where it begins and where it ends.

By making our definitions more precise, we're focusing our metaphorical lens and thus sharpening the images we see through it.

So let's do an in-depth exploration of this question, where by doing so we'll understand the essence of abstractions, their properties, their role in managing complexity and their relation with other ubiquitous concepts in software development.


This situation where we're familiar with a term or a concept yet we can't quite define it is fairly common in our daily lives. I call it the "I'll know it when I see it" phenomenon and it's particularly noticeable when there is some kind of aesthetics at play.

A picture showcasing an example of interior design.

Photo by R ARCHITECTURE on Unsplash

Look at the picture above.

Although this may not be your preferred style of interior design, I believe we can agree that it is in some sense harmonious and well-designed.