Tech News
← Back to articles

It's not a hack to satisfy known requirements

read original related products more articles

And you should even take pride in doing less

I so frequently see extremely capable software engineers waste their skills with over-engineering, and it makes me feel sad. Here are some tips to help avoid the over-engineering trap, and so also to help keep me happy 😀.

Find out what is seen as valuable

We're not here to write code, but to solve problems. Find exactly what problems you are expected to solve and focus on those. Remember that code that clearly solves just those problems is in no way a hack.

Deliver value as often as possible to get feedback

Frequently delivering value is a great way to avoid over-engineering. It basically gives you regular course correction towards appropriate-engineering, because you quickly and frequently find out if there is no value for the code you're writing.

I generally argue for at least daily delivery of value; see the "Deliver value daily" manifesto (which I co-wrote).

Write and maintain integration tests that survive refactoring

One of the worst pieces of advice that I ever received was that every function should be unit tested. This is the path to designing code that you never want to change because no matter what change you make, tests will break, and thus leads you to trying to handle every possible future up-front. Please, I beg you, no.

Instead, write higher level tests close to the client/user facing behaviour that actually give you protection against breaking things unintentionally, and so free to you make changes later once you have evidence they're needed.

... continue reading