There is some meat in this book, but you've got to nibble around a whole lot of loess to get it.
One of the vital components of Adaptive Software Development is clearly articulated Project Mission, Shared Vision and Clear Focus, and it is the responsibility of the whole team to create the mission and use it on a day-to-day basis as an alignment tool to keep the common direction.
I would also highly recommend "Agile Software Development" by Alistair Cockburn in addition to this book.
It's hard to express just how good this book is. I can't recommend it highly enough. If you're interested in the currents of thought on software development variously labeled "extreme" or "agile," then I believe you will find Adaptive Software Development to be very near to their sources.
The author distinguishes a "complex" project from one that is merely "complicated." As one might well imagine, he would classify a project to develop the avionics software for the NASA space shuttle as complicated--but not complex: its goal is well defined and attainable by applying the stable laws of Newtonian physics. Development of an internet-based product for the consumer marketplace on the other hand is complex because one might expect almost anything to change during the course of such a project: target technology, competitive offerings, financing, marketing strategy, etc.
Complexity arises from moving fast in a continually changing environment.
Adaptive Software Development comprises
(1) Adaptive Conceptual Model--the theoretical foundation,
(2) Adaptive Development Model--a software development lifecycle for complex projects, and
(3) Adaptive Management Model--principles for managing complex projects.
(1) The Adaptive Conceptual Model proposes that a software development organization is a complex adaptive system like a marketplace or a flock of birds. According to the theory, CASs composed of independent agents acting for themselves without centralized control can under proper circumstances develop "emergent" capabilities exceeding the mere sum of the capabilities of the individual agents.
It is further proposed that only emergent capabilities are powerful enough to tame complexity. Software development organizations aspiring to do so must create the proper circumstances for the emergence of superior capabilities. The Development Model and the Management Model show the way.
(2) The Adaptive Development Model has three phases: Speculate, Collaborate, Learn. A typical project is expected to cycle through the phases several times. The output of each successive cycle converges on the final product of the project.
The beginning of each cycle is called "speculation" in preference to "planning" to reject the command-and-control philosophy that stifles emergence. ASD establishes a general direction, hypothesizes a product with a set of components, then puts the developers to work. Tasks are not specified in the ASD project plan--only the components to be completed by the end of the cycle.
Collaboration is the phase where development occurs. Under conditions of "diversity, rich relationships, unfettered information flow, and good leadership (p. 45)" collaboration can be the crucible of emergent capability. To foster this emergence, the project leader must keep the team "poised at the edge of chaos," imposing just enough rigor on the collaboration to keep it from spinning out of control. To impose any more rigor would stifle emergence. Borrowing from Ralph Stacey, Mr. Highsmith cites five dimensions for measuring how closely a project team approaches chaos. The goal is to structure collaboration so that it has just enough--but never too much--of each of the following:
1. Information Flow
2. Diversity
3. Rich Connectivity
4. Contained Anxiety
5. Power Differential.
Mr. Highsmith observes that adaptation, not optimization, is the key to success in a complex ecosystem. Software developers adapt by learning. ASD ends every cycle with specific collaborative learning activities including customer focus groups, technical reviews, post-mortems, etc. The adaptations resulting from the learning phase keep the output of subsequent cycles converging on a successful product.
(3) ASD gives to the project leader responsibility for establishing the conditions under which superior capabilities emerge from the collaboration of team members. This responsibility entails "the ability to help teams to understand the project's mission, to stand back and let the group struggle with mistakes, to encourage learning, to balance the need for flexibility and rigor, and to force decisions onto the group (pp. 209-210)."
To balance successfully between flexibility and rigor--poised at the edge of chaos--managers of complex projects must attend primarily to two structural elements: workstate and network.
ASD manages workSTATE in preference to workFLOW. Instead of monitoring the completion of tasks, the project leader tracks the completion of components. Tasks are not necessarily prescribed. Team members decide for themselves how to build the components. To scale up to large projects, workstate management defines explicit milestones for each component describing its degree of completion. Progress is tracked against these milestones.
The emergence of superior capability through collaboration depends on the communication network of the collaborators. For smaller, collocated teams with sufficient interpersonal skills, it will emerge informally. For larger teams, ASD prescribes a conscious effort to build it and to maintain it. The remote nodes of a virtual team are all too likely to fall into a state of insufficient interaction.
The collaboration network should provide team members just a little more information than they need, stopping just short of overload. Information clutter must be avoided. Content must not be provided without context (author, revision date, approval status, for example). The formal properties of the collaboration network must be identified and tuned to the needs of the complex project. A "collaboration service layer" of tools (mostly web-based) and practices must be installed. A new role, collaboration facilitator, extending the role of JAD facilitator, should be created to tend the collaboration network.
Is a software development organization really a complex adaptive system? No matter. Mr. Highsmith has ably used the theory of complex adaptive systems as a powerful metaphor for unifying many existing ideas about managing complex software development and for generating new ones--with at least as much validity as older theories have been applied in the past. Stimulating and refreshing. A must-read by any standard.