The Simplest Thing
When working through problems, the most impressive creators to me aren’t those that divine an entire solution in their brain for an hour, then slam out a perfect result (spoiler: this doesn’t exist outside of the occasional savant). I love to watch people who are great at avoiding the temptation to overcomplicate. People who can break problems down into components. People who can simplify complex problems by isolating parts, and blocking and tackling.
I enjoyed this, from an interview with Ward Cunningham (programmer and inventor of the wiki):
It was a question: “Given what we’re trying to do now, what is the simplest thing that could possibly work?” In other words, let’s focus on the goal. The goal right now is to make this routine do this thing. Let’s not worry about what somebody reading the code tomorrow is going to think. Let’s not worry about whether it’s efficient. Let’s not even worry about whether it will work. Let’s just write the simplest thing that could possibly work.
Once we had written it, we could look at it. And we’d say, “Oh yeah, now we know what’s going on,” because the mere act of writing it organized our thoughts. Maybe it worked. Maybe it didn’t. Maybe we had to code some more. But we had been blocked from making progress, and now we weren’t. We had been thinking about too much at once, trying to achieve too complicated a goal, trying to code it too well. Maybe we had been trying to impress our friends with our knowledge of computer science, whatever. But we decided to try whatever is most simple: to write an
ifstatement, return a constant, use a linear search. We would just write it and see it work. We knew that once it worked, we’d be in a better position to think of what we really wanted.
The most impressive software engineers I’ve worked with have a knack for this type of chewing through work. The simplest thing usually isn’t the cleanest, fewest lines of code, fewest moving parts, or the most well-tested. Simple means “does a basic function”, something you can categorically check and verify, something a collaborator can easily understand.
Sometimes you just need to first do the Simplest Thing before you can find the Correct thing.