Scrum – Providing Valid Time Estimates During Sprint Planning

scrum

My team is getting up to speed with Scrum, but most of us are more familiar with non-agile or "pseudo-"agile methodologies. The part that is the biggest hurdle for us is running an efficient Sprint Planning meeting where we break our backlog items into tasks, and estimate hours. (I'm using the terminology from the VS2010 Scrum Template; apologies if I use the wrong word somewhere.)

When we try to figure out how long a task is going to take, we often fall into the trap of designing the feature at the code level — table layout, interfaces, etc — in order to figure out how long that's going to take.

I'm pretty sure this is not the appropriate place to be doing that kind of design. We should be scheduling tasks for these design meetings during the sprint. However, we are having trouble figuring out how else to come up with meaningful estimates for the tasks.

Are there any practical habits/techniques/etc. for making a judgement call about how long a feature is going to take, without knowing how you plan to implement it? If our time estimates are going to change significantly once the design has been completed, how can we properly budget our Sprint backlog ahead of time?

EDIT:

Just to clarify, since some of the comments/answers are very valid but I think addressing the wrong question.

We know that what we're doing is not right, and that we should be building time into the sprint for this design. Conceptually all of the developers understand that. We also also bringing in a team member with Scrum experience to keep us on track if we start going off into the weeds.

The problem is that, without going through this design process, we are finding it difficult to provide concrete time estimates for anything. We are constantly saying things like "well if we design it this way it might take 8 hours but if we end up having to do this other way instead that will take about 32 but it might not be as bad once we start trying to write it…".

I also assume that this process will get better once we have some historical velocity to work from, but many of the technologies and architectural patterns we are using are new to us. But if potentially-wildly-wrong estimates are just a natural part of adapting this process then we will just need to recondition ourselves to accept that 🙂

Best Answer

  1. Schedule a recurring "grooming" meeting where you have these design discussions. The team I'm on has them once per sprint, on the day before planning. The goal there is to have the design far enough nailed down that the team can agree on the time estimates for the overall story. You could consider doing task breakdowns in this meeting, so that planning becomes purely an exercise in deciding how much to pick up. In other words you should be doing the design in the sprints BEFORE you start doing the actual work.

  2. Consider using planning poker, i.e. points/units of "effort" rather than man-days to estimate tasks. Also try to break down the stories as much as you can. The longer/more complex a story is, the less likely your estimate is going to be accurate.

  3. In planning, the scrum master should keep the planning on track by calling a halt to any discussions that get too far into "solving." At that point the team members are required to quickly come to an agreement on the estimate, usually giving an upper-bounds/worst case number. It's much easier to pick up more work if the tasks end up being easier than you plan, than it is to deal with schedules slipping due to tasks taking longer than planned and stories rolling over into multiple sprints.

  4. Talk about how the estimates panned out in the retrospective at the end of the sprint. Particularly if there were any that were remarkably far off. Did the team learn anything from how the story went versus how they expected it to go? The scrum master should keep the focus on actionable changes that can be made to your design/estimation process.