overengineering
https://www.reddit.com/r/ExperiencedDevs/comments/rwtf29/how_do_you_avoid_overengineering/
You start a new project with a code base you know you are going to throw out. You make it neither pretty nor optimized. You do the bare bones minimum to get the main feature you need to work in some small way.
I got told by a boss recently that if you are having fun creating the solutions it’s most likely over engineered.
Simple code should be boring lol
Something that helped me was to always ask “why does this decision need to be made now?”. This helps prevent making decisions too early, thereby over engineering.
In my experience, overengineering comes from a lack of requirements (e.g. Will this code need to handle 1 transaction a month or 1 million transactions a second?), and a lack of a shared values in the group regarding code quality, definition of done, company culture etc.
We went to the product owner and asked more detailed questions - turns out the edge case was quite common. What was “over-engineered” became “required” based on their feedback.
https://www.reddit.com/r/AskEngineers/comments/1dyaus6/misuse_of_the_word_overengineering/
I’ve thought this for awhile. Nearly everything accused of being “over-engineered” is more accurately described as “under-engineered.”
https://www.reddit.com/r/programming/comments/16zurij/overengineering_is_a_developers_cry_for_help/
My experience tells me if we anticipate requirements, 99% of what we anticipated never happens, and we built a more complex solution that is harder to maintain for nothing. I also don’t understand this obsession for getting it right the first time for all possible future requirements. The whole point of software is that it’s soft, it’s changeable. I’d rather build for requirements that I have now and adjust for new ones as they arrive, otherwise I’m ripe for making wrong abstractions and anticipating wrong changes.
I’m sorry but over engineering is fun.
I love overengineering solution.
Because simplicity is only achieved (perfection) only after you know what does “overengineering” look like and lessons learnt on how and when to avoid it.
There’s no shortcut when it comes to simplicity in software engineering.
Examples of those ones who underestimate of “overengineering”, is half-baked solution which will eventually block you from achieving next-level user experience.
TLDR is: those who don’t know what does “overengineering” look like, those who don’t appreciate simplicity.