Why premature abstraction creates complexity
Abstractions should emerge from repeated, concrete cases — not from the expectation that they will be needed someday.
What is this? · Perspective
A reasoned position — with a thesis, the trade-offs and the case in which we would decide differently. Not a neutral overview, but a stance. Go to overview
What this is about.
Experienced developers spot patterns and want to encapsulate them. The reflex is well-intentioned, but it often leads to abstractions that cover a case that never materializes — and make the one real case more cumbersome.
Why we see it this way.
The wrong abstraction costs more than duplication
Repeated code is visible and easy to change. A wrong abstraction hides the repetition behind an interface, and changing that interface affects every caller.
Abstraction needs evidence
Only once a pattern has actually occurred several times do you know its real shape. Before that you are guessing — and you usually guess the exceptions wrong.
Indirection isn't free
Every layer costs readability. You read through it every time, even if you only ever really needed it once.
What it costs.
Waiting too long creates real duplication that is then tedious to consolidate. There is a point at which abstraction becomes overdue.
The right moment is a judgment call — it can't be written down as a fixed rule.
When we would decide differently.
When the shape of a pattern is dictated from outside and stable — an established standard or a regulatory requirement — we abstract early.
When the same change demonstrably has to be made in sync in three or more places, the abstraction is due.
Where we stand.
We wait for an abstraction to reveal itself instead of anticipating it. Duplication is a cheap intermediate state; the wrong abstraction is an expensive permanent one.
Continue your engineering journey.
Related concepts, decisions, playbooks and perspectives — as one connected path, not a list of links.
See it differently? Let's talk.
Perspectives are there to be challenged. If you see it differently — or have a concrete problem — talk to our management.
