Planning predictability
Protecting Sprint Plans From Interrupts
Quick Answer
Interrupt-driven work such as production incidents, support escalations and urgent requests pulls engineers off planned tasks and makes sprint plans unreliable. Teams log and categorize every interruption, find the highest-frequency sources, quantify lost capacity and trace root causes. A dedicated on-call rotation, clear incident procedures, better observability, standardized request intake and reserved capacity for operational work restore predictability for the whole engineering team.
Reducing interrupt-driven work improves engineering predictability. This involves establishing clear processes for managing urgent tasks without disrupting planned development. Strategies include dedicated on-call rotation, improved incident response, and proactive system health monitoring.
Why This Happens
Interrupt-driven work stems from various sources. Production incidents are frequent causes. System failures or performance degradations demand immediate attention. Operational escalations from support teams also create interruptions. Unplanned engineering work also includes urgent feature requests. These often bypass standard planning cycles due to perceived business criticality. Poorly defined scope or insufficient testing in previous cycles can lead to last-minute fixes. Legacy systems often lack proper observability, increasing reactive debugging efforts. Organizational structures can also contribute. Engineers not in on-call rotations may still receive direct requests. This bypasses established priority mechanisms. A lack of clear incident management protocols exacerbates the problem. Engineers get pulled from planned work to address immediate issues. This prioritization shift makes accurate sprint planning difficult.
Investigation Process
- Categorize Interruptions. Log all unplanned work. Classify by source (e.g., incident, support, ad-hoc request). Record time spent and resolution.
- Identify High-Frequency Sources. Analyze categories for recurring patterns. Determine which types of interruptions occur most often.
- Quantify Impact. Measure the average time spent on each interruption type. Calculate the total lost capacity per sprint/quarter.
- Trace Root Causes. For each high-frequency source, conduct a post-incident review or similar analysis. Understand the underlying systemic or process failures.
- Evaluate Escalation Paths. Review how urgent requests reach engineers. Determine if established channels are followed.
- Assess Monitoring and Alerting. Check if monitoring systems provide timely, actionable alerts. Identify gaps causing reactive issue detection.
Practical Example
A B2B SaaS company experienced frequent disruptions. The primary payment processing service intermittently failed. This caused customer transactions to stall. On-call engineers and often other team members were pulled into debugging. The incidents occurred several times per week, lasting hours each. Investigation showed the payment service provider emitted vague error codes. Our system's logging for these errors was insufficient. Engineers spent significant time correlating logs with external provider status pages. The solution involved implementing explicit payment transaction logging. This captured external API responses and internal retry logic. Additionally, an automated health check for the payment provider was deployed. This proactively alerted the on-call team to external issues before customer impact became widespread. The team also created a dedicated runbook for payment incidents. This reduced the cognitive load and resolution time for on-call personnel. The number of engineers pulled in reduced to only the on-call responder. This allowed other engineers to continue their planned feature development without interruption.
Preventing Recurrence
- Implement Dedicated On-Call Rotation. Assign a rotating engineer or small team solely for operational support. This shields other teams from direct interruptions.
- Define Clear Incident Response Procedures. Establish well-documented runbooks and escalation policies. Ensure clear ownership and communication during incidents.
- Improve System Observability. Enhance logging, metrics, and tracing. Proactive monitoring helps detect issues early. This enables resolution before they become critical interruptions.
- Allocate Capacity for Operational Work. Dedicate a percentage of team capacity to address technical debt. Include tasks for incident follow-ups and infrastructure improvements.
- Standardize Request Intake. Create codified processes for all external requests. Funnel all urgent requests through a central channel. Prioritize them with transparent criteria.
- Conduct Regular Blameless Postmortems. Analyze all significant incidents. Identify root causes and implement preventative measures. This reduces recurring issues.
We plan capacity for operational work as part of product engineering, so sprint commitments hold.
What Teams Usually Do Instead
Many teams react by simply pushing planned work. They assume these interruptions are unavoidable. This leads to chronic under-delivery against sprint commitments. Another common anti-pattern is assigning interrupt-handling ad-hoc. The nearest available engineer gets pulled in. This creates an uneven distribution of operational burden. It also disrupts multiple individuals' workflows. Some teams create a dedicated 'bug-fix' sprint. However, this often becomes a catch-all for unplanned items. This does not address the root causes of interruptions. Some teams also rely solely on individual heroics. Engineers work over time to complete both planned tasks and urgent fixes. This leads to burnout and reduced code quality. Ignoring the problem by not tracking interruptions also prevents improvement. Without data, it is impossible to identify patterns or measure effectiveness of mitigation strategies. They also fail to differentiate between a defect and a feature, leading to debugging discrepancies between system logs and database state.
Key Takeaways
- Log and categorize all interrupt-driven work.
- Implement dedicated on-call rotations for disruptions.
- Improve system observability to detect issues early.
- Establish clear incident response procedures and runbooks.
- Allocate explicit capacity for operational improvements.
For more on how we work, visit Better Software.
Frequently Asked Questions
What Counts as Interrupt-Driven Work?
We mean unplanned tasks that pull engineers off planned development, including production incidents, operational escalations from support, and urgent feature requests that bypass standard planning cycles. Poorly scoped earlier work and legacy systems with weak observability add last-minute fixes.
Why Does Interrupt-Driven Work Make Sprint Planning Unreliable?
Engineers get pulled from planned work to address immediate issues, and that shift makes accurate sprint planning difficult. Engineers outside the on-call rotation may still receive direct requests, which bypasses established priority mechanisms. We see chronic under-delivery against commitments follow.
How Do We Measure Interruptions?
We log all unplanned work, classify it by source and record time spent and resolution. Then we find the highest-frequency sources, measure the average time per interruption type, and calculate lost capacity per sprint or quarter. Without that data we cannot spot patterns or test fixes.
Why Use a Dedicated On-Call Rotation?
A rotating engineer or small team handling operational support shields everyone else from direct interruptions. In the payment example we use, only the on-call responder was pulled in after runbooks and logging improved, so the rest of the team kept building planned features.
What Do Teams Usually Do Instead?
Many push planned work and treat interruptions as unavoidable. They assign interrupt handling ad hoc to the nearest engineer, run a catch-all bug-fix sprint, rely on individual heroics, or skip tracking altogether. We see those habits spread the burden unevenly and cause burnout.
About the author
Better Software Team
Product and engineering team
Better Software Team is the product and engineering team at Better Software. We build new software products and improve existing applications and systems, with deeper experience in healthcare, finance and energy.