Rock Climber's Guide to Coding

Posted by jessenovotny on August 17, 2016

Apparently I’m a coder now. A novice maybe, but a coder none the less. I’m still not sure yet if I chose this path or if it chose me. Some force certainly drew me to it.

I also happen to be a rock climber. You can find me at the local indoor climbing gym a couple times a week and on weekends I’m hauling my rope, carabiners, harness, etc. out to the local crags of Arizona.

You might be wondering, where I’m going with this; what’s the connection? Well, it all comes down to problem solving.

I actually grew up a couple miles from a famous crag in Los Angeles where people have been bouldering since the sport was first invented. The sad thing is, I didn’t try rock climbing until my early 20’s, and boy did I get the bug for it.

I’ve been climbing consistently for about 5 years. During which time, all of my previous recreational passions have fallen to the wayside; nothing compares to the bliss of problem solving alone on a wall of rock. What do I mean by this? Simply put, rock climbing is essentially the art of getting from the bottom to the top by using your mind and body to solve problems or sequences of moves.

When rock climbing in any fashion, you must evaluate your environment and your current status; how is your body positioned, where are your hands and feet, which way are you leaning, where can you possibly put your hands and feet to make upward progress. At any given moment, your brain is firing billions of synapses and engaging a neural network that’s been hardwired to analyze situations like these to determine the best possible move. Sometimes you’re right and you progress, otherwise you’re wrong and you fall. Not to worry, that’s why you’re equipped with a slew of safety equipment to prevent death and minimize the chance of injury.

The point is, your body and mind are working in tandem to figure out how to progress. Though you may not be breaking a sweat, the same is still true of programming.

When I started my Sinatra web app, I was given a blank slate and I needed to perform certain actions in order to realize my goal; a functional program. Just like evaluating all available holds, cracks, edges, seams, and surfaces in determining where to place my hands and feet next, coding involves knowing all the methods, objects, databases, and functions in your toolbox. Just as I place one hand in front of the other, I chain methods one after the other to achieve a desired return value. When you fail in climbing, you fall, get back up, learn from your mistakes and try the sequence again a little differently. In programing, Sublime Text and Terminal is my climbing wall and when I fail, my code breaks, I get an error, I evaluate what didn’t work, and I try something different. I find myself applying the same login I use for rock climbing to programming.

One of the most interesting books I’ve read on rock climbing is The Vertical Mind, which was written by a neuroscientist who studied what goes on in the brain when you rock climb and how to harness this knowledge to improve your climbing abilities. What I found so fascinating was learning how the brain creates and strengthens neural pathways. For example, when rock climbing, you may come across a move or sequence that is completely foreign, which will pose a real mental challenge. But once you move through that sequence a few times, your brain has developed a neural pathway so that when you come across a similar problem in the future, the brain can react quicker allowing you to progress without expending so much energy. This may be a novel concept but it’s true for just about everything in life.

As they say, “practice makes perfect”. The more you work at something the easier it gets. What’s interesting now is watching a new climber struggle up the easiest routes in the gym. It doesn’t mean they lack strength or mental tenacity, they’re brains simply haven’t created the neural pathways that enable one to be on the wall and know exactly how to move so as to progress upwards efficiently and gracefully. Rock climbing may be physical, but in many ways, it’s more like solving a rubik’s cube. Imagine the neural pathways engrained in a person’s brain who can solve one of those things in under a minute.

When I first started coding, I would take notes about almost everything because that helps me cement the knowledge. When I came across a challenge I would skim through my notes for the solution but as time went on this because completely unnecessary.

Solving problems in code is as simple as evaluating the tools in your kit and knowing how to use them. As it turns out, the same happens to be true of rock climbing. I sure have found myself caught up in some radical niches!