Finding spikes in your plans
Tags: agile, productivity, startup
Published: 2022-12-21 18:39:07

> Spikes are for research, design, investigation, **exploration**. The purpose is to gain necessary knowledge to better understand a task and to work on that.

## Word definition

The word spike comes from rock climbing activities. While climbing, we might stop to force a spike into the rock face, which is not actual climbing but by doing this we are making sure that future climbing will be smooth and easy.

![Spike on a rock](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zy1qjg0dfj9awmh48k0j.png)

## Spikes as the Solution

**Problem: We have a lot of uncertainties in our plans**

- It's demotivating when we're doing our **tasks** and we don't even understand why we're demotivated before doing it
- We can't see the risks earlier, we can't say how long something will take
- We don't know if we should spend time on something, what happens if we won't need it at the end?

**Solution: Let's use Spikes!**

- We do the initial research early and our expectation is actually to "Learn" and "Understand" before we "Do" something
- Spikes allow us to focus on analyzing the risks, do exploration. The purpose of a spike is not "Doing" but **Enabling** doing
- Work for researching is never lost, outcome of a research is knowledge 🧠. After the research we can say that we shouldn't do the task now, and we're still staying with knowledge.

![Before and after spikes](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wkxnsozlirykupvpal19.png)

Let's say there's a **task** _Make a slideshow with taking 10 photos_, how you can plan this? How long this will take? You can say taking photos will take ~2 hours, making slideshow ~5 / ~10 / ~15 hours? If you don't know which tool to use, if you know the tool but you never used it, how you can plan working with that tool? In these cases, we create a Spike and we call this as an **Enabler**. You first do your Spike: "Research and make a slideshow with a few photos to decide which tool to use" and you **timebox** it for 2 hours. After 2 hours, you have the enough knowledge of slideshow tools and enough understanding of your task. After your spike, it's better to refine your task once again as you know more now.

> KelebekLabs is doing R&D, it's likely to happen that we'll have a lot of Spikes.
>
> _If we knew what we were doing, it wouldn’t be called research. — Albert Einstein_

**Best practices of a Spike**

- Spike to represent uncertainty
- Planning for both the spike and the resulting stories in the same iteration is sometimes risky
- Better to plan the spike first and then take the decisions on actual story
- Treat spike as a problem to be fixed, ideally shouldn't stay in the backlog for long
- Spikes are only used with research(or exploration and other activities above) and documentation of it

Spikes can be technical or functional;

**Functional spikes** – They are used to analyze overall solution behavior and determine:

How to break it down
How to organize the work
Where risk and complexity exist
How to use insights to influence implementation decisions

**Technical spikes** – They are used to research various approaches in the solution domain. For example:

Determine a build-versus-buy decision
Evaluate the potential performance or load impact of a new user story
Evaluate specific technical implementation approaches
Develop confidence about the desired solution path

## Reference links

[https://www.slideshare.net/GoAtlassian/spiking-your-way-to-improved-agile-development-anatoli-kazatchkov](https://www.slideshare.net/GoAtlassian/spiking-your-way-to-improved-agile-development-anatoli-kazatchkov)

[https://www.scaledagileframework.com/spikes/](https://www.scaledagileframework.com/spikes/)

[https://www.c-sharpcorner.com/article/what-is-spike-in-agile-software-development2/](https://www.c-sharpcorner.com/article/what-is-spike-in-agile-software-development2/)

[https://en.wikipedia.org/wiki/Spike_(software_development)
](https://en.wikipedia.org/wiki/Spike_(software_development)
)

[https://www.leadingagile.com/2014/04/dont-estimate-spikes/
](https://www.leadingagile.com/2014/04/dont-estimate-spikes/
)

[https://t2informatik.de/en/smartpedia/spike-story/
](https://t2informatik.de/en/smartpedia/spike-story/
)

[https://youtu.be/zOIQjluFQZ4?t=203](https://youtu.be/zOIQjluFQZ4?t=203)

[https://blogs.starcio.com/2019/11/spikes-agile-poc.html
](https://blogs.starcio.com/2019/11/spikes-agile-poc.html
)

[https://rgalen.com/agile-training-news/2018/12/7/12-considerations-for-user-story-spikes](https://rgalen.com/agile-training-news/2018/12/7/12-considerations-for-user-story-spikes)

[https://spin.atomicobject.com/2017/05/23/spikes-for-problem-solving/
](https://spin.atomicobject.com/2017/05/23/spikes-for-problem-solving/
)

[https://community.atlassian.com/t5/Jira-questions/How-do-you-use-Spikes-in-Jira/qaq-p/492960
](https://community.atlassian.com/t5/Jira-questions/How-do-you-use-Spikes-in-Jira/qaq-p/492960
)

[https://www.leadingagile.com/2016/09/whats-a-spike-who-should-enter-it-how-to-word-it/](https://www.leadingagile.com/2016/09/whats-a-spike-who-should-enter-it-how-to-word-it/)