Excellent book if you are just starting out down the path of agile. Provides an excellent overview of not only base practices of Scrum, XP, Lean and Kanban, but also offers up the values and principles behind the approaches, and how you can use these tools to address your specific issues.
In particular for me, it was an excellent refresher on these basics (see Values and Principles). The core idea is that if you apply the practices of agile you will probably end up with “better-than-not-doing-it results”, but to really get improvement you have to really understand the principles and values driving the practices (see What Does a Scrum Master Do All Day?)
I thought this was a pretty succinct way of pointing out the differences between these basic approaches:
“Scrum primarily focuses on project management: the scope of the work that will be done, when that work will be delivered, and whether the outcome of that work meets the needs of the users and stakeholders.
The focus of XP is software development. The XP values and practices are built around creating an environment conducive to development, and developing programmer habits that help them design and build code that’s simple and easy to change.
Kanban is about helping a team improve the way that they build software. A team that uses Kanban has a clear picture of what actions they use to build software, how they interact with the rest of the company, where they run into waste caused by inefficiency and unevenness, and how to improve over time by removing the root cause of that waste.”
I especially liked the discussion on emergent architecture. Quoting from Auke Jilderda in response to th question “So, designing for reuse isn’t always a great thing?” Auke says “It’s not really a very suitable approach for software development. What you typically do in open source is that you start by building something for one use first.” The thinking is that if you “design to reuse” you don't usually end up with the simple, “each function does one thing” type approach that something like UNIX exemplifies.
The idea is to leverage emergent design “When a system is designed so that its behavior seems to emerge from the interactions between the individual units working together, in a way that doesn’t seem to originate from one single unit, it’s called emergent design. Systems built using emergent design almost always consist of small, independent, decoupled units (like Unix tools, or ants). Those pieces are combined to perform complex tasks, and the behavior of the system comes as much from the interactions between those units as it does from the individual units themselves.”
“A system built using emergent design can grow for years, while staying maintainable and easy to change.”
Agile is full of boards - workflow, task, value stream etc. I though the discussion on the various types of boards was useful.
“The difference is that value stream mapping is a Lean thinking tool to help you understand the system that you work in; workflow mapping is how the Kanban method determines the actual steps that each work item goes through.” “A typical kanban board only shows those larger work items, not the individual tasks. And while the task board only “sees” the work items when they’re To Do, In Progress, or Done, the kanban board will have a bigger picture.”