DEV Community

Discussion on: How do you identify "over-engineering"?

Collapse
 
dfockler profile image
Dan Fockler

Over-engineering is often solving problems that are either future problems that don't actually exist, or solving problems that were caused because of previous code.

An example is a developing a custom templating language instead of using an ERB file. This is an example of a problem that doesn't exist, creating super customized, ultra-flexible systems that most likely will never be used to their full potential. Often these systems use layers and layers of abstractions in order to get 'clean' code.

Also be careful because the term "over-engineering" is used as a cudgel by people who want to talk smack about code they might not really understand or that feels complex to them, when in reality it might solve a problem really well. It takes a while to fully understand a complex problem, and a complex solution that solves it.