Extreme Programming vs SCRUM | XP vs SCRUM
There have been number of different software development methodologies used in the software industry over the years, such as Waterfall development method, V-Model, RUP and few other linear, iterative and combined linear-iterative methods. Agile model (or more correctly, a group of methodologies) is a more recent software development model introduced by the Agile manifesto to address the shortcomings found in those traditional software development methodologies.
Agile methods are based on iterative development and use the feedback from the users as the main control mechanism. Agile can be called a people-centric approach than traditional methods. Agile model delivers a working version of the product very early by breaking down the system in to very small and manageable sub parts, so that the customer can realize some of the benefits early on. Testing cycle time of Agile is relatively short compared to traditional methods, because testing is done parallel to development. Because of all these advantages, Agile methods are preferred over the traditional methodologies at the moment. Scrum and Extreme programming are two of the most popular variations of Agile methods.
What is SCRUM?
As mentioned above, SCRUM is an incremental and iterative project management process, which belongs to the family of Agile methods. SCRUM is based on giving high priority to the customer participation early in the development cycle. It recommends incorporating testing by the customer early and often as possible. Testing is done at each point when a stable version becomes available. The foundation of SCRUM is based on starting testing from the beginning of the project and continuing throughout to the end of the project.
Key value of SCRUM is “quality is the team’s responsibility”, which stresses that the quality of the software is the responsibility of the whole team (not just the testing team). One other important aspect of SCRUM is breaking down the software in to smaller manageable parts and delivering them to customer very quickly. Delivering a working product is at utmost importance. Then the team continues to improve the software and deliver continuously at each major step. This is achieved through having very short release cycles (called sprints) and getting feedback for improvement at the end of each cycle.
SCRUM defines several key roles for the smooth operation of a development team. They are the Product owner (who represents the customer and maintains the product backlog), Scrum master (who acts as the organizer and coordinator of the team by conducting scrum meetings, maintaining sprint backlog and burn down charts) and other team members. A team may consist of traditional roles, but mostly they are self-managing teams. Main Scrum artifacts are Product backlog/release backlog (wish list), Sprint backlogs/defect backlogs (tasks in every iteration), Burn down charts (work remaining vs. date). Main SCRUM ceremonies are Product backlog meeting, Sprint meeting and Retrospect meeting.
What is Extreme Programming?
Extreme Programming (abbreviated XP) is a software development methodology that belongs to the Agile model. Extreme programming carries out phases in very small continuous steps (compared to traditional methods). The first pass, which takes only a day or a week, is intentionally incomplete. To provide concrete goals for developing the software, automated tests are written at the start. Then the developers do the coding. The focus is on doing programming as pairs. Once all the tests pass, the coding is considered complete. The next phase is design and architecture, which deals with refactoring the code by the same set of programmers. At the end of this phase, incomplete (but functional) product is presented to the stakeholders. Right after this, the next phase (which focuses on the next set of most important features) starts.
What is the difference between Extreme Programming and SCRUM?
Extreme Programming and SCRUM are understandably very similar and aligned methodologies. However, there are subtle but important differences between these two methods. SCRUM sprints last for 2-4 weeks, while typical XP iterations are shorter (last 1-2 weeks). Usually, SCRUM teams do not allows changes in to sprints, but XP teams are little more flexible to changes within iterations. For example, after the sprint planning, the set of items of that sprint stays unchanged, but a feature that has not started working on can anytime be swapped with some other feature in XP. Another difference between XP and SCRUM is that, the order of features developed in XP is a strictly prioritized one by the customer, while the SCRUM team decides the order of items (after the product backlog is prioritized by the SCRUM’s Product owner).
Unlike XP, SCRUM does not lay down any engineering practices. For example, XP is driven by practices like test-driven development (TDD), pair programming, refactoring, etc. However, some believe that mandating a set of practices on self-organizing teams could have a negative impact, and this can be considered a shortcoming of XP. Another shortcoming of Extreme programming is that inexperienced teams may tend to refactor without any automated tests or TDD (or simply hacking). Therefore, some suggest that SCRUM is better for staring off (as it brings big improvements simply through focused timeboxed iterations) and XP is suitable for slightly mature teams who have discovered the value of above mentioned practices (rather than using them because they have been asked to do so).