Most software development teams today are using a process based on the idea of iterative development and incremental delivery.
Exactly how long the iterations are and how big the increments are may vary. Whether the iterations are treated as time-boxes or are used to establish a cadence may vary, too. But in general, teams are no longer using an end-to-end linear process for software development and delivery.
The details of various process models and frameworks differ, but the overall shape of the process is that teams carry out planning in waves or stages, zeroing in on near-term work close to the time they will start on it. Then they plan to bite off a reasonable chunk of the planned work and deliver it within a certain time frame.
We want to get in front of risks and external dependencies so that we will not stumble over them at the last moment, but on the whole we defer detailed planning and design until close to the time we will implement the software. That way, we avoid investing a lot of time in details that are subject to change.
We all know the mantra, “Plans are useless but planning is essential.” We all know that our plans are a best guess at a point in time, and nothing more. And yet, we all feel stressed when our plans are disrupted.
We know that unexpected things happen in the normal course of work. Priorities change. Urgent requests come in. Production issues occur.
And the processes we use – Scrum, Kanban, “Scrumban”, or some customized variation of these – include mechanisms to handle unexpected work gracefully.
Despite all these things, we still tend to react to unplanned work as if it were an emergency.
Is everything really an emergency? And what should we do when the unplanned work pushes our planned work aside?
In the context of software development, what’s an emergency, really? Is every unexpected occurrence a genuine emergency? How can we tell the difference in the heat of the moment?
Is it realistic to think a development team can take on more work than their capacity, just because the new work is deemed more important than other work in progress?
Is it sensible to gloss over software engineering principles, testing, refactoring, and general attention to detail in order to push code to production in a rush?
What are the mechanisms built into processes like Scrum and Kanban to handle unexpected, urgent work that wasn’t planned?
Why do people react as if they are required to complete everything that was planned in addition to every urgent, unplanned item?
What are practical ways to respond when an unplanned item comes up, that ensure we are delivering the maximum possible business value – with emphasis on the word possible?
Join us in the next First Monday Webinar to explore these questions and to consider the unique problems you are facing in your own organiztion. Two sessions with the same content are scheduled:
There’s limited participation, so that we’ll have time and capacity to explore your real-world situation. See you online!