Edinburgh Castle
The Art of Agile Development
AuthorsJames Shore and Shane Warden
DateOctober 2007
ReviewerRoger Spooner
Cover image for Art of Agile

This book is a treasure. Not only does it explain Agile Development clearly and entertainingly, but it is thoroughly grounded in how it pans out in real organisations. It also covers several business and software engineering issues which I didn't expect, such as unit testing techniques and process improvement.

It is aimed at people who want to start using Extreme Programming on their software development projects. It seems that XP is almost, but not quite, synonymous with Agile Development. For each of its principles, we learn the concept, what the outcome should be, how it might go wrong, and where to read more. Sometimes there is a short FAQ section. If your existing organisation can't incorporate this principle; sometimes you can make up for it in other ways, or sometimes you can follow the principle while still satisfying your bosses.

The book starts with the thoughtful principles of XP, such as pair programming (continuous review and better design through discussion), energised work (sleep well, be motivated, and focus when in the office), an informative workspace (sharing progress with the team), root cause analysis (ask "why" 5 times, to get to a more substantial answer), retrospectives. The book goes on to collaborating: sit together, real customer involvement, and more. The next part is releasing: continuous integration, weekly iterations, all the follow-on tasks like integration done. Planning includes product vision, release planning, iterations (development cycles), risk, stories (tasks), and estimating. Finally, the principles of development include incremental requirements, test-driven development, refactoring, and simplicity.

The book is designed either to be dipped into, having cross references and a target audience for each section, or to be read cover to cover. It's really all about how to apply Agile Development within a real project. What should you do if some people don't want to join in? How large or small can a team be? What information do you share with stakeholders outside the team itself? Can you manage without a particular principle?

Despite having started with a tone that didn't capture my enthusiasm immediately, the body of the book is engagingly and genuinely plausible. The authors have worked in real companies on real projects, and know how to get Agile to work. Personally however, I tend to feel that Agile development works better with trustworthy, skilled and flexible staff, than with "entry-level" skills. If people don't have the confidence to go from designing to testing to developing to releasing all within the same day, then I think they may find this more challenging than working to a specification.

One of the ideas new to me is the "retrospective". This is a regular meeting, perhaps once after each iteration which should ideally be weekly. The team discusses what went well, and what didn't, then chooses a single topic to improve for the next time. This bright approach to process improvement is in contrast to the procedures, audits and cheeseburger outcomes of some quality management philosophies. The book also explores testing in more detail.

The final section explores ways to improve your results with XP even beyond the textbook methods. Many of the ideas are hinted at throughout the main text, so this might be seen as a kind of conclusion to wrap up the volume.

The whole book is a pleasure to read. Without being jokey, it is fun and informative. It is well printed and laid out with extensive cross references and some summary boxes or quotations. The references to other books make it very well linked within its area of software engineering. Without doubt, the greatest strength of this book is the integrity and experience that shines through the wise responses to real world challenges posed by traditional organisations.


Getting Started
- Why Agile
- How to be Agile
- Understanding XP
- Adopting XP

Practising XP
- Thinking
- Collaborating
- Releasing
- Planning
- Developing

Mastering Agility
- Values and Principles
- Improve the Process
- Rely on People
- Eliminate Waste
- Deliver Value
- Seek Technical Excellence

faded separator

Page maintained via github.com/edinburgh-pm/edinburgh.pm