You’re playing golf with your friends. You’re standing in the tee box and it’s your turn to drive. You’re looking down the fairway and you see the green in the distance. What’s your plan?
Likely, you’re imagining in your head how you’re going to drive the ball down the fairway, how you’re hoping to approach, and where you’ll try to get the ball on the green to have an easy putt (or two). You’re probably also thinking about the clubs you might use in each swing. In essence, you’re more or less envisioning how you’re going to play the course. We might call that a plan.
Then you drive.
You probably imagined the ball flying beautifully precisely to where you hoped you’d get it, and it might happen that way. It might also hook or slice, go in a bunker (that you obviously tried to avoid), or just fall short of your hopes in many other ways.
When you then walk to your ball, you reimagine how you’re going to finish the course from this position. You adjust your vision of where to play the ball, and you adjust your expectations of how many swings you will need.
Or at least that’s how it goes when I play golf. I rarely hit the ball like I hope, so I’m constantly adjusting my expectations based on how each shot goes. Sometimes things go well and I might even get a par (I’m not a good golfer, as you can imagine).
Planning in Scrum (and Agile in general) is very much like that, too. At the beginning of a release we imagine how we would like the release to go. We imagine the goals (features and capabilities we’d like to finish), survey the landscape (risks, estimates, designs, etc.), and formulate a plan how to achieve our target (some kind of release plan and feature timeline). Then we drive.
In Scrum, that drive is the first Sprint. At the end of the Sprint, we will inspect where the ball actually landed (Sprint Review), and discuss how the actual result affected our overall plan. In the second Sprint, we revisit the plan and adjust our immediate actions and Sprint goal to account for the reality in which we found ourselves and what is ahead of us. For example, something we tried didn’t pan out right and have to rework it. Or some risks materialized and will require additional actions to correct. Or maybe we got lucky and things finished faster than expected. We might have to adjust our expectation of how many Sprints we will need, too.
Obviously, some teams play better Scrum than others. A professional golfer is much much more reliable in his play than I am. So his plays are likely to go as planned much more often than mine. Similarly, skilled and experienced Agile teams are able to deliver successfully and on commitments much more likely new teams.
The only real difference is that in golf, the course doesn’t change much. Yes, there’s the wind and other weather conditions, and some parts of the course may also be in worse condition than we see from the tee box, but for the most part, it is very known. Also our tools and balls are reliable, and don’t change during a course.
In software development, the course will change, sometimes dramatically, as we progress. The hole can move, new bunkers emerge and disappear, the fairway can turn into rough and trees grow to new places. The green will reshape itself, too. We don’t always have all the clubs we want, and our balls may change their qualities as we play. And sometimes the wind blows hard against us, and then quiets suddenly.
There are also aspects we can take advantage of. We can use multiple balls (i.e. parallel experiments), find shortcuts, intentionally reposition the hole to some more desirable location (or just nearer), and so on.
But none of that changes the way we plan, though. Every swing / Sprint is an attempt to advance our game, and we need to inspect our real situation at the end of it. Each swing / Sprint is a commitment to do something we believe is the right thing to do at this time. After each swing / Sprint we need to adapt our plans based on what actually happened. At all times, we have an overall view of where we want to go, and we update that plan constantly as we know more.