There will always be a reason why the complexity is needed; why it’s an improvement, how it helps things. We as developers are attracted to complexity like a magnet, like a bug attracted to a deadly electric zapper. It’s a rite of passage; complexity means we’re smart, that we thought of it, and that we can handle it. But every time we introduce complexity, we don’t realize until later the complications we’ve added with it. The edge case bugs. The half dozen oh-I-hadn’t-thought-about-that problems.

Sometimes complexity is the only way to achieve the desired result. But often it’s not. Often you have a choice. Choose to keep it simple.