Building better software in
a world in which high speed, high change, and uncertainty are key characteristics
is the challenge we face as the century draws to a close. Organizations get into
trouble with the high-speed, high-change projects that are typical of e-business
and e-commerce initiatives. Like climbers inadvertently picking a mountain beyond
their climbing skills, many organizations don't know how to do these projects,
and even worse, they don't know they don't know. They think the solution is simply
to do more of what they have been doing. Adaptive Software Development
targets extreme software projects in which the margin for error is small. It is
intended to increase not just the staff's odds of surviving but also the chance
of its emerging with reasonable mental health! Success on extreme projects
is measured in three equally important ways. First, the product gets shipped.
Second, the product approaches its mission profile (a prioritized combination
of scope, schedule, resource, and defect level). And third, the project team is
healthy at the end. Extreme projects are profoundly different from those
less buffeted by speed and uncertainty. They require more than a new tool or technique,
more than a revised software life cycle, and more than participative management.
For them, success has a unique meaning: Success is rooted
in challenging our most fundamental assumptions about software development, management,
and even the foundations of science. To
help organizations achieve success, Adaptive Software Development has five
primary goals. Adaptive Culture The first goal of the book
is to offer an alternative to the belief that optimization is the only solution
to increasingly complex problems. Optimizing cultures believe they are in control,
that they can impose order on the uncertainty around them. Imposed order is the
product of rigorous engineering discipline and deterministic, cause-and-effect-driven
processes. The alternative idea is one of an adaptive culture or mindset, of viewing
organizations as complex adaptive systems, and of creating emergent order out
of a web of interconnected individuals. An adaptive approach raises the acknowledgment
of an uncertain and complex world from being a manager's death knell to being
part of a recognized and accepted strategy. Adaptive Frameworks The
second goal of the book is to offer a series of frameworks or models to help an
organization employ adaptive principles. The Adaptive Development Life Cycle,
for example, is a framework that reinforces the concepts and provides a practical
way of moving from the conceptual to the actionable. While there are other types
of iterative life cycles, they have not been based on underlying adaptive concepts
but rather on short-cycle determinism. There is a certain synergy in linking iteration
with adaptive ideas to combat complexity. The frameworks are supplemented by a
discussion of various techniques (customer focus groups, for example). However,
the focus is on the frameworks, not on a compendium of techniques. Adaptive
Collaboration The third goal is to establish collaborationthe
interaction of people with similar and sometimes dissimilar interests, to jointly
create and innovateas the organizational vehicle for generating emergent
solutions to product development problems. To be effective at feature-team, product-team,
and enterprise levels, collaboration must be addressed in terms of interpersonal,
cultural, and structural relationships. Adaptive Scale The
fourth goal of Adaptive Software Development is to provide a path for organizations
needing to use an adaptive approach on larger projects. Because Rapid Application
Development (RAD) approaches had a reputation of eschewing all discipline and
rigor, they were relegated by many developers for use only on noncritical toy
projects. Real projects require rigor and discipline; RAD was for playing. So,
the last chapters of the book show how adaptive development works in real-life
situations in which uncertainty and complexity create the need for an approach
that is both adaptable and scalable. A major component of meeting this challenge
is the ability to move from a workflow, process-oriented development life cycle
to one based on workstate and information. The idea for this book began
as one about RAD projects, written to answer such questions as, "Why does
RAD work?" and "How does what works scale up?" I asked these questions
because my experience and that of colleagues like Sam Bayer in implementing individual
RAD projects was highly successful. I consulted with numerous large software companies
that used RAD techniques on very large projects. I also worked with several IT
groups that could never seem to leverage success on individual projects into larger
successes. I tried to look not only at why certain practices worked, but also
at the circumstances in which they were applicable. Adaptive Management Circumstances
are defined by culture. The culture of Command-Control management has become outdated,
in part because of wider cultural trends toward flexible management styles, wider
participation in decision-making, and empowerment, but also because of a single
pragmatic fact: Command-Control management cannot process knowledge and information
quickly enough in the new economy. So, the last goal of this book is to offer
a new, adaptive management style, which I label Leadership-Collaboration, to replace
Command-Control. The ability to adapt and move quickly requires that "leadership"
replace "command" and "collaboration" replace "control." Our
business culture and styles of management have been built around an optimizing
mindset that values stability and predictability. Our management tools (derived
from this belief) workor seem to work. Consequently, we fail to understand
the sharp disparity between orderly and complex systems. Orderly systems can be
extremely complicated, but complicated and complex describe different classes
of problems. Complicated problems yield to optimizing techniques; complex problems
do not. Tools that work in orderly realms are actually antithetical to complex
situations. The disparity between orderly and complex problems requires not only
new tools, but a very different mindseta significant transition for many
organizations. Adaptive Rigor In an optimizing culture, increased
rigor (process improvement) and stabilization are the end goal. Optimizing cultures
tend to see the world as black or white, with little room for gray. If it is not
rigorous, it must be chaotic (or immature, to use the Software Engineering Institute's
parlance). An adaptive culture recognizes gray. Researchers have coined
a phrase for this turbulent gray area between order and chaosthe edge of
chaos. It is in this variable, messy, exciting polyglot that emergence happens.
In the field of evolutionary biology, for example, scientists postulate that major
evolutionary advances occur in this complex region at the edge of chaos. In
an adaptive culture, the goal of rigor is to maintain balance on this edge, providing
just enough stabilizing force to keep away from chaosbut no more. Adaptive
organizations understand the need for just enough rigor. This balance does not
come from a compromise of principles, but from an understanding of how the forces
of optimization draw down the very energy sources needed to fuel emergence. Too
little rigor yields chaos. Too much stifles emergence and innovation. So,
while one goal of this book is to offer emergent order as an alternative to a
belief in and a dependence on imposed order, it does not offer emergent order
as a complete replacement but as the basis for a new, additional set of tools
for managing complexity. I believe the difference in viewing optimization as a
balancing force rather than as a goal in itself provides a significant shift in
perspective. For me, this book was a journeyone that goes on. I invite
you to join and hope it engages you as it did me. |