There’s a popular misconception that agile software development can solve the major problems that plague software teams. I wish that was true but sadly, it’s not.
Agile development approaches like Scrum, Kanban, Lean and XP are designed to reveal problems, not solve them. The solutions are situational — they take different forms depending on the organizational context.
Here’s a simple example.
Let’s say we have a software development team that is often late in delivering the final product. They’ve been together for a while and delivered multiple releases but they are almost always late.
Management and the team decide to try Scrum hoping that a fresh approach will enable the team to deliver on time. The team dives in defining stories, planning sprints and delivering working software iteratively. Will they deliver the final build on time?
If the late deliveries stem from poorly defined business requirements and lack of business participation, Scrum will not solve the problem. What Scrum will do is highlight the lack of business involvement earlier in the project thus providing an opportunity to fix the problem.
If the late deliveries result from optimistic work estimates by the development team, Scrum will not solve that problem either. Sprints will deliver less than planned and alert the team that they need to adjust their estimates for future sprints. They may still deliver the final build later than expected but at least the problem will be well publicized in advance.
If the late deliveries are caused by lack of teamwork and in-fighting amongst the team members, those behaviors will likely continue. The frequent deliveries mandated by Scrum may draw attention to these issues but won’t solve them.
The critical concept behind Scrum, Kanban, Lean, XP and other agile development approaches is continuous improvement — identifying problems and solving them — continuously. The effort will never be perfect — technology changes too fast for that — but the team will continuously adjust and improve.
If your team really wants to be agile, you need to recognize that agile development doesn’t solve anything. It reveals problems and helps you make adjustments.
Often late beans that the capacity of the team is lower than estimated. Scrum will force you to use actually realized velocity, meaning that you will only commit to what is achievable. So your team will probably deliver less, but on time…
Scrum might help you understand you have to ask for less if you want the team to be on time.
Agreed. Scrum helps expose the problem and that’s first step toward solving it.
Amen! Agile does not solve problems, but only highlights and magnifies them. The common theme here, I think, is that it the development approaches help align expectations with reality, something we could all stand to do better.
— Allison from Miracle Technologies