You're in sprint planning. A story comes up: "Integrate with the new payment gateway API." Sounds straightforward. Then someone asks, "Do we know if their webhook system is reliable? What about the authentication flow? Has anyone looked at their documentation?" Cue the silence. The team stares at the story, realizing it's a black box. No one can estimate it. This is the exact moment you need an agile spike.
A spike is a time-boxed research task. Its sole purpose is to answer a specific, blocking question so the team can make a confident decision or provide a reliable estimate. Think of it as a strategic reconnaissance mission, not the main invasion. You send a small team in to scout the terrain, identify the mines, and report back so the whole platoon doesn't walk into an ambush.
What You'll Learn in This Guide
Why Spikes Exist: The Problem They Solve
Agile values working software over comprehensive documentation. But that doesn't mean flying blind. The core problem spikes address is uncertainty. Specifically, technical or design uncertainty that makes estimation a guessing game.
I've seen teams waste entire sprints on poorly defined stories because they didn't spike. They committed to building a feature using a new library, only to discover halfway through that the library couldn't handle their core use case. The sprint failed. Morale dipped. Stakeholders got nervous.
A spike formalizes the learning process. It says, "We admit we don't know enough, and guessing is expensive. Let's invest a small, fixed amount of time to reduce this risk." It transforms uncertainty from a scary, hidden threat into a manageable work item.
The Origin: The term "spike" comes from extreme programming (XP), likening it to a spike used in rock climbing—a small, secure point you drive in to make the next, bigger move safe. It's about creating safety, not about the spike itself being the goal.
The Two Main Types of Spikes (And One Misused One)
Not all spikes are the same. Understanding the categories helps you define a clear goal.
1. Technical Spike
This is the most common. It investigates a technical question. The output is usually knowledge, a proof-of-concept, or a decision.
Goal: Answer "how" or "if."
Example Questions: Can Library X process files as large as we need? What's the performance difference between two database queries? Is it feasible to automate this manual deployment step?
2. Functional Spike
Also called a design spike. This explores user experience, workflows, or interface options. It's often a quick prototype or a series of mockups to get user/business feedback.
Goal: Answer "what" from a user's perspective.
Example Questions: What is the optimal three-step flow for this new onboarding wizard? Which of these two dashboard layouts is more intuitive for our users?
The One Everyone Gets Wrong: The "Mini-Project" Spike
This isn't a real type. It's a trap. Teams call something a spike but treat it as a tiny development task to build a piece of the final product. The spike "succeeds" by delivering code, but fails its primary mission because it didn't answer a fundamental question that de-risks the rest of the work.
If your spike's success criteria is "build a working login module," you're not spiking. You're just building a small story poorly. A spike for login might be: "Determine if our existing auth service can handle the new biometric requirements. If not, recommend a solution." The output is a recommendation, not production code.
How to Run a Spike: A 5-Step Action Plan
Here's a practical, step-by-step way to implement spikes that actually work.
Step 1: Define the Question with Surgical Precision
This is the most critical step. A bad question yields a useless spike. Don't write: "Investigate the new API." That's hopelessly vague.
Write: "Determine if the VendorX API's webhook delivery guarantee is at-least-once or at-most-once, and identify the implementation pattern needed in our service to handle duplicate events safely."
See the difference? The second one gives the investigator a laser focus.
Step 2: Time-Box It Ruthlessly
Spikes are not open-ended. The most common time boxes I see are 4, 8, or 16 hours (1-2 days). The constraint forces efficiency and creativity. It prevents the "rabbit hole" effect.
You decide the length based on the cost of being wrong. A high-risk item might warrant a 2-day spike. A minor uncertainty might only need an afternoon.
Step 3: Define the Tangible Output
What does "done" look like? It's never just "we learned something." Be specific. Common outputs include:
- A brief written report (1-2 pages max) with findings and recommendations.
- A simple proof-of-concept code repository.
- A set of updated story estimates and acceptance criteria.
- A decision: "We will use Approach A" or "This is not feasible; we need a different story."
Step 4: Present Findings to the Whole Team
The knowledge from a spike must be socialized. Hold a short, focused meeting at the end of the spike. The spike owner presents what they learned, the options considered, and the recommended path forward. This transfers the knowledge from one person's head into the team's shared understanding.
Step 5: Act on the Results Immediately
The spike is worthless if its findings gather dust. Use the output to either:
- Break down and estimate the now-understood story for the next sprint.
- Create new, more precise stories based on the recommendations.
- Kill a proposed feature that the spike revealed is too costly or complex.
Common Spike Mistakes I See Teams Make
After coaching dozens of teams, these are the recurring patterns that derail spikes.
| Mistake | What It Looks Like | The Better Approach |
|---|---|---|
| Spike as a Dumping Ground | Any vaguely hard or unknown task gets labeled a spike. The backlog fills with them. | Challenge: "What is the single, specific question this spike must answer?" If you can't define it, the story itself needs refinement. |
| No Time Box | The spike runs for a week, meanders, and the developer ends up building half the feature. | Set the timer before you start. When it dings, stop and report what you found, even if it's incomplete. You can always run a follow-up spike. |
| Output is Code, Not Knowledge | The team celebrates a spike that produced a slick module, but no one documented the key architectural decision or the dead ends they hit. | Mandate a summary. The code is supporting evidence, not the primary deliverable. The knowledge transfer is. |
| Spiking Something You Should Just Build | Using a spike for simple research that could be done while implementing the story (like reading basic API docs). | Ask: "Is this uncertainty so great that it makes estimation impossible?" If not, just learn as you go within the story's estimate. |
The biggest one? Letting spikes become a cultural excuse for avoiding commitment. "Oh, we can't estimate that, let's spike it" becomes a reflex instead of first trying to break the story down.
Real-World Spike Examples & Outcomes
Let's make this concrete. Here are two anonymized cases from my experience.
Example 1: The Database Migration Question
Context: A team needed to add full-text search to a product catalog. The initial story was huge and scary.
The Spike Question: "For our dataset size (10M records), compare the implementation effort, performance, and maintenance overhead of (a) using PostgreSQL's built-in full-text search vs. (b) integrating Elasticsearch."
Time Box: 2 days.
Output: A document with a small benchmark, code snippets for both approaches, and a clear recommendation: Use PostgreSQL. The performance was sufficient, and it avoided introducing a new, complex system to maintain. The spike took 16 hours of work.
Outcome: The original epic was replaced with a single, well-estimated story. The team delivered it in one sprint.
Example 2: The Third-Party API Landmine
Context: A feature required generating dynamic legal documents based on user input.
The Spike Question: "Does the DocGenPro API support injecting conditional clauses ('if-then' logic) into templates, and if so, what is the complexity of their template syntax?"
Time Box: 1 day.
Output: A short report: The API only supports simple variable substitution. For conditional logic, we would need to generate multiple document variations on our side and call the API multiple times, complicating the design and doubling costs.
Outcome: This was a project-saver. The team pivoted to evaluate other vendors before any development started, avoiding a massive rework later.
Your Spike Questions, Answered
Frame it in terms of risk and cost avoidance. Say, "We have two options. Option 1: We guess this will take 3 sprints and commit to it. There's a high chance we're wrong and it blows up, causing delays and wasted work. Option 2: We spend 2 days on a spike to get the facts. This gives us a confident estimate and reduces the risk of a major failure. Which investment would you prefer?"
Managers understand the language of risk mitigation. A spike is cheap insurance.
This is a hot debate. My stance is no, don't count it in velocity. Velocity measures the delivery of customer value. A spike produces knowledge, not shippable value. Including it inflates your velocity and makes forecasting less accurate.
Track spike effort separately. It's an investment in reducing future uncertainty, not an output of the current sprint. This keeps your velocity pure and focused on what actually gets to the user.
That's still a valuable result! The output becomes: "We explored paths A, B, and C. A failed because of X. B is prohibitively expensive due to Y. C shows potential but needs 2 more days to validate. Recommendation: Run a follow-up spike focused solely on validating C, or consider if this feature's cost/risk is now too high."
Uncovering that something is harder than expected is critical information. It prevents you from charging ahead blindly. The goal is learning, not necessarily a happy, easy answer.
Rarely, and it should never be the goal. Sometimes, in the process of answering the question, you write a small, clean piece of code that perfectly demonstrates the solution. If it's robust and fits the architecture, you might keep it.
But treat this as a bonus, not the objective. The moment you start coding to keep the code, you've lost the spiking mindset and are now building. The pressure shifts from "learn fast" to "make it perfect," which defeats the purpose.
Spikes aren't a silver bullet. They're a tool. A sharp, specific tool for a specific job: cutting through the fog of uncertainty. When you feel that collective gulp in planning, when estimates range from "2 days" to "2 months," that's your signal. Don't guess. Don't argue. Spike it.
Define the question, set the timer, and go learn. You'll waste less time, build more confidently, and save yourself from those late-night fire drills caused by the unknown unknowns you decided to ignore.
Reader Comments