There are few better ways to get that burst of adrenaline like barrelling down a hill with a clear path ahead. It helps to have previously ridden the descent and trust your gear, but previous experience and a decent bike can’t determine alone whether we survive a given segment. We must focus, listen to the necessary senses, and continuously make minor tweaks to travel as quickly as possible.
Making good decisions in the present while setting ourselves up for future success very much depends on being able to see ahead to where we’re going. By looking ahead we can alter our course, thereby missing the pothole, pedestrian, or motor vehicle. One major impediment to visibility is obviously weather. Fog makes known stretches uncertain and rain ruins just about everything, making it harder to see, hear, and stop, all while reducing the visibility for everyone else around us too.
Some routes are just plain difficult even in perfect weather, purposefully winding through tight corners, switchbacks, and steep ascents. Nobody is born with the ability to climb or take turns at speed; these are skills we have to work at to improve. All riders must slow down around turns because our momentum, though useful in a straightaway, hinders our ability to both change direction and stay upright.
Mapping bike speed to development or project velocity1, visibility in building software is having clear, well-specified stories, thoughtful epics, and up-to-date roadmaps. We can only safely and quickly build when we’ve planned out the current and future work through continuous refinement, leaning on strong relationships with our colleagues in design and product. Along the way, we should listen to our gut to because “the right way” is almost always a subjective measure. After all, writing software is as much an art as riding a bike.
Stories with complete requirements2 give us confidence that we won’t find gotchas during development that would force us to stop and gather feedback about which direction to take. Internally-consistent epics comprise a plan to achieve a large body of work with the shared understanding that not everything can be completed at once. Not to mention that a series of small, easy steps is often more accurate than one large step. Breaking down a significant feature into independently-valuable stories is some of the hardest work we do as software developers. With these plans in place, we can crank, working as fast as is comfortable.
As a project completes, it’s healthy to share the recently completed work to a wider audience to gather feedback, consider what went well, things to improve in the future, and plan the next segment of work. Recording bike rides gives us similar feedback about how our speed and distance is trending. It’s as useful to compare one ride to the next as it is to compare one sprint to another. There will always be some noise (tired muscles, teammates taking PTO, etc) driving variability. Like I said before, trends are most important. Are we shipping more valuable work to customers more quickly than previously? Are we riding faster and farther?
Planning takes time and effort and foregoing this work is certainly one way to do it, but without plans we have to sacrifice speed, safety, or sometimes both. Choosing to go fast with low visibility is dangerous and risky behavior. You might not instantly crash or write buggy and incorrect software, but the statistics are not in your favor. Do this often enough and something is going to suffer, whether it is yourself, your bike, or your business.
Not having a plan can be correct in some nuanced cases, like building proof-of-concepts or other research activities where the expected output is less working software and more visibility into future work. Reducing risk this way can be very helpful at the beginning of the project, but this discovery is best used to develop more solid plans for future work. Please don’t put a proof-of-concept into production!
Above all, just be safe out there. Our careers at the keyboard and on the bike will go furthest when we work and ride at a sustainable pace, having a clear view of what lies ahead.