Some software complexity cannot be destroyed, it can only be moved from one place to another.
Recognizing this type of complexity is a key skill in SW engineering in my opinion. Those who cannot spot it are themselves easily spotted. They are the ones swimming in layer upon layer of interface/class/factory/aspect as they struggle to get the ab initio complexity to disappear in a puff of refactoring logic.