Among the different enlightning reflections, Bob Martin draws a clear and interesting perpective of the last decade (and more) about why Agile is somehow not completely fulfilling the original expectations: Agile was originated by developers (all Agile signatories were basically developers), then it got conquered by project managers and lost part of its original intent.
Scrum unintentionally contributed to this, being seemingly so simple to be understood from managers, but so generic about how to build a potentially shippable product increment every sprint to be incredibly hard to adopt. Thus Scrum was actually the way people with project management background used to enter the Agile world either with good intent or opportunism.
On the other side XP was THE Agile method of developers.
I will try to analyze and compare Scrum and XP here to show how they're aiming at the same purpose and how both effective Scrum and effective XP embody the same genuine Agile principles and values.
Scrum and XP have actually a
lot in common, more than one might think.
They are both based on iterations and have some practices in
common:
- the Planning Game in XP overlaps with the Sprint Planning in Scrum
- both produce a working SW increment of the most valuable functionalities at the end of each iteration
- the team is self-organized and decide how to build a certain function
- business and developers work together on daily basis
- the system metaphor in XP overlaps with the concept of User Story which is basically used in every Scrum Team I know, even though it is not explicitly requested by Scrum which basically only mention generically a backlog item as input to the Sprint
- both encourage similar values, and actually share two values: Courage and Respect
One might also claim they
have some slight differences:
- Scrum prescribes Sprints which can be 1 to 4 weeks long, while the length of an iteration in XP is 1-3 weeks long
- the customer works together with developers in XP, while Scrum proposes the role of Product Owner as customer representative to suit the cases where the customer cannot physically work with the team (btw that’s one of the reasons why Scrum scales and XP doesn’t)
- strictly speaking, Scrum teams do not allow changes to their Sprint Backlog. XP teams instead can allow changes within their iterations: as long as the team hasn’t started working on a particular feature, a new feature of equivalent size can enter the iteration in exchange for the not yet started feature (however many times I teach the same approach to the Scrum teams I coach, especially when the environment allows and it does not become the norm).
However the
biggest difference between Scrum and XP is that Scrum is basically
focusing on how to organize the work, but it does not say anything about how to
do the work, XP instead is more focusing on practices to develop high
quality software effectively.
At the same time I
learned (and thus agree with Dave Rooney) that Scrum
is not enough to sustain an effective Agile SW development. Scrum is a
great starting point if you want to learn how to be Agile, but I saw many Scrum
teams, getting more mature with Scrum and not improving their performance overtime
without using proper technical practices, because they accumulated a too big
technical debt. Instead they have to learn to build the product in a different
way.
Scrum explicitly
avoids prescribing technical practices, but a Scrum team will hardly succeed
without using certain XP engineering practices, like Test Driven Development,
Continuous Integration, Pair Programming, Collective Ownership, Coding
standards and Refactoring.
Effective Scrum and XP together can really unleash the full potential of a team, allow delivering effectively high quality products that customers love and stay true to the original spirit of the Agile manifesto.