what is a spike in agile?

Have you ever tried rock climbing, if yes must have used spike to explore the path. Spike is a stick used by mountaineers to check if the rock above is strong enough to hold their weight. Agile uses the terminology of spike to deep dive into the problem and investigate possible paths to solution.

Agile is a methodology commonly used in software development, this breaks the process into iterations and divides it among team to reduce project delivery time. This methodology also involves the client into development process by working upon the feedback of client after each iteration.

What is a spike?

Spike is a timeboxed user story or Task that is created to research a question and resolve a problem.As a result of the spike, the team can break down the features into stories and estimate the effort and time needed.

The concept of Strike is derived from Extreme Programming (XP), it give teams technical and functional information which can be used to make decisions about the best approach to certain user stories.

Why to use spikes:

It’s better to write spikes rather than directly solving stories and tasks but it should be created after product backlog refinement only.

  • Analysis : It gives the team a broader analysis of what they want to do in order to achieve the desired outcome.
  • Time : The team can carry out the different tasks in parallel , can plan task and quickly complete the objective.
  • Explore options : The team can perform many trials to find which solution is the most suitable.
  • Reduces Failure : It provides the way to explore different ways, team gets the chance to know if the solution they are considering will give the expected results or not.
  • Estimation : It allows estimation of the effort and time needed for user stories.

Types of Spikes:

  1. Functional Spike : It is analyzing overall solution’s behavior. It identifies risks and complexities, lets manage and organize work.
  2. Technical Spike : It is all about researching various approaches in solution domain. It evaluates technical implementation and performance of solution with load.

When to use spikes:

  • Spike is used when task to be done can not be decided because of risks involved, spike identifies the correct way to perform the task.
  • Spike is used when team is uncertain about consequences of their decision and they need more information to proceed.
  • It can be used as a medium to research and analyse the requirements.
  • Spike identifies vulnerability in the software when it is trying to find the appropriate path to solution
  • It also helps in checking the feasibility of the product.
  • It helps evaluate and experiment with performance of any new framework/tool to be used in development.

How to write Spikes:

  1. Title : Assign a short and consistent heading which represents the whole spike.
  2. Description : it’s a short description which gives overview about the topic of the spike.
  3. Ticket link : Provide the link to the ticket, its number and the title of the Spike. This might be done using any tools like JIRA.
  4. Assumptions : Although it is optional but one can provide the list possibilities that are going to be considered as assumptions.
  5. High level estimation : It is tabular structure consisting of all estimations.

Advantages of Spikes:

  • It clarifies where you are heading and if you are following the correct path.
  • The doors to estimation break the bars of uncertainty.
  • The time needed to complete the sprint is now clear.
  • It reduces the risk of failure.
  • It helps in meeting the deadlines.

How to use spikes effectively:

  • Spikes should be timeboxed and not be extended to long time performing research.
  • Spikes should be written effectively, all above mentioned sub-topics should be relevant.
  • Track the steps done during spike research to avoid mistakes in later stages.
  • Create the documentation of knowledge extracted during exploration of paths in spike.
  • Use the spikes to overcome challenges early in the project.

Conclusion:

Thus, spikes prove to be a great way to complete user stories within time. From larger stories, these spikes are divided into smaller ones. Large-scale projects are the source of spikes, which are experiments or research with positive outcomes.