The other day I saw a great visual posted by CEO of Vercel, Guillermo Rauch, showcasing why iteration velocity matters.
Here's what he posted:
This visual immediately made sense to me as I run an engineering team that is building multiple early stage startups. For most engineering leaders this visual makes a ton of sense. The problem is, my customers, largely non-technical founders, have no idea what this means. In fact, as an early engineer I wouldn't have understood this either.
When people hear iteration velocity, they tend to focus in on the term velocity, and parallelize it with the quantity of tickets completed in a sprint. Most of the organizations I've worked with measured sprint velocity in two ways. The first method looks at the number of tasks that could be shipped over a fixed amount of time. The second method attempts to measure complexity of the tasks by assigning point values to each ticket and adds those points up over the same fixed timeframe. Organizations do this because everyone does this, it seems obvious.
But as I am prone to do I'd like to use a non-technical metaphor to better explain why iteration velocity, not sprint velocity is the real nut to crack.
"I feel like I've been surfing for years and never actually get any better."
These are the words my co-founder, Justin, said to me as we sat in the surf lineup at dawn on Long Island a few years ago. I felt the same way. I spent most of my younger years rock climbing and snow boarding. When I moved back to Long Island, both activities were in short supply, so surfing seemed a natural substitute. Except we continued to suck, year after year, no matter how much time we spent in the water.
I wondered how it was possible that you can pick up snowboarding in three days, and fly down double black diamonds in a single season? Yet with surfing, the gulf seemed insurmountable.
The answer lies in iteration velocity. When you go out surfing on Long Island, there are many days where you paddle out to flat water. There are also days where you paddle out to waves that are above your ability level. The amount of time you spend waiting for the perfect wave greatly exceeds the time you spend riding them. Days where prefect, knee-high waves roll in at a regular intervals are few and far between. In short, when you're "surfing," most of the time you're just sitting there, waiting for the opportunity to surf. Every time a wave comes in that you miss, that's another missed opportunity to sharpen your skills.
Let's contrast this with a day of snowboarding. You get out to the bunny slope first, and a lift takes you up and down as quickly as you can hobble back to the lift line. Over and over again you run the hill until you feel comfortable enough to go up to the top of the standard slopes. Here the runs get even longer, giving you even more time to sharpen your skills. The more runs or iterations you can complete in a single day, the faster your body will adapt to the new activity.
Rock climbing is another great example. Many people find that they improve greatly at the sport when they take up bouldering indoors. It's not just because of the difficulty of the climbs, but the amount of times you can work on each movement. Every time you fall, you can rest and hop right back on. You can work on moves in isolation without needing to wrangle ropes and gear, rappel off cliff faces, or hike out to remote locations. Bouldering allowed rock climbers to practice more times, more frequently, therefore the average difficulty that the average rock climber can climb has risen by four grades or more since I started as a kid.
When it comes to sports, the speed at which you improve is the amount of repetitions you can put in over a period of time. Missing 100 waves surfing over 5 years isn't teaching you anything about riding tubes in Hawai'i. Sports that have long iteration cycles, like surfing or white water Kayaking, take a long time to master.
As with sports, software requires the same focus on iterations to improve the product. The faster we can learn from failures and try again, the faster we can arrive at truly killer products. Imagine that every time you ship a feature to users, it takes you a few months to incorporate the feedback back into the product. Just like missing that wave in the surf lineup, it could take weeks or months before you get the chance to try again.
Contrast that with a team that iterates in days and weeks. They can be wrong dozens of times and ship dozens of fixes in the time it takes the previous team to circle back to improve one feature. Ultimately who is going to win out? The team that has the luxury to be wrong, take chances, and take dozens of runs down the hill--all while the other team is bobbing in the shore break, hoping for just one more chance to get better.
So when we devised our process for building software, we optimize for iterations, because this allows us to improve the product faster. You want to shorten the time it takes to bring ultimate value to your product market. Rapid iterations allows you to learn and course correct faster than trying to ship more volume or any amorphous concept of points. It's not about the number or difficulty of tickets you ship, it's about the time it takes to circle back and improve those features from user feedback. Optimize your process so you can take more runs down the hill and you'll find your way to product market fit faster than your competitors.