“RTBQ! RTBQ!”. This is the phrase that my high school friends shouted at me when I asked them to remind me of the phrase they remember from school. Mr Fletcher was a larger than life maths teacher and “read the blinking’ question” wasn’t the only phrase he said.
He had a whole raft of these phrases, including “log off, and bog off”, being one of the more memorable ones. For me though, he was also the source of the phrase “keep it simple, stupid”. Not just because it was somewhat amusing, but because it was actually useful advice too.
This is a phrase that has always served me well when faced with any problem, especially with engineering problems. If it’s complicated then I’m thinking “why does it have to be this complicated”.
It’s always tempting to abstract everything away to the nth degree, optimise code or generally over-engineer a solution. If you don’t need it, don’t do it. Another way to put it is “more things should not be used than are necessary”, , essentially Occam’s razor.
Do the simplest thing that could possibly work. The best code, is no code at all, because you won’t need to maintain it.
“It really shouldn’t be this difficult” - Dan North
North explains that without rigorous care and attention software quickly becomes messy and unmanageable. Even with the best intentions entropy and complexity are a fact of life in growing applications.
This isn’t exclusive to computation though, it also applies in everyday life.
Let’s say you need to remove a padlock attached to a gate to gain entry, you can pick a lock, use a hammer or a hacksaw. You might think picking the lock is the simplest, however it’s a specialist skill that you need to learn or otherwise acquire. A hammer might seem simplistic, but then you might end up damaging more than just the lock, brute force isn’t all the simplest. Though it’s pure repetitive effort, the hacksaw is the simplest and most effective solution for this problem.
Sure, a hacksaw isn’t as elegant as picking a lock nor as impressive as smashing a lock with a hammer, but it’s simple enough that with enough effort you can achieve the desired result.
Ross Snyder, a senior software engineer at Etsy said, “if you’re doing something ‘clever,” you’re probably doing it wrong”.
Complexity is your enemy. Any fool can make something complicated. It is hard to make something simple http://t.co/QqrBEphH— Richard Branson (@richardbranson) September 3, 2012
I think it’s worth remembering that nobody ever asked for a more complex product, so keep it simple, stupid!