I have been talking to a number of people, including some journal editors, who seem to be concerned or even confused about the differences between Extreme Programming (XP), Scrum, and Lean Software Development in Agile. So I want to explain the differences in this post. Bill and I talked it over as I explained these concepts.
Bill: So what are the differences between these three approaches and why is this an issue for some people? What are some of the questions you are hearing?
Jeff: Well, for one, some people see these as contrasting flavors of Agile. They ask which one should we use, for example. These are different aspects of Agile but they do not operate at quite the same level. Asking which one to use is not the really right question.
My view is that these three all relate to Agile but represent different focus points. At the most granular level, Extreme Programming or XP is the one that caught attention first. It is targeted toward individual team practices. It is mostly about what individuals do to improve their development practices such as Test Driven Development, Refactoring, Small Releases, and Simple Design. XP also describes other practices that the team can use to improve its function such as the Planning Game, Daily Stand Ups and Collective Code Ownership.
Since Agile mostly started with individual teams, Extreme Programming was very valuable to them. It taught people a lot of things that are now not seen as radical as they were when they first appeared in the early 90s when XP became visible. So things like test driven development, continuous integration, and refactoring are not seen as very radical … now.
Many people use these three techniques whether they are doing Agile or not since they promote good engineering practice. One of the ways we have seen Agile fail is when it is implemented on top of poor engineering practice. This was not the only thing XP did but it was its major focus.
Scrum predated Extreme Programming in creation but not in terms of popularity. Scrum is agnostic about team development practices and assumes that you have good ones. It is more concerned with work management and team dynamics. XP does have things to say about team dynamics but Scrum is a little stronger on them.
Bill: How is Scrum stronger?
Jeff: It is stronger as it puts in place some behaviors that were not explicitly called out. For example, in retrospection, that we discussed before, the roles are more clearly defined in Scrum than XP.
Bill: Is Scrum a more articulated and defined Extreme Programming? Is it taking it in new directions?
Jeff: No. Scrum, as defined, actually doesn’t say anything about software. Scrum is about work management and team dynamics that can be used in non-software projects. Most people use it in software development and books refer to it in this way but Scrum does not call out any specific software practices. XP, in contrast, is very specifically for software development.
Scrum did not take any of the Extreme Programming practices except the daily standard meeting. It is targeted at a different place, for the management of work and team dynamics. Because of this it has things to say about scaling to larger teams while XP is quiet about this.
When you get even larger in the enterprise then Lean starts to come into play. Lean is a lot like some of the Six Sigma work in that Lean is looking at reducing waste and looking at ways to eliminate unnecessary work, value chain analysis. Scrum teams often use Lean thinking to improve the management their work and that has some interesting implications.
Bill: So if I understand you, it is really a layered situation.
Jeff: That is how I think about it and yet there are things that cross continuously. Lean concepts are useful on any Agile project. So, in fact, I see Agile projects which use all three.
Bill: Extreme Programming started down in the trenches. Scrum is there at the next level at the team leader or supervisor level. Then Lean goes up another level. It goes at the cross team, enterprise level. So all of the higher levels ones can flow back down to the layers underneath.
Jeff: Yes, but the thing I want to emphasize is that those are not cut and dry levels. There is lots of overlap. When XP talks about the practice of pair programming, which is one of the more radical concepts, there is no counterpart in Lean. But the Lean concept of taking smaller bits flows down to XP.
Bill: So it seems clear to me as to why they operate at different levels but you say there is confusion. What is the cause of this confusion? Why do they think they are mutually exclusive?
Jeff: When people hear there are different flavors of Agile, they think they are distinct and one has to choose one or the other. Some of the advocates for the different approaches present their way as the better way over the other approaches. This is what I see going on and it creates unnecessary confusion.
