Book Excerpt: Agile Software Development, 2nd ed.
The cooperative game model grew alongside the agile model. Originally constructed to explain software development, it struck a chord with business people, who rightly saw that business is also predominantly a cooperative (and competitive!) game of invention and communication.The creation of software is somewhat difficult to define, a bit of a conundrum, as Cockburn himself observes in the beginning of this chapter:
...although programming is a solitary, inspiration-based, logical activity, it is also a group engineering activity. It is paradoxical, because it is not the case, and at the same time it is very much the case, that software development is:
Its creation is sensitive to tools; its quality is independent of tools. Some software qualifies as beautiful, some as junk. It is a meeting of opposites and of multiple sets of opposites.
- Mathematical, as C. A. R. Hoare has often said
- Engineering, as Bertrand Meyer has often said
- A craft, as many programmers say
- A mystical act of creation, as some programmers claim
So, in this introductory chapter, Cockburn comes at it a different way: using analogies to examine what we do, asking “What would the experience of developing software be like if it were not software we were developing?” He uses examples from both his own art form (poetry) and from co-operative games, particularly rock-climbing, to explore other ways of thinking and talking about software development.
He then goes on to examine the idea of software development as a cooperative game of invention and communication more closely. The chapter considers the primary goal of the game (delivering working software) and the secondary goal, or residue of the game (setting up for the next game), where the "next game" is altering or replacing the system, or creating a neighboring system.He finishes by relating these ideas to everyday life: how the application of this "collaborative game" vocabulary can help teams think about adopting Agile software development. In this language, the team plays the game toward an agreed-upon goal: collaborating, strategizing and reflectively choosing their moves to maximize benefit for not just the team but also the larger game of the enterprise.
Chapter 1 itself has not changed much in five years, but whether you are new to this work, or simply haven't revisited it for some time, it still makes good reading: here is Chapter 1: A Cooperative Game of Invention and Communication from Alistair Cockburn's new book.
Agile Software Development: The Cooperative Game, Second Edition,
Addison-Wesley Professional Agile Software Development Series; Series Editors: Alistair Cockburn and Jim Highsmith
Copyright 2007 Pearson Education, Inc.; Published October, 2006
Update: This book is now also available at Safari Books Online.