Agile Software Development: The Cooperative Game
(From the Back Cover) "Coming of age for software developers means understanding that software is a cooperative effort, not something individuals do in isolation. This is a book that teams of software developers can thrive upon, full of sensible advice for a cooperative development approach." --Tom DeMarco, The Atlantic Systems Guild
Software development paradigms are shifting. The development group's "team" ability, and the effects of the individual developer, become more important as organizations recognize that the traditional approach of increasing process pressure and overworking team members is not meeting getting the job done. The pioneers of Agile methodologies question the preconceived processes within which development teams work. Rather than adding to the burden of the individual developer, Agile asks "how can we change the process so that the team is more productive, while also improving quality?" The answer is in learning to play the "game."
Written for developers and project managers, Agile Software Development compares software development to a game. Team members play the game knowing that the ultimate goal is to win--always remembering what they have learned along the way, and always keeping in mind that they will never play the same way twice. Players must keep an open mind to different methodologies, and focus on the goal of developing quality software in a short cycle time.
Based on a decade's work and research, and interviews with software project teams, this book presents sound advice for bringing difficult projects to successful conclusion with a minimum of stress. It includes advice on:
* The principles behind agile methodologies
* Which methodologies fit different projects--including appendixes to select the appropriate methodology on a project
* New vocabulary for describing methodologies
* Just-in-time methodology tuning
* Managing the incompleteness of communication
* Continuous methodology reinvention
* The manifesto for agile software development
Today's software developers need to recognize that they have a number of methodologies to choose from. With this book as a guide, they can break free of nonproductive habits, move beyond old routines, and clear a new path to success.

Review By: Karin L. Hodyl
09/02/2003At the beginning, the author states that this book is for high levels 2 and 3, not a 1. But, after reading it, I believe anyone could read and understand it. The introduction presents the concept of parsing and patterns. The author explains what we know is what we are conditioned to do, basically telling programmers they are a product of what they have done for so long. By the first chapter he states that software development is “a cooperative game of invention and communication.” This is the book’s premise.
Real-life stories throughout the book help assist reader in developing ideas to better handle difficult software. Rock climbing is the game that is chosen as the best example. Depending on how one plays can result in either a breathtaking outcome or a poor failure.
While the first chapter uses a lot of philosophical images, later chapters present new terms about people, teams, and especially methodologies. The methodologies described can all be used depending on the project (“different strokes for different folks”). In all cases, communication is key for the methodologies to achieve the desired results. The remaining two chapters, 5 and 6, thoroughly use the terms he has given the reader. In chapter 5, agile software development is analyzed effectively and gives the reader questions to ask himself. Agile is an attitude that the reader has to embrace to properly develop successful projects. In chapter 6, the author highlights a family of methodologies labeled the Crystal Methodologies to showcase one way of working through problems which the reader can copy and alter where necessary to his projects. It is basically a kit with several core elements.
The three appendices are very in-depth and may have been subsequent chapters (except for the references one). The first discusses The Agile Software Development Manifesto which the author was a part of. The second accounts other folks ideas supporting the author’s practices: two software development writers Peter Naur and Pelle Ehn, as well as a seventeenth-century samurai champion Miyamoto Musashi.
The book contains fluff, fact, and opinion about software methodologies. Deeper into the book, more accurate opinion is given with facts thrown in along the way. I recommend this book, but not with any honors. One of the only things I was not very pleased with was the author’s writing style because of the tone used. It comes across as witty, yet harsh. He gives the impression that he knows he is more intelligent than the reader, something programmers may not want to hear.
As far as content is concerned, the author’s pulls it off in a good way injecting many stories and using a multitude of references. Within the Methodologies chapter, I found the seven principles to be very effective when used appropriately. They are described in-depth with examples. The book is relevant in the area of software testing for programmers, testers, analysts, project managers, and not just “advanced” people. Various techniques used in the book are highly relevant. For example, the reflection workshop featured on page 193 depicts a great addition to anyones current software methodologies discussion and review.