Simplest Thing That Could Work

Simplest Thing That Could Work

It seems like I have been giving the same piece of advice lately: Start with the simplest thing that could possibly work and only add complication as you need it. Sometimes our natural tendency is to plan for all eventualities. We get so caught up planning for what might happen, that we miss the simple solution that is right in front of us. In both climbing and coding, it is possible to overcomplicate things.

Learn From the Pros

I recently read a book, “The Mountain Guide Manual”. It was quite eye-opening. After climbing for 20 years, I thought I knew it all and had seen it all. I was wrong. It was really interesting to me that as an advanced book, it really stripped everything down to its essence. The book illustrates a lot of really simple techniques. Of course, they all happened in a specific order, and that ordered mattered, but the techniques themselves were simple enough that a beginner climber could easily master them. The difficulty lied not in the individual actions, but in having a plan; in stringing all these small simple steps together to achieve some ultimate goal.

Don’t Get Distracted

Climbers like coders tend to get distracted by the latest shiny objects. My friend Matt calls it the “Magpie Syndrome” -always looking for the latest shiny thing to add to the nest. For climbers, it is having the latest gear, fancy tethers, and the lightest carabiners, or showing off their knot-tying skills with the latest trendy knot. For programmers, it’s about fancy tools and the latest framework. If you want to see the peak of this look at how many different Javascript frameworks there are and how often they go in and out of style.

Stay down to Earth

The classic case of overengineering in programming is the architecture astronaut. This is the person who tries to make their code so flexible, it can adapt to anything. It can be a fun challenge to design such a complicated framework. It all looks pretty and the wires are all straight, but that’s just appearances. There are so many layers of dynamic dispatch that it is impossible to tell what code is actually running. If all that complexity is not needed, it just distracts from the main purpose of the code, makes it harder to read, and introduces more opportunities for bugs.

There’s no new fundamentals

We often forget that the key to being a master is to master the basics. I used to take judo lessons from Kyu Ha Kim. Back when he competed, he had just one basic move, Osoto Gari. It is one of the first moves you learn in judo (after you learn how to fall). He practiced that one move so much, that everyone knew that was his move. He had perfected it so much that they still couldn’t stop him. Instead of learning fancy new techniques, focus on mastering the basics.