Spike is an investigation in technical or business domain with the purpose of enabling further work on “real”, functional user stories. Technical spike has a purpose of learning certain technology to be able to estimate if it is appropriate for the implementation of a concrete feature or a set of features. Functional spike has a purpose of learning business domain and/or solving a functional problem which will further enable implementation of a feature or a set of features.
When defining a spike, pay attention to the following and make sure that all the topics are covered in the user story or a task which define work on Spike:
- Why is it important to do this investigation? What are expected benefits?
- What is the timeframe for this investigation?
- What are the deliverables? What exactly are the goals for this spike? What is the expected outcome? What is expected impact?
- State clear acceptance criteria;
- What resources are needed for the spike?
- Is this technical or domain/functional spike?
- Which parts of spike deliverables are expected to be reused?