Better Programming

Advice for programmers.

Follow publication

Member-only story

Overengineering: Why We Do It and 10 Ways to Tackle It

Amanda Woo
Better Programming
Published in
12 min readFeb 9, 2020
Less is more

More often than not, people act on the side of caution rather than taking a risk. It’s human nature to be risk-averse.

When developing software products, this sometimes creates more complexity than necessary. And other times, the necessary details are skipped which results in an under-engineered product. The balance is non-trivial.

Max Kanat-Alexander explains that overengineering is “when your design or code actually makes things more complex instead of simplifying things.”

“When your design or code actually makes things more complex instead of simplifying things, you’re over-engineering.” — Max Kanat-Alexander

Overengineering software products is the norm and often happens without realizing immediately.

One reason for this is that we’re focused on continuously delivering value whilst managing the pressures of deadlines, competition, uncertainty, and ambiguity that comes with developing software.

As a result, the overengineering has a negative impact on a team’s productivity because the burden of additional complexity must now be managed.

It’s more time-consuming, takes our focus away from working on the “cool stuff”, and further adds to the pressure of already tight deadlines. In the end, reaching the defined business objectives and goals becomes more complicated to achieve.

As a product manager, it’s crucial to be able to detect when your product is being overengineered since it can affect your ability to move fast. One of the common symptoms of overengineering is confusion about the product’s direction. I’ll elaborate on more symptoms shortly.

The reality is that we’re not going to be able to prevent or eliminate overengineering because of the innate traits of being human. We’re naturally biased. Quick, automatic thinking is in our nature. But that’s no excuse for ignorance.

Here, I’m going to share my thoughts on why we tend to overengineer software products, what it looks like, why it’s a problem worth…

Create an account to read the full story.

The author made this story available to Medium members only.
If you’re new to Medium, create a new account to read this story on us.

Or, continue in mobile web

Already have an account? Sign in

Amanda Woo
Amanda Woo

Written by Amanda Woo

Product Lead, AI @ Meta | Ex-Founder of Interesting By Default & Atumio | Obsessed with technology, products & people

No responses yet

Write a response