DEV Community

Salisu Adeboye
Salisu Adeboye

Posted on

More abstractions meant better Engineering

I used to think more abstractions meant better engineering. I was wrong.

Early in my career, I spent a week building a "perfectly decoupled" system. I used the Repository Pattern, three layers of interfaces, and custom factories. I was proud of itβ€”it was "future-proof."

Six months later, I had to add a single is_active flag to the user profile.

Because of my "clean" architecture, I had to:

  • Update the Interface.
  • Update the Repository implementation.
  • Update the Data Transfer Object (DTO).
  • Update the Service Layer.
  • Update the Mapper.

I spent two hours doing what should have taken two minutes. I didn't build a flexible system; I built a cage.

What I learned:
Every abstraction is a "maintenance tax." If you don't have a specific reason to pay that tax today, don't build it. Now, I follow a simple rule: Start with the messiest, simplest solution that works. Only abstract when the pain of the mess becomes greater than the tax of the pattern.

Have you ever "over-engineered" yourself into a corner like I did? How do you decide when a pattern is actually worth the extra files?

Top comments (0)