“Houston, we’ve got a prob…we’ve got a *learning opportunity”

The classic Stem Gem (v4) in Joshua Tree

If you haven’t tried climbing, it’s amazing, it’s freeing, it makes you strong physically and mentally…it is also profoundly difficult to improve beyond average.

There are a few types of climbing, bouldering being my favorite. Bouldering is essentially reducing a longer traditional roped climb down to its hardest and most technical parts. No rope, no chalk bag, just your shoes and you.

In bouldering, the specific climb you’re working on is called a problem. You’ll see people go mad trying to solve their own, driving their bodies back up the wall, only to approach the problem in the same way with little rest or thought in between. As you can imagine with such an approach, expletives will be let loose, excuses will be made, a chalk bag thrown, the weather blamed, so on and so forth with no real lessons learned other than to not try that again for fear of embarrassment.

A recent discussion on LinkedIn touched on coders coping behaviors when stuck in debugging hell, which reminded me of some parallels on the wall. Having spent the last seven months in a front end developer bootcamp for 80+ hours a week, I saw and sometimes participated in the parade of outward anger, self-hate and defeatism. Problems was life.

There are more than enough posts on the concept of ‘failure’, and how it’d behoove us to reframe its traditional understanding (in other words, *use* failure to your advantage, learn from it) — so I won’t go into that. I will talk about problems though.

Perhaps a problem is a special little thing, just for you, tailor made to examine your own weaknesses. No wonder it can make us rage.

What is a problem, even? What makes it, a problem? Is a problem universal? Is my problem also a problem to you or vice versa? Hmm. See what’s happening? What if a problem is an illusion, or contextual — only taking shape in the eyes of the beholder?

If that’s the case, well, there is no ‘winning’ a problem — there is no ‘pinnacle’ moment. A problem presents one with potential learning. A problem is a puzzle blocking the way to a reward, and that reward being the act of learning by solving that puzzle. Oh life, so curious.

When someone screams at an inanimate climbing wall — what learning was missed? When a developer pounds their precious mechanical keyboard into smithereens because of some unresolved bug —what learning was missed? It seems like there is a more glaring problem in these common scenarios.

In the effort to turn our heads away from our own perceived failures, problems of their own sort I suppose, we fail to derive any learning from the problem at hand — which in my opinion is why the problem exists. In that, where nothing was learned or improved on, where we refused to accept the challenge inherent in betterment, there is a loss.

Relentlessly crushed by this difficult problem in Joshua Tree — I’ll be back (Pigpen v4)

After 6 years of climbing, you better believe I’ve encountered innumerable problems that have stumped me harder than a lvl 3 CodeWars RegEx + 2d matrix kata (luckily katas don’t demand blood and sweat). Some I’ve solved, some I’ve let go, some I keep coming back to. Sometimes I fall off easy things, sometimes I forget a { or a ), even after all this time. But those instances are like old, wise-cracking friends who like to point out my silliest parts (really? that 2 hour bug hunt was because you forgot {} !== false?).

One must read the rock, to try and understand what it’s telling you. If the hold is pointed in a strange way, how do I orient my body to make use of it, what do I need to remember to do at the critical moment(s)? Analogously, read the error message, read the code, step through it in your mind and understand it, draw on what you know and extrapolate what you do know to what you don’t, seek guidance. Ignoring these important lessons in between climbing attempts or unit tests will quickly lead to the same place regardless of profession — that plateau of eternal mediocrity, or maybe less.

The greatest leaps in improvement on the wall or coding for me have occurred by carefully examining how the problem in front of me is stopping me, letting it show me what I didn’t know and humbly accepting the facts, and using that new knowledge to implement changes even if that means being a beginner again.

After all, playing a video game on god mode for more than a minute or two is pretty god damn boring.

Front End Dev student at Turing School