Dave Farley just put out a great video titled “Your Overengineering May Be A Problem.”
It may not play out the way you think it will from the title.
He talks about the all-too-familiar triangle that management likes to use. Fast, cheap, or quality: pick two.
The best research in our industry is revealing that you absolutely can have all three. In fact, if you start dropping any one of them, you start losing the other two as well.
Example, if your quality goes down, you’re probably going to spend a lot of time fighting fires and doing rework. Which means that it’ll also cost more to get your feature work done. You lose all three.
Build enough to solve your current problem, yes, but don’t salt the earth in the process. Don’t mistake following basic design principles like managing your coupling for over-engineering. Those things are just smart cricket.
I love the way Farley puts it: you’ve over-engineered when you’ve built hypothetical features and platforms that no one has asked for.
Building your system in a way that it can be changed in no way violates the You Ain’t Gonna Need It principle because you know you’re going to need to change things.
Unless you time-travelled from the future, of course.