When an application is in its infancy, its developers may be able to keep a complete mental model of the whole system. Changes to the system are relatively easy to reason about, easy to implement, and easy to verify they’re working as intended.
However, most applications change over time. And as they grow, developers lose the ability to keep a complete mental model of the whole system. When that happens, ...