← All notes
Jun 2026·algorithmsclimbing

Climbing Routes and Graph Search

A climbing route resembles a graph, but the comparison is not perfectly clean.

The holds can be treated as nodes. The possible moves between holds can be treated as edges. Body position is part of the state. The anchor is the goal. Beta is a saved path through the problem that another climber found and explained afterward.

That description is useful, but it leaves out the annoying part. I do not get to see the whole graph before I start.

From the ground, the route is only partly readable. A hold can look good from below and feel bad once I touch it. A foot can look irrelevant and then become the entire reason a move works. Chalk can help, but chalk can also mark somebody else's bad idea. The wall gives information unevenly, and it often gives the most important information after I have already committed to a sequence.

Route-reading is a kind of heuristic search under uncertainty. I estimate which moves will be expensive. I look for positions that seem stable. I guess which holds are directional. I try to find rests. I decide whether a sequence wants strength, balance, flexibility, or a body position I have not understood yet.

Then I start climbing, and the wall corrects the model.

That correction is physical. A hold is worse than I predicted. A foot is better than I predicted. A move that looked powerful turns out to depend on hip position. A move that looked technical turns out to be a simple pull if I use the right foot. The route keeps replacing my imagined graph with the real one.

The comparison to graph search becomes more interesting when backtracking enters the problem. In a normal algorithm example, taking a wrong branch can be cheap. The program can return to a previous node and try another path. On a climbing route, a wrong branch has a cost that stays in the body. Reversing a move may take more energy than making the move in the first place. Sometimes reversing is not possible. Sometimes I can reverse the move, but I am now too tired to climb the correct sequence well.

That means the search has memory. My previous choices change what I can do next. The route is not only a graph on the wall. It is also a changing graph inside my forearms, shoulders, skin, breathing, and fear response.

That is the part that transfers to software for me. I do not mean that climbing is secretly Dijkstra's algorithm. I mean that climbing trains a habit of thinking in state, transitions, cost, and commitment. I ask where I am, what options are reachable from here, what each option makes easier, and what each option makes impossible.

That question appears in programming all the time. A team can choose an architecture because it seems fast now, and that choice can make future work slower. A developer can patch a bug in a local way, and that patch can create stranger behavior later. A system can move into a state that is technically valid but hard to escape.

Climbing also makes risk easier to think about because the difference between fear and consequence becomes concrete. Some moves feel scary but are safe. Some moves feel casual but have a bad fall. My fear is useful information, but it is not the whole analysis. I still have to inspect what actually happens if the move fails.

Software has the same problem. Some changes feel risky because they are unfamiliar. Other changes feel safe because they are routine, even when the blast radius is large. The feeling attached to the action is not enough. I have to inspect the fall.

I like climbing because it makes abstract ideas less abstract. On the wall, graph search is not a diagram. It is a sequence of choices made with limited information, limited energy, and real consequences for choosing badly. That is closer to engineering than the clean version on a whiteboard.

Next

Software Is Toolmaking