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).
Comments
Post a Comment