Empirical studies show that complexity tends to make systems harder to maintain, more likely to accumulate defects over time, and more costly in general.
So why aren't all systems made "simple"?
First, not all complexity can be avoided. Some complexity is inherent to the problem or domain itself. Even so, intuition often leads us to believe that simple solutions are easy to create. In reality, the opposite is often quite true.
Simplicity is difficult to achieve because it requires very careful design. It forces you to:
Taken together, these practices demand an upfront investment that is often at odds with today’s emphasis on expedience.
“I have made this [letter] longer than usual because I have not had time to make it shorter.”
- Blaise Pascal
Unnecessary complexity, on the other hand, is the default state. Systems grow messy if you do nothing to actively prevent it. Features accumulate, new tools and services get introduced, dependencies spread, and shortcuts pile up.
Chaos does not need much effort. Order does.
There are systems serving millions of customers that are operated by a handful of engineers, and systems with barely any users that require entire teams. Simplicity can make even very large systems economical to operate and maintain, while unnecessary complexity can make small systems expensive, fragile, and difficult to change.