Technical Discovery Spikes | Time-Boxed Investigation
Run time-boxed spikes to reduce technical uncertainty before implementation. GitScrum tracks spike tasks with deliverables, estimates, and outcomes.
9 min read
Spikes reduce risk. GitScrum helps teams plan and track technical spikes that answer critical questions before committing to full implementation.
Understanding Spikes
What Are Spikes
SPIKE DEFINITION:
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
β SPIKE: β
β ββββββ β
β A time-boxed investigation to answer a question β
β β
β PURPOSE: β
β ββββββββ β
β β’ Reduce technical uncertainty β
β β’ Explore unfamiliar technology β
β β’ Assess feasibility β
β β’ Inform estimation β
β β’ Prototype approaches β
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β SPIKE vs STORY: β
β β
β STORY: β
β "Implement user authentication with OAuth" β
β OUTPUT: Working feature in production β
β β
β SPIKE: β
β "Investigate OAuth providers for our requirements" β
β OUTPUT: Recommendation + approach + estimate β
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β WHEN TO SPIKE: β
β ββββββββββββββ β
β β
β β
Use spike when: β
β β’ "Can we even do this?" β
β β’ "Which approach is better?" β
β β’ "How long will this take?" β
β β’ "What are the risks?" β
β β
β β Don't spike when: β
β β’ Answer is Googleable in 30 minutes β
β β’ You already know the approach β
β β’ Just start building β
β β
β RULE: Spike when uncertainty is blocking progress β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Types of Spikes
Spike Categories
SPIKE TYPES:
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
β FEASIBILITY SPIKE: β
β ββββββββββββββββββ β
β "Can we do this?" β
β β
β EXAMPLE: β
β "Can we integrate with their legacy API?" β
β β’ Test API connectivity β
β β’ Identify limitations β
β β’ Document blockers β
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β ARCHITECTURE SPIKE: β
β βββββββββββββββββββ β
β "How should we structure this?" β
β β
β EXAMPLE: β
β "Design the microservices architecture" β
β β’ Service boundaries β
β β’ Communication patterns β
β β’ Data flow β
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β TECHNOLOGY SPIKE: β
β βββββββββββββββββ β
β "Which technology should we use?" β
β β
β EXAMPLE: β
β "Evaluate GraphQL vs REST for our mobile API" β
β β’ Compare options β
β β’ Prototype both β
β β’ Recommend with reasoning β
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β ESTIMATION SPIKE: β
β ββββββββββββββββ β
β "How long will this take?" β
β β
β EXAMPLE: β
β "Estimate effort for payment system migration" β
β β’ Break down into components β
β β’ Identify unknowns β
β β’ Provide range estimate β
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β PROOF OF CONCEPT (POC): β
β ββββββββββββββββββββββββ β
β "Does this approach work?" β
β β
β EXAMPLE: β
β "Prototype real-time sync mechanism" β
β β’ Build minimal working version β
β β’ Validate core assumptions β
β β’ NOT production code β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Planning Spikes
Spike Structure
SPIKE TICKET TEMPLATE:
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
β TITLE: [SPIKE] Evaluate message queue options β
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β QUESTION TO ANSWER: β
β βββββββββββββββββββ β
β Which message queue (Kafka, RabbitMQ, SQS) best fits β
β our async processing needs? β
β β
β CONTEXT: β
β ββββββββ β
β We need reliable async processing for: β
β β’ Order processing (1K/day) β
β β’ Email notifications β
β β’ Webhook deliveries β
β β
β Current constraints: β
β β’ AWS infrastructure β
β β’ Small ops team β
β β’ Budget: $500/month max β
β β
β TIME BOX: 2 days β
β ββββββββ β
β β
β DELIVERABLES: β
β ββββββββββββ β
β β Comparison matrix (features, cost, complexity) β
β β POC with top 2 options β
β β Recommendation with reasoning β
β β Implementation estimate β
β β
β ASSIGNED: @alex β
β DUE: End of day Thursday β
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β SPIKE OUTPUT CHECKLIST: β
β β Question answered β
β β Assumptions documented β
β β Risks identified β
β β Next steps clear β
β β Knowledge shared with team β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Executing Spikes
Spike Workflow
SPIKE EXECUTION:
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
β DAY 1: EXPLORE β
β ββββββββββββββ β
β β
β MORNING: β
β β’ Review existing knowledge β
β β’ Research options β
β β’ List assumptions β
β β
β AFTERNOON: β
β β’ Start prototyping β
β β’ Test basic scenarios β
β β’ Document findings as you go β
β β
β END OF DAY: β
β β’ Checkpoint: On track? Need more time? β
β β’ Note blocking questions β
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β DAY 2: CONCLUDE β
β βββββββββββββββ β
β β
β MORNING: β
β β’ Complete investigation β
β β’ Answer remaining questions β
β β’ Finalize recommendation β
β β
β AFTERNOON: β
β β’ Write up findings β
β β’ Prepare presentation β
β β’ Share with team β
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β BEST PRACTICES: β
β βββββββββββββββ β
β β
β TIME-BOX STRICTLY: β
β β’ Stop when time is up β
β β’ "We don't know yet" is valid answer β
β β’ Avoid scope creep β
β β
β DOCUMENT AS YOU GO: β
β β’ Don't wait until the end β
β β’ Note dead ends too β
β β’ Future you will thank you β
β β
β SHARE EARLY: β
β β’ Quick team sync mid-spike β
β β’ Get input on direction β
β β’ Avoid going down wrong path β
β β
β POC CODE IS THROWAWAY: β
β β’ Don't gold-plate β
β β’ Prove it works, that's all β
β β’ Real implementation will be different β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Spike Output
Documentation
SPIKE REPORT TEMPLATE:
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
β SPIKE REPORT: Message Queue Evaluation β
β βββββββββββββββββββββββββββββββββββββββ β
β β
β AUTHOR: @alex β
β DATE: January 15, 2025 β
β TIME SPENT: 2 days β
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β SUMMARY: β
β ββββββββ β
β Recommend Amazon SQS for our async processing needs. β
β It meets our requirements with lowest operational burden. β
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β OPTIONS EVALUATED: β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β Kafka RabbitMQ SQS ββ
β β βββββββββββββββββββββββββββββββββββββββββββββββββββββββ ββ
β β Throughput High Medium Medium ββ
β β Complexity High Medium Low ββ
β β Cost/month $200+ $150+ $20 ββ
β β Ops burden High Medium Minimal ββ
β β AWS native No No Yes ββ
β β Ordering Yes Yes FIFO option ββ
β β Dead letter Manual Yes Yes ββ
β β βββββββββββββββββββββββββββββββββββββββββββββββββββββββ ββ
β β FIT: Overkill Possible Best fit ββ
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β RECOMMENDATION: β
β βββββββββββββββ β
β Amazon SQS with FIFO queues β
β β
β REASONS: β
β 1. Lowest operational burden (managed service) β
β 2. Cost-effective at our scale ($20/month vs $200) β
β 3. Native AWS integration β
β 4. FIFO option for ordering when needed β
β 5. Built-in dead letter queues β
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β RISKS & MITIGATIONS: β
β ββββββββββββββββββββ β
β β’ 256KB message limit β Use S3 for large payloads β
β β’ Vendor lock-in β Acceptable given AWS commitment β
β β’ Max 14-day retention β Adequate for our use case β
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β IMPLEMENTATION ESTIMATE: β
β ββββββββββββββββββββββββ β
β β’ Queue setup: 1 day β
β β’ Producer integration: 2 days β
β β’ Consumer implementation: 3 days β
β β’ Testing & monitoring: 2 days β
β TOTAL: ~2 sprints β
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β NEXT STEPS: β
β β’ Team review of recommendation β
β β’ If approved, create implementation stories β
β β’ Schedule architecture review β
β β
β ATTACHMENTS: β
β [POC code] [Cost comparison spreadsheet] β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Managing Spikes
Spike Hygiene
SPIKE MANAGEMENT:
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
β TRACKING IN GITSCRUM: β
β βββββββββββββββββββββ β
β β
β β’ Label: "spike" or "technical-discovery" β
β β’ Time estimate: Always include β
β β’ Link to related stories β
β β’ Track in sprint (counts toward capacity) β
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β SPIKE WORKFLOW: β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β TODO β IN PROGRESS β IN REVIEW β DONE ββ
β β β β β ββ
β β βββββββββ βββββββββββββ β βββββββββββββββββ ββ
β β βSPIKE ββ β SPIKE ββ β βSPIKE: Auth β ββ
β β βOAuth ββ β MsgQueueββ β ββ Complete β ββ
β β β2 daysββ β 2 days ββ β βReport linked β ββ
β β βββββββββ βββββββββββββ β βββββββββββββββββ ββ
β β β β β ββ
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β COMMON MISTAKES: β
β ββββββββββββββββ β
β β
β β SPIKE TOO LONG: β
β "Spike: Evaluate all cloud providers" (2 weeks) β
β β Too broad, break into smaller spikes β
β β
β β SPIKE = STORY: β
β Starting to build real feature during spike β
β β Stop, spike is for learning only β
β β
β β NO OUTPUT: β
β "I investigated but didn't write anything down" β
β β Always document findings β
β β
β β ANALYSIS PARALYSIS: β
β "Need one more day to be sure" β
β β Time-box is strict, make decision with info you have β
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β SPIKE HEALTH: β
β βββββββββββββ β
β β’ Spikes: 5-15% of sprint capacity β
β β’ If higher: Too much uncertainty, break work smaller β
β β’ If zero: Might be missing risk reduction β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ