Video version of this article: https://youtu.be/taY8q29bUn0

This premise reminds us that complexity increases exponentially with scale. See Programming complexity.

As the number of entities in our code increases, the possible number of interactions between them increases exponentially.

In other words, **any insufficient or imperfect processes during development will have an exponentially negative effect later**.

Our solution to that must be that we always keep complexity as low as possible, to minimize the effects of its exponential increase as the system scales.

This article is part of the "Programming first principles series":

- Purpose - What this series is about
- Audience - Who this series is for
- Requirements of software
- Premise - Minimal information
- Premise - We must understand what we're doing
- Premise - Minimize propagating changes throughout the system
- Premise - Complexity increases exponentially with scale (this article)
- First principle - Proof that code works
- First principle - Principle of least astonishment
- First principle - Principle of least knowledge
- First principle - Separation of concerns
- First principle - Abstraction
- Side effects

Also suggested: