Taking Large Steps is Like Leaping Across a Crevasse
Taking large steps like jumping across crevasses seems more efficient until you don't make it.
Many years ago, I took a NOLS course in Alaska. The whole experience was quite fun. I highly recommend it. In this course, we spent 2 weeks on a glacier, learning how to live on a glacier and navigate crevasse fields. It can be quite challenging.
Plotting the Route
The first thing we did was plot our route on a map. We knew where we were and we knew where we wanted to go. We had some idea where the hazards were. In this case, the hazards were crevasses, avalanches, and falling rocks. The avalanches and falling rocks were easy to avoid - we simply planned to stay off of and out from under steep slopes.
Avoiding crevasses is a little harder. Knowing a little about glaciers, there are certain predictors of where there are crevasses. Areas with sudden elevation changes or areas where the glacier turns tend to have more crevasses, so it's generally best to avoid those. It's also hard to get anywhere without crossing a few of those areas.
Dealing with obstacles as they arise
So we tried to plan a route to avoid crevasses where we could. Even with the best planning inevitably we still ran into some crevasse fields. When we ran into a crevasse, we had a couple choices.
Sometimes the choice was easy:
- Step over it - Sometimes the crevasses were so small, often only a crack a few inches wide is visible, that we could just simply step over them. We were still careful as sometimes the visible part can be deceiving. The walls can be overhung making the crevasse larger than you might think. Generally, if a crevasse was small enough to step across, it was a pretty easy call.
- Go around it - Sometimes crevasses were so large that we had no choice but to go around them. We ran into some that were 50 feet wide. No stepping across that.
Unfortunately, it is often more complicated:
- Cross a snow bridge - Sometimes there was a shortcut across the crevasse via a snow bridge. Deciding whether to trust a snow bridge was a complicated decision with many variables such as snow conditions, time of year, time of day, weather, and the size and shape of the snow bridge and crevasse. Sometimes we took the risk, sometimes we didn't.
- Jump over it - Sometimes a crevasse was too large to step across and still small enough that jumping across seemed possible. This was always one of the riskier options. There was always the possibility of someone attempting the jump and not making it.
Consequences
Crevasse falls, whether from a collapsing snow bridge or miscalculating when jumping across can be fatal. There's trauma from the fall and falling debris. There's also hypothermia to worry about. In the best case, your team is able to haul you out and you walk away scared but unscathed. Even then it still takes time to haul someone out. Ten to fifteen minutes is a fast crevasse rescue. It can take much longer.
The Fastest Route is Not Always a Straight Line
On a map, the fastest route from A to B is a straight line. In reality, a straight line is rarely the fastest route, particularly in a crevasse field. Sometimes the crevasses are too big to cross and you must go around them. When snow bridges and jumping are an option they may not be the best option. There is risk associated with each. Saving time by jumping over a crevasse may seem like the fastest option until someone falls in.
How does this apply to software?
The biggest mistake I see software developers make is taking too large a step. I was talking to Nancy about this and I mentioned taking large steps when writing software is like jumping over a large crevasse rather than going around it. If you make it, it can save you time. If you don't however, it can be quite painful and slow you down quite a bit. The safer bet is often to go around.
Software development is much like crossing a crevasse field. We know there are obstacles. We have an idea where they lie. We know the parts that are hard. We don't know exactly what the problems look like until we encounter them. Often the easiest way across them seems like a straight line. It seems like taking a large step and leaping across is the most efficient route. It can be if you make it. If you don't make it (and often we don't), the time spent debugging can easily surpass the time it would take to perform several smaller, less risky steps walking around the obstacle.
Many More Much Smaller Steps (MMMSS)
Another thought that just occurred to me as I am writing this is that jumping across a crevasse may not be reversible. Often there is a height difference between sides. Jumping across while heading downhill may be easy. Reversing that decision by jumping uphill not so much.
This reminded me of GeePaw Hill and his Many More Much Smaller Steps (MMMSS). He lists many benefits of smaller steps. One of those is risk. Another is reversibility. For more information, you can check out any one of his many blog articles (like this one) or various podcast interviews (like this one).