Agile is not something you learn in a training course (alone), you learn it by doing. But sometimes you might need some new inspiration to try new things, since we are always looking for new improvements, practice what you preach! The books below are not books you read once, they are books you study, and pick up from time to time for reference. They provided me with new inspiration and I hope they will provide the same to you, dear reader.
10. Lean Software Development – Poppendieck
Starting with the least practical book on this list, it provides a lot of theoretical background on Lean Software Development. This book explains the Lean concepts as applied in Lean Manufacturing, and translates them to the world of Software Development. No prior knowledge of the Toyota Production System or Lean Manufacturing is required. Although XP and Scrum do not explicitly refer to Lean, reading this book will give you a better understanding of the ideas behind it’s principles.
9. Scaling Lean & Agile Development – Larman & Vodde
A common misconception is the Agile world is that Agile would only work in small companies or small software teams. While it’s certainly easier to implement, Agile can also bring a lot of value to larger organisations as well as enterprises. When you have multiple teams working on different products, additional structures are required to keep your teams effective. Larman and Vodde are clear advocates of Feature Teams, a structure which drives a steady flow of features to your products, rather than organizing your teams around technology specialisations.
8. Agile Retrospectives – Esther Derby
Retrospectives are an important aspect of Scrum, however in the early versions of the Scrum Guide, it was not defined. Reason was that according to the Scrum founders, improvement and introspection should be done continuously, and not only at the end of an iteration. Later the value of a separate ceremony in a Sprint was acknowledged and it was added to the Scrum Definitions. Retrospectives are hard, people need feel they can speak freely, share a common goal of improving and everyone should be able to contribute. Every Scrum Master should read this book, since it’s your job to coach the teams to continuously want to improve. The book provides techniques for different situations you team find themselves in. When you are doing Scrum for a while, it can sometimes be hard to keep people focussed on continuous improvement and sometimes doing things a little differently might spark things up.
7. Patterns of Enterprise Application Architecture – Martin Fowler
This book is a more applied version of the famous Design Patterns book by the Gang of Four. It provides practical examples in various programming languages, which are targeted at solving software architecture problems you will encounter in real life. Everyone who is involved in Enterprise Application Architecture (In Agile that makes all of us) should read this book.
6. Agile Database Techniques – Scott W. Ambler
A problem already dating back to the pre Agile era processes like RAD and RUP, database administrators always claim they have to get the data model right the first time. Scott proves otherwise and with clear examples of how databases can evolve in Agile projects by making your databases changes backward and forward compatible. In a sense a datamodel is a public API, and we have dealt with exposing public API’s already for a long time in Agile Software Development.
5. Refactoring – Martin Fowler
One of my favorite books in Software Development, only made number 5 since it’s not really directly about Agile. My personal copy still has a price tag in guilders so that should give you an impression how old it is. Fowler explains the need for and the use of Refactoring in Agile projects, at the time mostly targeted at XP, but still very current in Agile Software Development in general. It covers the majors Refactorings and explains how it drives to Improve the software design.
4. Agile Project Management with Scrum – Ken Schwaber
I had already been practicing Scrum for a few years when I read this book, and as such was familiar with the concepts. This book deserves a place on the list since it was written by one of the authors of the Scrum framework, but for me it was not providing a lot of new insights. But still it provides a good overview of the framework and its concepts.
3. eXtreme Programming Explained – Kent Beck
Although the book is dating back to 1999 it’s contents are still very useful today. The book has changed the way we look at software development. It defines the twelve principles of XP, on which it is quite strict (no cherry picking). Although the XP movement has been a bit overshadowed by other Agile approaches like Scrum, some of the XP practices we also find in Scrum, and other which are not enforced by Scrum, actually mix very well, like Continuous Integration, Pair Programming, Unit testing and Refactoring. These are not part of the original Scrum definitions but they are now formalized in Developer certification programs from both the Scrum Alliance as well as Scrum.org. This is why this book is a must read for anyone involved in Agile Software Development.
2. Succeeding with Agile – Mike Cohn
I was one of the fortunate people to attend a CSM training from Mike Cohn at the time of the release of this book, and I got it from Mike himself. Off course I got him to sign my copy on the spot. The book covers a lot of aspects of Agile, from the traditional concepts of Scrum, but also scaling, distributed teams as well as organizational aspects, such as HR related matters. A nice touch of the book are the elements in the margins: “Objection” and “Things to try now”. The first addresses common misconceptions or critique of a specific aspects, which is addressed in this paragraph, which can provide useful ammunition when you encounter resistance in an organisation adopting Scrum. The Things to try now, give you concrete suggestions to try in your organisation, since learning about Scrum is less about reading books and more about learning by doing (and failing, and some more learning).
1. Scrum and XP from the Trenches – Henrik Kniberg
The reason I put this book on number one, is because it’s such an easy accessible book for people to quickly get familiar with Scrum and XP practices. The book doesn’t dictate a certain way of working, it simply provides practical examples of agile in a real organisation, supported by concise explanations of why it works, and in some cases also explains things they tried which didn’t work. It really goes beyond the basics of Scrum and contains interesting examples of for example working with different teams on one or more backlogs. It’s the easiest most accessible book you’ll read on agile software development.