Agile development works best at team scale. When a team can self-organize, refine their methods, build the toolchain, and modify adapt it to their needs, they will execute effectively. We should be happy to achieve that! I worry when we try to force-fit the same techniques at larger scales.
At the scale of a whole organization, we need to look at the qualities we want to have. (We can’t necessarily produce those qualities directly, but we can create the conditions that allow them to emerge.) When we look at attempts to scale agile development up, the quality the org wants is maneuverability.
Maneuverability is the ability to change your vector rapidly. It’s about gaining, shedding, or redirecting momentum. Keeping with the analogy of momentum, we can call that which resists change in the momentum vector “inertial mass.” Personnel are mass, because it’s relatively hard to add or shed personnel. Technical debt is a component of mass, too. It makes changes to your technical strategy harder. Actually, I’d even go so far as to say that code itself is mass. KLOCs kill.
Maneuverability has been explored most fully by the military. Superior maneuverability allows a fighter aircraft to get inside the enemy’s turn radius, then shoot for the kill. An army with high maneuverability can engage, disengage, and reorient to exploit an enemy’s weakness. In the words of John Boyd, it allows you to separate your opponent into multiple, non-cooperating centers of gravity.
Maneuverability is an emergent property. It requires a number of prerequisites in the organization’s structure, leadership style, operations, and ability to execute. I firmly believe that maneuverability requires a great ability to execute at the micro scale.
Agile development provides that ability to execute in software development. It is a necessary, but not sufficient, part of maneuverability. There are other necessary capabilities in the technical arena. I think that infrastructure and architecture have important roles to play for maneuverability as well.
I have previously given talks on the subject of maneuverability. I’ll also be posting some further thoughts about pertinent architecture decisions.