Technical Spikes and Research Tasks | Sprint Planning
Run time-boxed spikes to answer technical questions before committing. GitScrum tracks spike tasks with findings and follow-on implementation stories.
8 min read
Spikes answer questions before you invest in solutions. GitScrum helps teams track research work and capture learnings for future reference.
When to Spike
Identifying Need
WHEN TO DO A SPIKE:
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
β DO A SPIKE WHEN: β
β ββββββββββββββββ β
β β
β FEASIBILITY UNKNOWN: β
β "Can we even do this?" β
β "Will this technology work for our use case?" β
β "Is this technically possible?" β
β β
β ESTIMATE UNCERTAIN: β
β "We have no idea how long this will take" β
β "Team has never done this before" β
β "Could be 2 days or 2 weeks" β
β β
β MULTIPLE OPTIONS: β
β "Should we use Library A or Library B?" β
β "What's the best approach?" β
β "We need to compare options" β
β β
β INTEGRATION RISK: β
β "Will this work with our existing system?" β
β "How do we connect to this API?" β
β "What's the performance impact?" β
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β DON'T SPIKE WHEN: β
β βββββββββββββββββ β
β β Team already knows the answer β
β β It's a familiar type of work β
β β Spike would take as long as just doing it β
β β Analysis paralysis - just try it β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Spike Structure
Creating Effective Spikes
SPIKE TEMPLATE:
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
β SPIKE: PDF Generation Approach β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β TYPE: Technical Spike ββ
β β TIME BOX: 2 days ββ
β β OWNER: @alex ββ
β β ββ
β β QUESTION TO ANSWER: ββ
β β Which PDF library should we use for invoice ββ
β β generation that supports our requirements? ββ
β β ββ
β β CONTEXT: ββ
β β β’ Need to generate invoices with tables, logos ββ
β β β’ Must support multiple languages (RTL included) ββ
β β β’ Target: < 2 seconds per document ββ
β β β’ Volume: ~1000 documents/day ββ
β β ββ
β β SUCCESS CRITERIA: ββ
β β β Recommendation with rationale ββ
β β β Proof of concept with sample invoice ββ
β β β Performance benchmarks ββ
β β β Estimate for full implementation ββ
β β ββ
β β OPTIONS TO EXPLORE: ββ
β β 1. PDFKit (client-side) ββ
β β 2. Puppeteer (headless Chrome) ββ
β β 3. WeasyPrint (Python) ββ
β β 4. wkhtmltopdf ββ
β β ββ
β β OUTPUT: ββ
β β Document with findings linked to this task ββ
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
β KEY ELEMENTS: β
β β’ Clear question (not vague exploration) β
β β’ Time box (prevents rabbit holes) β
β β’ Success criteria (know when done) β
β β’ Expected output (document, prototype, estimate) β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Types of Spikes
SPIKE CATEGORIES:
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
β TECHNICAL SPIKE: β
β ββββββββββββββββ β
β Explore technical approach or feasibility β
β β
β Examples: β
β β’ "Can we use GraphQL with our current stack?" β
β β’ "How do we integrate with Salesforce API?" β
β β’ "What's the best caching strategy?" β
β β
β Output: Technical document, prototype, recommendation β
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β FUNCTIONAL SPIKE: β
β βββββββββββββββββ β
β Explore user needs or requirements β
β β
β Examples: β
β β’ "What do users actually need from this feature?" β
β β’ "How do competitors solve this?" β
β β’ "What are the edge cases?" β
β β
β Output: User research, requirements document, mockups β
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β ESTIMATION SPIKE: β
β βββββββββββββββββ β
β Reduce uncertainty to enable estimation β
β β
β Examples: β
β β’ "How much work is the migration?" β
β β’ "What's involved in upgrading to v3?" β
β β’ "How complex is this integration?" β
β β
β Output: Rough estimates, risk assessment, task breakdown β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Running Spikes
Time-Boxing
TIME BOX DISCIPLINE:
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
β WHY TIME BOX: β
β βββββββββββββ β
β β’ Prevents analysis paralysis β
β β’ Forces decisions with available info β
β β’ Limits investment in exploration β
β β’ Keeps sprint predictable β
β β
β TYPICAL TIME BOXES: β
β β’ 1 day: Quick investigation β
β β’ 2 days: Moderate exploration β
β β’ 3-5 days: Complex research (rare) β
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β WHEN TIME BOX ENDS: β
β βββββββββββββββββββ β
β β
β SCENARIO 1: QUESTION ANSWERED β
β Great! Document findings, close spike β
β Estimate follow-on story β
β β
β SCENARIO 2: NEED MORE TIME β
β β DON'T: Just keep going β
β β
DO: Report what you learned β
β β
DO: Decide if more time is worth it β
β β
DO: Re-scope if continuing β
β β
β SCENARIO 3: ANSWER IS "NO" β
β This is still valuable! β
β "We learned this approach won't work" β
β Document why, explore alternatives β
β β
β SPIKE OUTCOME TASK: β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β SPIKE-456: PDF Generation Approach (COMPLETE) ββ
β β ββ
β β TIME USED: 1.5 days (of 2 day box) ββ
β β ββ
β β FINDINGS: ββ
β β Recommend Puppeteer for PDF generation ββ
β β β’ Best quality ββ
β β β’ Meets performance requirements ββ
β β β’ Team has JS experience ββ
β β ββ
β β POC: Created sample invoice in /spikes/pdf-gen ββ
β β Perf: 1.2 seconds per document β
ββ
β β ββ
β β FOLLOW-ON ESTIMATE: ββ
β β Full implementation: 5 points ββ
β β ββ
β β NEXT: Create story STORY-789 for implementation ββ
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Documenting Results
Capturing Learnings
SPIKE DOCUMENTATION:
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
β SPIKE OUTPUT TEMPLATE: β
β β
β # PDF Generation Spike - Findings β
β β
β ## Question β
β Which PDF library should we use for invoice generation? β
β β
β ## Options Evaluated β
β β
β | Library | Performance | Quality | RTL | Complexity | β
β |------------|-------------|---------|-----|------------| β
β | PDFKit | Fast | Medium | β | Low | β
β | Puppeteer | Medium | High | β
| Medium | β
β | WeasyPrint | Slow | High | β
| Low | β
β | wkhtmltopdf| Medium | Medium | β
| Low | β
β β
β ## Recommendation β
β **Puppeteer** - Best balance of quality and performance β
β β
β ### Rationale β
β - Best visual quality (uses Chrome rendering) β
β - Meets performance SLA (1.2s per doc) β
β - Team familiar with JavaScript β
β - Active community and maintenance β
β β
β ## Proof of Concept β
β Location: `/spikes/pdf-generation/` β
β Sample output: `/spikes/pdf-generation/sample-invoice.pdf`β
β β
β ## Risks β
β - Chrome dependency adds memory overhead β
β - Need to manage Chrome process lifecycle β
β β
β ## Implementation Estimate β
β - Setup Puppeteer: 1 point β
β - Invoice template: 2 points β
β - Testing + edge cases: 2 points β
β **Total: 5 points** β
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β LINK: Attach document to spike task β
β Future teams can reference this research β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Spike in Workflow
Planning for Spikes
SPIKES IN SPRINT:
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
β BEFORE SPRINT: β
β ββββββββββββββ β
β In refinement, identify stories with uncertainty β
β "We can't estimate STORY-456 - need spike first" β
β β
β DURING PLANNING: β
β ββββββββββββββββ β
β Include spike in sprint backlog β
β Time-box is the "estimate" β
β Story that depends on spike goes to next sprint β
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β SPRINT BACKLOG: β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β Sprint 14 Backlog ββ
β β ββ
β β STORIES: ββ
β β β’ STORY-789: User login (5 pts) ββ
β β β’ STORY-790: Password reset (3 pts) ββ
β β β’ STORY-791: Dashboard widgets (8 pts) ββ
β β ββ
β β SPIKES: ββ
β β β’ SPIKE-456: PDF generation approach (2 days) ββ
β β β’ SPIKE-457: SSO integration feasibility (1 day) ββ
β β ββ
β β NOTE: PDF story (STORY-792) planned for Sprint 15 ββ
β β pending spike results ββ
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
β AFTER SPIKE: β
β ββββββββββββ β
β 1. Document findings β
β 2. Create/refine follow-on story β
β 3. Estimate based on learnings β
β 4. Add to backlog for next sprint β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ