Estimating Development Capacity Realistically With Unplanned Maintenance Work
Defining Development Capacity
Development capacity refers to the total amount of software development work a team can handle within a certain timeframe while maintaining quality and velocity. It is determined by the number of developers, their skills, experience levels, tools and processes used, and time available for focused work.
Accurately defining and tracking capacity allows organizations to plan and commit to reasonable delivery timelines. However, unplanned work often consumes capacity, leading to missed commitments. To estimate capacity realistically, unplanned work must be accounted for.
Accounting for Unplanned Work
Unplanned work refers to disruptive requests and issues not factored into capacity plans, including:
- Production bugs and hotfixes
- Security patches
- Technical debt resolution
- Support requests
- Administrative tasks
If not budgeted for, these tasks can quickly consume 30-50% of total development capacity, derailing project timelines. Organizations that do not track unplanned work tend to overcommit capacity.
Deducting Historical Unplanned Work
The most straightforward way to account for unplanned work is examining past trends. Analyze logs from the previous quarter to calculate what percentage of capacity was spent on unplanned tasks. Deduct this historical percentage from available capacity for future commitments.
Adding Capacity Buffers
An alternative technique is adding capacity “buffers” or reserves to estimates. For example, if unplanned work historically consumes 15% of capacity, plan for 85% utilization and leave 15% open for disruptions. This buffered capacity should not be used for planned work, serving as overflow for unplanned tasks.
Techniques to Estimate Unplanned Work
To arrive at more precise unplanned work adjustments, organizations can leverage these techniques:
Unplanned Work Tracking
Require teams to log all unplanned tasks and the capacity consumed. Over time, rich data is collected, enabling highly customized unplanned work calculations by team, application, exception type, and other dimensions.
Interrupt Rate Tracking
Record all disruptions to planned work – emails, meetings, phone calls, production issues, etc. Calculate average interrupt rates and the capacity lost. Deduct this capacity from estimates before committing.
Comparative Benchmarking
Research unplanned work rates across comparable teams internally, at other companies, and industry benchmarks. Deduct the average rate.
Capacity Utilization Reporting
Instrument agile tracking tools to calculate percentage utilization and capacity consumed by initiative. This reveals overallocation, spurring corrective estimate adjustments.
Managing Interruptions and Context Switching
While factoring unplanned work into plans is essential, organizations should also actively manage work environments to minimize unnecessary distractions. Two key techniques include:
Interrupt Coalescing
Train staff to avoid interrupting development teams for non-urgent requests. Designate blocks of time where inquiries can be made. Batching questions allows for fewer context switches.
Focus Time
Structure schedules to provide sizable “focus time” blocks – 2-4 hours where developers can apply sustained attention on priority initiatives without distractions. This enables flow states and progress.
Building Buffer Time into Estimates
While deducting historical unplanned work percentages from capacity plans is prudent, additional buffer time should be added within task estimates, including:
Padding Estimates
Increasing individual task estimates by 10-20% addresses inherent uncertainty in requirements, technical challenges, and task duration – without building in slack time at the end of projects.
Spikes
Front-load initiatives with focused investigative spikes to surface complexities early. These upfront buffers expose hidden effort before team velocity is dedicated long-term.
Technical Debt
Dedicate buffers for addressing technical debt before features are scoped. Allocate time to pay down issues early instead of allowing drag on new feature velocity.
Setting Realistic Expectations
The best capacity plans falter without supportive delivery culture focused on sustainability, transparency, and learning. Leadership should foster environments where teams can be realistic about work without retaliation or punishment.
Incremental Goal Setting
Set milestone-based goals allowing flexibility in pace and sequencing. Avoid arbitrary end-dates without accounting for discovery and refinement logical in software development.
Capacity Goal Formulation
Make capacity planning a collaborative, bottom-up effort jointly involving leadership, teams, and project managers agreeing on work volume teams can handle.
Transparency Over Commitments
Display capacity consumption and task completion transparency through information radiators like agile boards and dashboards. When surprises happen, teams should raise issues early.
Communicating Capacity Constraints
Consistently communicating team capacity and overalignment risks with stakeholders across the business tempers unrealistic expectations. Some best practices include:
Product Management Partnership
Include product management in agile ceremonies so they fully understand team bandwidth and can communicate constraints to leadership when prioritizing demands.
Current Work Review
In every executive review, include updates from teams on capacity consumption, unplanned work, and realistically achievable targets given existing commitments.
Targeting Under-Commitment
Cultivate a culture of under-committing targets through low-risk, under-budget projects demonstrating more, not less, can be consistently delivered.
Automating Data Collection
While manual tracking of unplanned work, interruptions, and capacity utilization provides better estimates than ignorance, tool automation increases accuracy exponentially. Solutions to explore include:
Time Tracking
Tools like Timely automatically classify activity across projects and initiative types, calculating capacity splits between planned and unplanned work.
Status Logging
Mobile-first tools like Status Hero allow teams to instantly log context switches and interruptions as they occur – recording incident metadata for analysis.
Ticket Integration
Linking productivity trackers to ticket systems extracts key metadata on unplanned work volume over time – and the cause driving activities.
Continually Refining Estimates
Even while applying the techniques outlined above, unknowns make early stage estimates difficult. Organizations must iterate on plans over time, updating for new learnings. Core methods include:
Velocity Tracking
Actively record completed work over time to build predictive velocity metrics for different teams and initiative types.
Rolling Wave Planning
Only lock estimates 6-8 weeks out, keeping further milestone estimates rough during discovery, cutting scope or negotiating trade-offs if capacity proves tight.
Unplanned Work Reviews
During sprint reviews, inspect unplanned tasks concluded in period vs initial estimates and adjust next cycle targets accordingly.