Will Clarke

Perfect is the enemy of the good


Software Engineers tend to be guilty of over-engineering. This isn’t too surprising. They likely got into engineering because they liked engineering.

Everything is a tradeoff. One tradeoff that we all have to make when building things is:

 SCRAPPY <-------------------------> PERFECT

+ quick to build                 - slow to build
+ faster product feedback        - slower product feedback
+ easy to throw away             - expensive to pivot
- unstable                       + stable
- unmaintainable                 + maintainable
- hard to change                 + easy to change
- unscalable                     + scalable

Businesses should treat both extreemes with the same caution. Tech debt can sink companies. And an inefficient tech team that’s overengineering can too.

Startups should generally transition from scrappy towards perfect as they scale and find product-market-fit.

On the whole, I think that good software engineers err on the perfect end of the spectrum. Depending on the circumstances, this can be vital, but can also be wasteful.

It’s worth thinking about this tradeoff and whether your tech org has got the right balance.


efficiency tech