Many modern systems are so large that no one truly understands how they work. Because these systems exceed the bounds of human understanding, different design teams must work on separate chunks, glue their work together, and hope that the whole thing behaves as expected. In this process, high-level architectural design patterns (such as hierarchies, modules, and abstraction layers) play an important role. By keeping complexity under control, they give systems the ability to scale, make them more able to evolve, and reduce the likelihood of unexpected side effects or integration problems.
Technical Debt in Large Systems: Understanding the Cost of Software Complexity by Daniel J. Sturtevant