from the book "A Philosophy of Software Design"
High complexity code causes change amplification, high cognitive load, and more unknown unknowns, when working with a codebase. These are costly and plunge engineers into a kind of sadistic coding hell.
Complexity is caused by dependencies and obscurity. Code is obscure when information required to work with the code is not provided.
Complexity is most often incremental, it sneaks up on the best of us.