In the last year, Agile software development (ASD) has burst upon the development scene, led by the indefatigable XP aficionados. But the Agile pot has been simmering beneath the surface for more than a decade. In the past year, articles on Agile development have appeared in ComputerWorld, Software Development, IEEE Computer and Software, Cutter IT Journal, CIO, and even the Economist. I think Agile's sudden rise to fame is rooted in two facts:
Agile software development helps companies deliver valuable software in an era of constant change and turbulence.
Agile software development helps create a workplace culture that attracts knowledge workers in our Information Age.
Three key questions in assessing this hotly debated trend in our profession:
What is Agility?
What are Agile software development ecosystems (ASDEs)?
What kinds of problems does Agility solve best?
The future of our Information Age economy belongs to the Agilethose companies that have the capacity to create change (and maybe even a little chaos) for their competitors. If you can innovate better and faster, you create change for your competitors. If you can respond quickly to competitive initiatives, new technology, and customers' requirements, you create change for competitors. If you are slower, less innovative, less responsivethen you're doomed to survival strategies in a sea of chaos imposed by others. Is your company going to set the pace of change, or are competitors going to set it? In our Information Age economy, a company's ability to set the pace, to create change, lies in its ability to develop software. In a world of constant change, traditional rigorous software development methods are insufficient for success.
What Is Agility?
If turbulence and turmoil define the problem, then agility is key to the solution.
Agility isn't a one-shot deal that can be checked off the organizational initiative list. Agility is a way of lifea constantly emerging and changing response to business turbulence. Critics may counter, "Agility is merely waiting for bad things to happen, and then responding. It's a fancy name for lack of planning and ad hocism." But Agile organizations still plan; they just understand the limits of planning. Three characteristics help define agility:
Creating and responding to change
Nimbleness and improvisation
Balancing flexibility and structure
Agility is the ability to both create and respond to change in order to profit in a turbulent business environment.
Action Over Reaction
Agility is not merely reaction, but also action. First and foremost, Agile organizations create changechange that causes intense pressure on competitors. Creating change requires innovationthe ability to create new knowledge that provides business value. Second, Agile organizations have an ability to react, to respond quickly and effectively to both anticipated and unanticipated changes in the business environment.
In our volatile economy, companies need to enhance their "exploration" skills at every level of the organization. Good explorers are Agile explorersthey know how to juggle and improvise. Indiana Jones was a good explorer, somehow living through every outlandish adventure. Agility means quickness, lightness, and nimblenessthe ability to act rapidly, the ability to do the minimum necessary to get a job done, and the ability to adapt to changing conditions. Agility also requires innovation and creativitythe ability to envision new products and new ways of doing business. In particular, IT organizations have not done an adequate job of balancing the needs of exploration and optimization.
Agile individuals can improvise; they know the rules and boundaries, but they also know when the problem at hand has moved into uncharted areas. They know how to extend their knowledge into unforeseen realms, to experiment, and to learn. When critical things need to get done, call on the great improvisers.
Improvisation makes great jazz bands. From a few key structural rules, jazz bands improvise extensively. Having a solid foundation enables their tremendous flexibility without allowing the music to degenerate into chaos. The proponents of business process reengineering and software engineering methodologies probably blanch at the thought that improvisation, rather than carefully articulated processes, is key to success. Yet in today's turbulent environment, staff members with good balancing, judging, and improvisational skills are truly invaluable.
Being Agile means trusting in one's ability to respond more than trusting in one's ability to plan.