Back
Development 27 Apr 2026 4 min

When Clean Architecture is Needed

Clean Architecture is one of the most overrated things at the start and the most underrated over the long run. Let's figure out when it's a tool and when it's a hindrance

When Clean Architecture is Needed

Trap

Clean Architecture is one of the most overrated things at the start. And one of the most underrated over time. The problem is that it is either idolized or completely ignored. Both options are mistakes. I have seen projects where a small team on a simple product built a full-fledged DDD with Clean Architecture, a bunch of layers and interfaces. The result: slow development, not everyone understands the structure, high entry threshold. And the main question is - why?

The balance between chaos and overengineered architecture

MVP does not need Clean

If you have a startup with 1-2 people and you're writing an MVP, you don't need Clean Architecture. At all. Your task at this stage is to quickly test the hypothesis, roll out features, and understand if there is a product at all. In this context, layers, DTOs, interfaces, and domain separation are just a slowdown.

Many try to "do it right from the start so they don't have to redo it later." Sounds logical. In practice — no. You don't know what the product will be like, where the load will be, and what will remain. And you start designing for a future that doesn't exist yet.

Where Clean is Really Needed

Clean Architecture is needed when the product grows, a team forms, turnover begins, and the code lives for a long time. In this scenario, it provides a predictable structure, quick onboarding, and manageable changes. A simple guideline: if a new developer gets up to speed with the project in 1–2 weeks, the architecture works. If not, you've just overcomplicated things.

There is also the opposite extreme: "we don't need Clean at all" — and they continue to grow. Then real problems begin: the code expands, dependencies intertwine, and changes become expensive. At some point, you have to rewrite.

A stable core and isolated architectural layers
Good structure does not slow development; it limits the cost of change.

Evolution, not religion

The right approach is evolution. Start with simple code, a quick MVP. Then comes understanding, bottlenecks, and only then is structure introduced. Clean Architecture is not a "switch on a flag." You don't have to do everything at once: domain, DTO, mappers, repositories. You come to this when there is a real need.

And yes, it's better to write tests right away, as they allow you to safely change the code and gradually introduce structure. The main question is always: does this speed up development now or slow it down? Developer maturity is not about "always doing it right." It's about understanding when exactly it is needed.

architecture

More on this topic

Latest published materials from the same category or adjacent topics.

Learning to Befriend Someone Else's Code
Development 27 Apr 2026

Learning to Befriend Someone Else's Code

Reading someone else's code for the first time is almost always stressful. But there is an algorithm that removes the chaos and provides an entry point

Read
Boilerplate is not evil
Development 27 Apr 2026

Boilerplate is not evil

DTOs, mappers, layers, and model separation seem unnecessary when the system is small. But as the project grows, boilerplate limits the area of changes, makes the code predictable, and speeds up the team's work

Read
Numbers Never Lie
Development 27 Apr 2026

Numbers Never Lie

How metrics changed my approach to optimization. A real case: from 'something is slow' to a 2-3 times increase in conversion through specific data

Read