The complexity of non-trivial software goes beyond what a regular person can model in their head.<p>You can break things up into &quot;modules&quot; of functionality. Mental models are themselves abstractions. But eventually, some part of a large enough system becomes so complex that even the abstractions of those indivisible components become too complex.<p>This is becoming a greater problem as computers, and networks become more powerful, fast and pervasive. Complexity management is the new game, <i>not</i> efficiency.