Doing things right vs wrong

January 07, 2021

You can put most programmers on a spectrum.

There are the ones that do things in the most general, beautiful, reusable way ("the right way"), and the ones that make it work to make it better later ("the wrong way").

When you are learning, using the right way is an advantage. It lets you go deeper on topics and improves your understanding — it's deliberate practice. It also helps in big teams, when more people will spend time reading your code than you will spend writing it.

When you are a scrappy company searching for product-market fit, too much of the right way can kill you, though. The wrong way usually makes you faster in iterating on the product, shipping value to customers, and solving real problems.

Unsurprisingly, too much of the wrong way can kill you too. Having inscrutable systems that you don't understand will slow you down to a halt.

For me, the biggest learning in shipping and iterating on many projects has been the ability to recognize lagom — a Swedish word that means "not too much, not too little, just right."

Having a spidey sense for when something is unnecessarily complex, prematurely optimized is a skill many programmers don't have. Knowing when something is unnecessarily sloppy is important too, but possibly less so.