Fighting against complexity in two ways:
- eliminate complexity by making code simpler and more obvious, for example, complexity can be reduced by eliminating special cases or using identifiers in a function.
- encapsulate complexity, programmers can work on a system without being exposed to all of its complexity at once by embracing POSD - Modular Design