“A spike is a very focused piece of work that helps the team answer a question or solve a problem.” – Mike Cohn, Agile expert, and author
An Agile spike is a specific type of task or deliverable in Agile software development. It is used to investigate and research a specific problem or feature before committing to a full implementation. The goal of a spike is to gain a deeper understanding of the problem or feature, identify potential solutions, and estimate the effort required for implementation. Spikes are typically time-boxed and are used to reduce uncertainty and risk in the development process.
When to use spikes?
Agile spikes are used in situations where there is a high level of uncertainty or risk associated with a specific problem or feature. Some examples of when an Agile spike might be used include:
- Investigating a new technology or tool that the team has little or no experience
- Exploring a complex problem or feature that the team is unsure how to approach
- Estimating the effort required for a large or complex feature
- Researching a new business requirement or market opportunity
Spikes are also useful when a team needs to quickly test an idea or hypothesis, or when a team is blocked on a specific issue and needs to find a way to move forward. By using a spike to gain a deeper understanding of the problem or feature, the team can make more informed decisions and reduce the risk of delays or unexpected issues later on in the development process.
Types of Agile spikes
There are a few different types of Agile spikes that can be used in software development:
- Technical Spike: This type of spike is used to investigate a specific technical problem or feature, such as a new technology or tool that the team has little or no experience with. The goal is to gain a deeper understanding of the problem or feature and identify potential solutions.
- Design Spike: This type of spike is used to explore different design options for a specific problem or feature. The goal is to identify the best design approach and create a prototype or proof of concept.
- Estimation Spike: This type of spike estimates the effort required for a specific problem or feature. The team may use a spike to break down the problem or feature into smaller tasks and estimate the time required for each task.
- Research Spike: This type of spike is used to research a specific business requirement or market opportunity. The goal is to gain a deeper understanding of the customer’s needs and identify potential solutions.
- Exploration Spike: This type of spike is used to investigate a specific problem or feature that the team is unsure how to approach, the goal is to find a way to move forward and identify potential solutions.
It’s important to note that the types of spikes can overlap and a spike can have multiple objectives and goals.
Fig 1: Feature Story
Fig 2: Spike(story)
Benefits of spikes in Agile
There are several benefits to using Agile spikes in software development:
- Reduced Risk: By using a spike to investigate a specific problem or feature before committing to a full implementation, the team can gain a deeper understanding of the problem or feature and identify potential solutions. This reduces the risk of delays or unexpected issues later on in the development process.
- Improved Estimations: Spikes can be used to estimate the effort required for a specific problem or feature, which can help the team make more accurate estimations and plan their work more effectively.
- Faster Time-to-Market: By using a spike to test an idea or hypothesis quickly, the team can move faster and get new features or products to market more quickly.
- Increased Learning: Spikes can be used to explore new technologies or tools, or to research new business requirements or market opportunities. This can help the team stay up-to-date with the latest developments in their field and increase their knowledge and skills.
- Better Problem Solving: Spikes can help the team to find a way to move forward when they are blocked on a specific issue. By using a spike to investigate the problem they can identify potential solutions and unblock the team.
- Better Collaboration: Spikes can involve different teams, stakeholders, and experts to work together and share their knowledge, experience, and ideas to find the best solutions.
It’s important to note that Agile spikes are time-boxed, this means that the team has a specific amount of time to complete the spike and that helps to keep the team focused and avoid scope creep.
Disadvantages
While Agile spikes can bring many benefits to software development, there are also some potential disadvantages to consider:
- Additional Cost: Spikes require additional time and resources, which can add to the overall cost of the project.
- Misuse: Spikes can be used to delay a decision or to avoid committing to a solution, this can lead to a lack of progress and not delivering value.
- Scope Creep: Because spikes are used to investigate and research a specific problem or feature, there is a risk that the scope of the spike will grow and become larger than originally intended. This can lead to delays and increased costs.
- Limited Visibility: Spikes are usually done by small teams and are not always visible to all stakeholders, this can lead to a lack of understanding and buy-in from stakeholders on the value and outcome of the spike.
- Lack of Follow-Up: Spikes are usually time-boxed, this means that the team has a specific amount of time to complete the spike and that can lead to a lack of follow-up and no implementation of the solutions found in the spike.
Conclusion
It’s important to use Agile spikes in the right way, with clear objectives, goals, and deliverables, and with a clear plan on how to follow up and implement the solutions found during the spike. Communication with the stakeholders and involving them in the spike process can also help to mitigate some of these disadvantages.
Resources: