“Modern Software Over-Engineering Mistakes” is a nice collection of examples, results and reviews of over-engineering mistakes of the modern day.
Few things are guaranteed to increase all the time: Distance between stars, Entropy in the visible universe, and F*cking business requirements .
Here’s the list of things discussed in the article with tl;dr (too long; didn’t read) summaries:
Engineering is more clever than Business
TL;DR — The House (Business) Always Wins.
Reusable Business Functionality
TL;DR — Prefer Isolating Actions than Combining
Everything is Generic
TL;DR — Duplication is better than the wrong abstraction
Shallow Wrappers
TL;DR — Wrappers are an exception, not the norm. Don’t wrap good libraries for the sake of wrapping
Applying Quality like a Tool
TL;DR — Always take a step back and look at the macro picture
Overzealous Adopter Syndrome
TL;DR — TL;DRs should not be used everywhere
<X>–ity
As in configurability, security, scalability, maintainability, extensibility, etc.
TL;DR — Don’t let <X>-ities go unchallenged. Clearly define and evaluate the Scenario/Story/Need/Usage.
In House “Inventions”
TL;DR — Reuse. Fork. Contribute. Reconsider.
Following the Status Quo
TL;DR — Refactoring is part of each and every story. No code is untouchable
Bad Estimation
TL;DR — Bad Estimation destroys Quality even before a single line of code is written