It is seductive to think about scaling agile up from teams to the enterprise. It seems the correct path to take because you can almost always find a team or two where agile methods lead to great improvements over traditional methods. However, what works for a few teams at the local level often obscures what is needed at the enterprise level for enterprise agility.
Enterprise agility is the ability for an organization to deliver value quickly when needed. Sadly, many organizations achieve successes locally, which we call team agility, but move even further away from enterprise agility.
A Typical Approach: Start a Pilot Project
Here is a typical approach to transitioning to agile. The developers in an organization have too many projects going on. Every day, they are multi-tasking to try to get things done. There are any number of reasons for this.
- Some people have certain special skills, domain knowledge or familiarity with legacy code, and so need to be shared across several teams.
- Teams get formed and reformed with every new project. Managers of the different roles (business analysts, developers, testers) are not coordinating these assignments so people are not immediately available when they are needed. So, to handle this, people get assigned to two or more projects so they will always have something to do.
- The most highly skilled, in-demand people end up being sucked into many projects. In the chaos, they are constantly multi-tasking. And other people are stuck waiting for them before they can make progress.
For example, suppose we have 100 people and 50 projects going at the same time, each involving an average of 10 people. This means that each person is working on an average of five projects. We decide to go agile and start a pilot project.
We pull together a cross-functional, self-organizing team. Following agile practice, we ensure the pilot team is collocated and give it a dedicated team room. We want to assure success, so we assign those highly skilled, in-demand people to the pilot. And each team member is dedicated to this one pilot project. What will happen? Even if nothing else changes, experience tells us that this team will be up to three times faster and will build higher-quality code. Clearly, the pilot project was a success!
But was this because they were agile? Or was it because the whole team was focused on one project and had all the resources they needed?
The Problem: Early Success Without a Path to Scale
That is great for the pilot project. And it is great for the highly skilled people because they aren’t having to multi-task and can use their skills to their full potential. But it is not so great for the rest of the organization because these critical people are no longer available.
While the pilot project team had great success, the rest of the people in the organization now had slightly more than five projects each to work on. And since they no longer had access to those highly skilled, in-demand people who played key roles in their projects, they experienced even more delay. They had even more difficulty delivering product and quality suffered. They all had to work harder than ever. And even so, less value was delivered. The business suffered and the flow of value suffered.
The Wrong Next Step
So, what do you do? The agile pilot project seems to have shown that agile is better than the current process. The obvious solution would be to create another agile team. And keep doing this until the entire organization has transitioned to agile. For a while, we would be pleased because each new agile project would achieve the same or similar great success as the first one. And yet, the rest of the organization is getting worse and worse.
Eventually, the agile teams will start running into the wider organizational impediments. The agile approach we are taking may not surface these impediments in the early days because we are focused on making individual teams successful. And when they do become clear, our agile-at-the-team-level approach will do little to solve the larger, enterprise issues.
At best, we have optimized at the local level and failed to optimize the whole system.
Teams might succeed but the business has not.
Scaling Agile Is an Enterprise-wide Issue
Should we conclude that scaling agile is difficult? Or, lament that the organization will not solve the real problems they are facing, problems which are especially complex and difficult to solve?
No What we can conclude is that agile does indeed help teams. But we need another approach if we want to achieve enterprise agility. We need an enterprise-wide approach. That is what Disciplined Agile and agile/lean thinking does.