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.