Friday, May 21, 2010

Becoming Agile in an Imperfect World

Authors: Greg Smith, Ahmed Sidky
Published: 2009
Publisher: Manning Publications Co.
Paperback: 408 pages
The authors of  Manifesto for Agile Software Development  unambiguously acknowledge  the value of processes and tools, comprehensive documentation, contract negotiation and following a plan, even though they place more importance on individuals and interactions, working software, customer collaboration and responding to change.
However many agile zealots are totally closed to the idea that there may be something good in traditional software process development and demean anything related to it. So it was a real pleasant surprise to come across this book written by two agilists - Greg Smith and Ahmed Sidky, who do not believe in throwing the baby out with the bath water in their enthusiasm to introduce agile methods in an organization.

There are many good books on agile principles and techniques. But this is the first book I have come across which lays out a detailed and systematic roadmap from the culture of  traditional software development to that of an agile culture. The need for such a book has been well recognized by Mary Poppendieck, an authority on lean software development, who has written the foreword for this book.

The book consists of 23 chapters, spread across eight parts.
Part 1: Provides  a foundation for understanding what agile is and introduces a case study  that is hypothetical yet based on authors' hands-on development and consulting experience. It is a story of a fictitious yet close to real-life company Acme Media, which runs throughout the book to illustrate the transition from a  traditional to an agile environment.
Part 2: Helps to put a process in place which support adding agility to the organization's existing methodology. It proposes an assessment methodology which can help to  understand the potential for improving  the existing development lifecycle. The importance of getting buy-in across the company - the executives and the team-members - is stressed and a blue print  to achieve it has been described. Tips on how to evaluate and select a pilot project for agile development are also provided.
Part 3: Talks about the project feasibility study , envisioning the product to be delivered, selecting and  aligning the  team-members to the project goals.
Part 4:  This part is about prioritizing the features, and creating a product backlog with user stories and estimating the user stories at the right level with the right people.
Part 5: Discusses discuss how to create an overall release plan and how to enriched it  before each iteration begins. It also has a discussion about obtaining team commitment for the iteration by involving the team members in the detailed iteration planning process.
Part 6: This part recommends having an iteration zero first before starting the development iterations. This can be utilized for setting up the development environment, finalizing vendor contracts, and preparing  the team for the project. The next chapter in this part deals with the development phase iterations and demonstrates the agile principles in the case study project . This part concludes with a chapter on testing in an agile environment,  which going beyond customer validation, discusses  unit, integration, and exploratory testing.
Part 7:  Agile projects operate in a very dynamic environment. This part first deals positively adapting  to the  project situations,  like features being larger like expected, changing business requirements, discovery of technical constraints, team member unavailability etc.. This is then followed by discussion on final testing, release, deployment and conducting retrospectives.
Part 8: In this final part the authors discuss how an organization can move from project level agile adoption to enterprise level agility.

A very well written book containing lots of useful techniques  and templates which can be easily adapted to the organization's need.
However the case study described in this book though it illustrates the agile concepts well, seems rather smooth sailing. It could be enhanced with examples of more critical  and problematic situations, normally encountered in real life projects.
Nevertheless I would highly recommend this book to anyone who would like to transition from the traditional way of software engineering to a more agile way.

Download the Table of contents and  two sample chapters of this book  from

No comments:

Post a Comment