Do you think "over-engineering" could be a contributor to an unmaintainable code base? Also, do you think TDD is key to faster/cleaner iterations?
TDD and also code analysis tools can help highlight what you actually need and what you don't.
The converse is true too, if you under-engineer you run the risk of not easily being able to scale up to new requirements.
Over-engineering creates an albatross where you'll fall under your own weight (too much code, slows down development, possibly bad performance, harder to debug). Under-engineering creates a house of cards that is fragile (more buggy, code gets duplicated and patched on, frustrating to work on, hard to refactor).