What Is a Spike in Software Development

by Anna Khrupa on Mar 9, 2022

A spike is a type of work (a small story) done by a team to gather information and determine what is required for reducing the risks and resolving particular software issues. The term “spike” relates to eXtreme Programming (XP) and means a task to research a question and resolve problems. It has become an essential element of software development by assisting teams for technical and functional reasons and providing them with more efficient ways of dealing with a problem.

So, what does spike mean in software development and how does it help to improve product delivery?

Spikes in Software Development: What They Are and What They Do

A spike is a timebox experiment that enables software engineers to define and estimate user stories. It is research without the pressure of delivery. When there are conflicting solutions that cannot be satisfied for a particular feature at the same time, a team refers to a spike. Deployment of spikes as a user story makes it easier to choose the right solution.

The Use of Software Development Spike

In a nutshell, a spike meaning in software development can be explained as researching, investigating, and exploring to avoid and reduce any uncertainty and technical risks in a task. It is used when a team has insufficient information or there is a specific technical problem to solve. If a user story is hard to understand, it means it is either too large or too vague. Thus, a spike is required.

When a team does not understand what is exactly required. Whenever teams want to test something new, they can go outside of the developed program and try to implement what they think might be added to it. They do testing. In case everything works great, they include a new element to the code and try it out.

  • The team can use the method to learn potential problems if a user story is too complex for understanding or if there is a necessity to bring it down. It is used to get an understanding of new software and hardware. Or when the team does not know the details of a particular story to research and explore.
  • The method can be applied when there are specific requirements for which it is hard to decide on a particular technical solution (even with experienced people on board).
  • A spike can be used to bring high effectiveness to risk management.

Why and How to Use?

The primary purpose of using a software development spike is uncertainty and risk minimization in a project and improving a product delivery in agile. It brings clarity to user stories before they are estimated. Spikes help teams to determine whether they are doing what they are required to do or not, enabling them to create more accurate and stable user stories.

Spikes need time to get the results. The whole point is to do profound research. There is no reason to continue with no real solutions and results during a given timebox. A team can either stop it or come back to it later. Every spike should be timeboxed to avoid permanent research. There is one user frame for each sprint. 

The whole functionality should not be implemented in one spike. That is not productive. Spikes must be strictly timeboxed and have a defined objective. One clear question to find an accurate answer to. It is recommended not to go for big spikes or have a different number of spikes in different sprints. This might influence productivity. Too many spikes slow the development process. The team agrees on a timebox and reports on the findings after each spike is finished.

The team can either consider a spike to be on a product backlog or be a part of a product backlog item. The results should always be documented (steps of what was done, what was the problem about, what kind of solution was applied, etc.) and shared with the rest of the team. The outcomes that are the estimates for original stories define whether the goal has been completed.

How long should spikes be? It depends. Only a team can decide on how long or short it can be. For one IT company, it can be a one day research. For another company, it can take up to three-four days. Some companies spend only a couple of hours on each spike.

There are 2 Types of Spike in Software Development

Technical Spike

It is a technical investigation in software, which focuses on how new technologies impact the implementation process.

Tech user stories help to reduce the risk of selecting a technical approach as well as technical problem risks. They increase the probabilities of accurate estimation.

When to use? 

  • When a team has issues with breaking the task down and requires better insight into a technology that looks like the best way to resolve a problem.
  • When there are more than a couple of potential solutions to a technical problem, which the team cannot decide and agree on.

Functional Spike

It is user interaction with a new feature or software in general. A functional method is applied when a team has uncertainty about how the user might interact with the developed system.

Which one to go for? If there is a need to research various technical approaches in a solution, that is definitely a tech type. If it is about the solution behavior, go for a functional one. Though, there are features and user stories that might need both types of spike in software development involved. 

Long story short, spikes are isolated user stories used to clear up the requirements, get better estimates, eliminate unknowns and uncertainties, split work into smaller tasks, and validate available technical approaches in software development. They are about providing additional information and answering specific questions but never producing a separate product.

Share:

hireateam

Hire a team

Let us assemble a dream team of
QA specialists just for you. Our model allows you to maximize the efficiency of your team.

Request Specialists