10 Modern Software Over-Engineering Mistakes
if we plan for 100 things, Business will always come up with the 101st thing we never thought of…we have no clue what’s headed our way.
In my 15 year involvement with coding, I have never seen a single business “converge” on requirements. They only diverge. Its simply the nature of business and its not the business people’s fault.
- Prefer Isolating Actions than Combining
- Duplication is better than the wrong abstraction
- Wrappers are an exception, not the norm. Don’t wrap good libraries for the sake of wrapping
- Blindly applying Quality concepts (like changing all variables to “private final”, writing an interface for all classes, etc) is NOT going to make code magically better.
- In House “Inventions” – It feels cool in the beginning. But these are most common sources of Legacy in few years… There is a constant effort required to keeping this going. Even a tiny open source library takes a lot of time to maintain.
- Refactoring is part of each and every story. No code is untouchable
- Quality needs time and not just skill. And smart developers frequently overestimate their capability. Finally they end up taking ugly hacks to finish stuff on a self-committed suicide timeline. TL;DR — Bad Estimation destroys Quality even before a single line of code is written