Skip to main content

Good architecture depends on the context 🗺️

Lineart illustration of a map

A good architect builds the system that the client needs, not the one they want to build.

You cannot judge an architecture as good or bad without considering the context for which it was created. This article provides advice on how you can take context into account and make architectural decisions that truly matter.

  1. Know your domain. To be effective you need to know the field you are working in. Make sure you understand the problems, existing solutions, customer and users. Explore options so you can make an informed decision.

  2. Solve actual problems. Don’t solve generic problems, nor every problem you can think of. Only solve the actual problems at hand. It does not matter how well you build it if you do not build the right thing. There is no gold medal for following best practices or reference architectures which adds no value. Generalize only when needed—premature generalization makes a system more complex and difficult to understand and maintain.

  3. Find the architectural drivers. These are the technical constraints, business requirements, and other factors that shape the way the system is built.1 Focus on those which have the greatest potential to affect the architectural decisions. Properties (“non-functional requirements”) often shape architecture more than functionality.

In the end, a good architecture isn’t about elegance or patterns—it’s about solving the right problems in the right context.


  1. The FURPS+ model can be used to identify architectural drivers. ↩︎