How do you deal with maintenance work, additional to product development, in an iteration-based environment?
Here are some possible approaches:
1. A certain, fixed, amount of time per iteration will be reserved for maintenance work, let’s say 10%.
Pro: At a first glance it looks reasonable – and above all “easy to schedule” from a classic management perspective.
Contra: At a second glance this approach leads to the need for task switching during a sprint. And as we know multitasking has a remarkably negative impact on productivity. This problem potentiates if you got a “maintenance batch” that is too large to fit into the 10% budget. So you would need to discontinue the maintenance work until the next sprint – or you simply may get into trouble delivering the promised product increment.
2. A variable maintenance time budget, negotiated for every sprint.
Pro: You earn higher flexibility to deal with variable complexity of maintenance work what should lead to higher predictability for your product development.
Contra: You still run into task switching issues and the maintenance work may affect your product development work.
3. Doing pure maintenance iterations.
Pro: You clearly separate maintenance work from new product development. People can focus on one theme at a time.
Contra: What if urgent maintenance has to be done during a product development sprint?
4. Have a maintenance team for a longer period of time. Rotate it afterwards to spread knowledge and avoid potential demotivation with the maintenance guys.
Pro: No task switching, no product development interference (you may be able to negotiate the time for the team rotation).
Contra: Need for all necessary domain and technical knowledge in the maintenance team. But this should build up if you use the approach for longer.
But a more fundamental question should be: what exactly is maintenance work for you? Bugfixes? Improvements? Because from the answer new aspects may open up – e.g. to think about a “zero defects” strategy or your application lifecycle management.