Chapter 3. Architects Live in the First Derivative

In a Constantly Moving World, Your Current Position Isn’t Very Meaningful

Deriving the need for architecture
Deriving the need for architecture

Defining a system’s architecture is a balancing act between many, often-conflicting goals: flexible systems can be complex; high-performing systems can be difficult to understand; easy-to-maintain systems can take more effort to construct initially. Although this is what makes an architect’s work so interesting, it also makes it difficult to pin down what exactly drives architectural decisions.

Rate of Change Defines Architecture

If I had to name one primary factor that influences architecture, I’d put rate of change at the top of my list, based on reasoning about the inverse question: when does a system not need any architecture at all? Although as an architect this isn’t a natural question to ask (nor to answer), it can reveal what system property makes architecture valuable. In my mind, the only system that wouldn’t benefit from architecture is one that doesn’t change at all. If everything about a system is 100% fixed, just getting it working somehow seems good enough.

Now, reverting the logic back to the original proposition, it appears natural that the rate of change is a major driver of architecture’s value and architectural decisions. It’s easy to see that a system that doesn’t need to change much will have a substantially ...

Get The Software Architect Elevator now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.