REVIEW - Agile Software Development

Title:

Agile Software Development

Author:

Alistair Cockburn

ISBN:

0201699699

Publisher:

Addison-Wesley Professional (2002)

Pages:

278pp

Reviewer:

Chris Czarnecki

Reviewed:

August 2002

Rating:

★★☆☆☆

Aimed at the experienced audience this book brings a refreshingly different and pragmatic approach to software development. The Agile processes question the traditional process intensive approaches to software development and asks how they can be changed to provide the shortest, simplest route to successful software development.

Agile software processes are built on four core values:

  1. 1. Individuals and interactions over processes and tools
  2. 2. Working software over comprehensive documentation
  3. 3. Customer collaboration over contract negotiation
  4. 4. Responding to change over following a plan

The important thing about this book is that it recognises that all methodologies have limitations and does not detail one in particular but emphasises that they have to be tuned to not only the project but the individuals in the project team.

The first three chapters are rather abstract but introduce important concepts and also stimulate an alternative way of thinking about software development - as a co-operative game of invention, with the ultimate goal to win whilst always remembering what they have learned along the way. Communication and errors in communication form the core of chapter one, whilst chapter two concentrates on people skills and how different skill levels can be integrated and compensated for. Chapter three considers the effects of the physical environment and the cultures of the development teams. Chapters four and five are the really important chapters of the book. They detail what a methodology is and the principles used in designing and evaluating them. eXtreme programming is overviewed as an example of an agile methodology. Chapter five considers a technique for evolving a light-but-sufficient, project-personal methodology that can be useful to the project. Chapter six describes the author's own family of methodologies (Crystal), along with the principles for tuning them to meet individual project and teams needs.

The presentation style of the book is extremely clear and it is written with authority. The author has obviously worked in this area for a number of years and has drawn upon his experiences and research to provide first class examples throughout. There is no doubt in my mind that this is the most useful software process book that I have read for a number of years. Whilst the material described may not be totally suitable for all projects, everybody involved in the software development industry, from IT executives to junior programmers should read it.


Book cover image courtesy of Open Library.