Published on

Why care about architecture?

image
Authors
  • avatar
    Name
    David Jimenez
    Twitter

We care about architecture because we want systems that evolve purposefully. This means that over time the system preserves desired characteristics defined at the start of the project while at the same time delivering more business value.

Most projects aim to create systems that are performant, maintainable, and scalable. If the system is left to grow organically, it's likely that it will lose one or more of those characteristics.

A system grows organically when its architecture has not been explicitly defined. This opens the door for developers to implement features in ways that may be inconsistent with each other. For example, one developer may choose to allow services to call each other directly; another developer, later on, may then decide that an orchestrator routing calls from and to services may be preferable.

In the end, because a key part of the architecture was not defined (that is, how the sysmtem's components may interact with one another) the system now follows different patterns. Is that a bad thing? In my experience, the answer is yes.

Following different patterns lead to systems that are hard to maintain because they are hard to understand. Implementing a new feature, or fixing a bug takes a long time because the changes introduce unxpected side-effects. In one scenario where I saw this happening, the organization attempted to increase productivity by hiring more developers. Unfortunately, throwing more developers at the code base only exacerbated the problem.

By defining an architecture, and adhering to it, allows systems to evolve in a matter that keeps them maintainable over time. This is because developers know what components the system has, and how those components are supposed to interact with each other.