Agile projects are, at their heart, undertaken to develop new functionality. In other words, we want to finish a project with more capabilities than when we began the project.
At the same time, teams and agile organizations also undertake a project to become smarter–to finish each project smarter than when they began.
Most work during a sprint will be directly related to building new features, and that is as it should be. It is also important, however, that Scrum teams plan for and allocate time for getting smarter. That's where spikes come in.
Agile Spike Definition
What is a spike? In agile projects, a spike refers to a time-boxed research activity that helps teams make better decisions & deliver better products. A concept adapted from Extreme Programming (XP), spikes give teams technical and functional information they need to make decisions about the best approach to certain user stories. Teams can then use this information to provide a more accurate estimate and/or deliver the most effective solution.
Agile Spike Example
As an example of a spike, suppose a team is trying to decide between competing design approaches. The product owner may decide to use a spike to invest another 40 (or 4 or 400) hours into the investigation. Or the development team may be making a build vs. buy decision involving a new component. Their Scrum Master might suggest that a good first step toward making that decision would be a spike into the different options available for purchase, their features, and their costs.
Because spikes are time-boxed, the investment is fixed. After the predetermined number of hours, a decision is made. But that decision may be to invest more hours in gaining more knowledge.
Spikes & Backlogs
Some agile software development teams opt to put a spike story on the product backlog along with user stories. Other teams take the approach that a spike is really part of some other product backlog item and will only expose spikes as sprint backlog items.
Either way, it is important to acknowledge the importance of learning in a successful project. Spike results can give teams the information they need to move their product development effort forward successfully.