So, what actually is a Spike?
The Agile Dictionary notes that the term Spike comes from eXtreme Programming (XP). It is a technique “to explore potential solutions.”
Ward Cunningham, XP Guru, describes how the term was coined on the C2.com wiki:
“I would often ask Kent [Beck], ‘What is the simplest thing we can program that will convince us we are on the right track?’ Such stepping outside the difficulties at hand often led us to simpler and more compelling solutions. Kent dubbed this a Spike. I found the practice particularly useful while maintaining large frameworks.”
“Agile teams use the term Spike to refer to a time-boxed research activity.”
In Scrum there is no such thing as a Spike
Instead of using Spikes, Scrum Teams use Backlog Refinement to undertake experiments to confirm ideas and hypotheses, assess risks, and undertake preparatory work before a Sprint commences.
I recall one team I worked with who were aware that an Australia Post API they were using was about to deprecate some of its functions, so we sat around a computer together and ran a few pieces of code to see what the data returns looked like from the new function calls. We time boxed the activity to an hour and by the end we had a plan of attack for the following Sprint.
Should a Scrum Team use Spikes?
When coaching new Scrum Teams, I’ll find someone will eventually make some comment about needing to do a “Spike”. What they tend to mean, more often than not, is that they’re used to undertaking extensive analysis and technical design for certain types of work and so seek to add that to a Sprint. It’s behaviour left over from traditional, linear, Waterfall work and it’s designed to give people comfort that the thinking has been done before development work begins. This kind of behaviour is only natural. It makes them feel safe. But, using a Spike in this way is an anti-pattern, just like the way people often use a Sprint 0 to undertake all of the preparation normally done in Waterfall.
Spikes aren’t a bad thing when used for their intended purpose, but I don’t encourage new Scrum Teams to mix XP with Scrum. First, I like to focus their attention on just doing good Scrum. Once they’ve mastered the basics, then (and only then) will I begin to introduce more complicated agile patterns, making them aware of types of activities, such as Spikes, that can help to improve transparency of the technical aspects of product development.
When coaching agile teams, and someone suggests that a Spike needs doing, I now tend to use the following pattern:
- What does the Definition of Ready say about the preparation needed for the successful execution of a Story or Product Backlog Item?
- What are the current assumptions regarding the technical aspects of any proposed solution?
- What is the confidence (as a %) in those solutions?
- If the % confidence is below 80% (or whatever the threshold the team has agreed to as part of their Backlog Refinement activities), then what actions are the team going to do to increase their confidence to 80% — if an action falls into Cohn’s definition of “research”, then it can be labelled a Spike.
- Define the parameters of the research in the same way you would establish a research hypothesis.
Using this simple pattern, you can be confident that the team isn’t slipping back into old, Waterfall behaviours, and that it will add value to the delivery of your products.