Problem Solving at 200 Feet

rock-climbing

About a year ago I started rock climbing, and before I knew it, my approach to software development had changed. You see, rock climbing is predominantly made up of engineers, which I believe has to do with the problem-solving nature of both activities. But it’s more than just that. As I learned how to rock climb, the way I approached problems quickly changed.

Taking your Time

Hanging on a rope, hundreds of feet in the air, you quickly learn to slow down when approaching your problem. You take your time, think about the paths you can follow and what you’ve done before, and then execute with as much control as possible. Each time you don’t do this, you’ll fall 20+ feet, hit the wall, and be forced to start over.

This constant reenforcement changes the way I approach all types of problem solving. When programming, this slower approach helps avoid stupid mistakes without the need for a 29-foot fall.

Trusting what you Make

I always see the question: “Would you fly on a plane running your software?” Which is basically asking, “Do you do good work and trust it?”

When rock climbing, you’re in charge of setting up your own rope and anchor systems, which you immediately have to trust your life on.

First, this teaches you to double check your work. Built into the practice is a pair check system to check your work with your partner. This check system teaches you to release some control of what you’ve done and be a little more humble which I feel makes you a better partner.

Second, climbing systems are put in place to help keep you from making simple mistakes, which could cost you your life. We use this same approach in programming, and I’ve started looking for more and more areas where I can create a pattern and repeat it.

Staying Calm

A few weeks ago, I found myself 80 feet up and out of energy. But by the time I realized it, it was too late to be lowered down and drink a Yahoo! — to get my energy back. Staying calm was all I could do. I slowly remembered the process I had put in place, safely finished what needed to be done, and safely lowered down.

I find staying calm is a practice that you can always work on. Staying calm helps writing software when dealing with an unexpected bug or when you have a disagreement with a coworker.

I got into climbing for fun and to stay in shape, and I didn’t expect it to change me as much as it has. I recommend it to everyone I meet and know, as it’s changed the way I approach most things in life, including programming.