Are you sure you want to spike that?
I have recently had some conversations about when it is appropriate to create a spike in Scrum. Is it when a team doesn't know how to approach a story? When they don't know how to utilize a tool or resource? When they have a question that they want to answer? Something else? I thought this would be a good time to dig into what a spike is, and what it isn't.
The term spike comes from XP (Kent Beck's Extreme Programming) (Spike | The Agile Dictionary). A spike, paraphrasing Ward Cunningham, should be a story that can convince the team that they are (or aren’t) on the right track.
One of the primary use cases of a spike is to help a team when they have a story that they are unable to estimate its size. Some stories are initially inestimable because there are questions that need to be resolved first. For example, the team may not know if a technology is appropriate; will it handle the expected load? In this case the team should create a spike. Inversely, if the story can be estimated then the team should not create a spike.
Experimentation and learning are key elements of a spike. Too often I see a team creating a spike during refinement, or earlier, for understanding how to use a technology that is new to the team. They create the spike before they know if they are unable to estimate stories.
So now that we know when to create a spike, let's take a look at the components of a properly formed spike. A well-formed spike will have these three elements:
- Understanding Needed Information
- Acceptance Criteria
- Timeboxes
Understanding Needed Information
Acceptance Criteria
The acceptance criteria of a spike should not be "we now know ____". The spike is done when we know enough to estimate the story that before could not be estimated. So, the acceptance criteria should be "we are able to point story NNN" or better yet "we have assigned story points to story NNN". The output of a spike is the team's ability to move forward with some confidence that they are on the right track.
Timeboxes
It is a good idea to assign an initial timebox to a spike. This is the amount of time the team will work to answer "The question" before they come back together to determine if they have an answer or need to allocate an additional timebox.
The reason for managing the spike with timeboxes is that it ensures that the team keeps coming back together to share with each other what they have learned and to check if they have their answer. It can be the case that individually they don't have the answer, but collectively they do. Additionally, each timebox that is allocated also may have a focus for the timebox if the question that needs to be answered is a large one.
Wrap-Up
Hopefully you now have a good sense of when to create a spike and how to create a well-formed one. I'd love to hear your feedback.
Stay Agile.
Comments
Post a Comment