I have decided to go back and re-read some of the Agile books from my list of books I recommend to people wanting to know about Agile.
The first book that I picked was the last on my list, it is one of the larger of the books I recommend at 440 pages so it has taken me a while to get through it although I’m glad that I have.
The title of the book is a little misleading as the book is not about general Agile development but it is in fact all about Extreme Programming (XP) and its aim is to provide the reader with information based on the authors' experience not only about what XP is, its practices and principles but some real world advice about Agile projects.
The information in the book is broken down into three sections:
- Getting Started
- Practicing XP
- Mastering Agility
In the preface of the book, the authors provides some advice about who should read what parts of the book:
- Merely curious about Agile – Read Part 1, then move onto Part 2
- Enough to do your job – Chapter 3 from Part 1 then all of Part 2
- A leader or bringing Agile to your organization – Read the book cover to cover
They also point out that the book is not just for purists but that in fact if you are only concerned with writing good software, the information contained in parts 1 & 2 will be of use to you.
The first couple of chapters outline why an organization would want to consider looking to implement Agile and how you can go about introducing it with a warning about not trying to create your own methodology but to use one of the existing methodologies.
Chapter 3 provides a high level explanation of the XP Lifecycle, XP team and XP core concepts. It is this chapter out of all the chapters in part 1 the authors recommend people should read due to its focus on explaining XP which is key for the rest of the book.
Chapter 4 provides guidance for people looking to implement XP setting some prerequisites that you should have in place before attempting to do so and some recommendations for you to follow to help you establish Agile in your organization.
This part is the main section of the book making up fully 2/3 of it, it is made of 5 different chapters and covers all of the various team and technical practices that are associated with XP.
Each chapter concerns one phase of the XP lifecycle and details the practices connected with that phase:
- Thinking – Pair Programming, Energized Work, Informative Workspace, Root-Cause Analysis, Retrospectives
- Collaborating – Trust, Sit together, Real Customer Involvement, Ubiquitous Language, Stand-Up Meetings, Coding Standards, Iteration Demo, Reporting
- Releasing – “Done, Done”, No Bugs, Version Control, Ten-Minute Build, Continuous Integration, Collective Code Ownership, Documentation
- Planning – Vision, Release Planning, The Planning Game, Risk Management, Iteration Planning, Slack, Stories, Estimating
- Developing – Incremental Requirements, Customer Tests, Test-Driven Development, Refactoring, Simple Design, Incremental Design & Architecture, Spike Solutions, Performance Optimization, Exploratory Testing.
Most of the sections in each chapter have what the authors call Études which are exercises, usually for the whole team, to carry out to help you understand and master the practice that is being explained. Each section also contains contra-indications which are to help you identify when you shouldn’t try to implement the practice due to conditions on your team or in your organization.
The final part has 6 chapters, the first chapter in this section lays the groundwork for the other 5, the authors explain that they have distilled values and principles from various agile sources and found 5 themes each of which is covered in this section.
Each chapter contains some information about the theme how it often works in practice then a section called “Beyond Practices” where the authors offer advice about the theme through anecdotes of their experience in the field and how you can see that things don’t always go to plan.
The strength of this book is that you can read it cover to cover and learn all about Extreme Programming and its Agile practices, but you can also use it as a reference book going back to each practice and using the Étude to improve you and your teams skills in that area.
Although this book is primarily about Extreme Programming, today you will find the majority of practices used in most Agile methodologies and it is for that reason that even if you aren’t doing XP but want to know more about the various Agile practices, it is worth reading the book.
The one thing that did strike me on re-reading this book was the change in mindset that has happened in the Agile community since this book was written, where it says you should implement all of the practices or you are more likely to fail whereas today a more evolutionary approach is usually taken where you don’t attempt to implement everything immediately and build up the number practices you implement.
Due to its length, reading this book cover to cover is a real commitment but if you are new to Agile, it is worth the investment of time, if you are already practicing Agile, then this book also has a lot to offer as you may discover practices you have never heard of before or find ways to improve the ones you are already doing.