Lec 9. Extreme Programming
Lec 9. Extreme Programming
Programming
https://scrum-master.org/en/extreme-programming-xp-a-beginners-
guide-to-the-agile-method/
eXtreme Programming (XP)
• It is an agile methodology that emphasizes:
• flexibility
• close collaboration with the customer
• high code quality
• It was developed in 90s with the aim to improve productivity and
customer satisfaction while maintaining code quality
• The idea is that software development should be:
• reactive
• iterative
• adaptive
• oriented towards continuous feedback cycles
XP Values
• Communication
• encourages open and continuous dialog between team members and with the customers
• Simplicity
• concentrate on what is needed at the moment, avoiding complicating the code with
superfluous features
• Feedback
• use customer feedback and continuous testing to guide development
• Courage
• have the courage to always do what’s best for the project, even if it means questioning
existing choices
• Respect
• each team member values the work of others, creating a positive and productive work
environment
XP - Central Practices
• Pair Programming
• two developers work together on the same code, one is writing code while
the other reviews each line as it is written
• Continuous Integration
• code is integrated and tested frequently, often several times a day, to detect
errors and reduce debugging time
• Test Driven Development
• developer first write tests for a new feature (unit test) before coding the
feature itself.
From Exploration to Planning
• The XP team gathers relevant information about what the customer
wants
• The team works closely with the customer to identify user stories
• these are short description of functionalities from the customer’s point of
view
• In Planning, the team priotizes each story and estimates the time
required to complete it
• Release schedule is created to decide how the features will be
developed and released
Iterations and Feedbacks
• After planning, a project enters a series of iterations
• they are often bi-weekly or monthly
• functional versions of the software are developed and presented to the
customer in each iteration
• each iteration is a complete loop of planning, design, coding, and testing to
ensure that product evolves in response to the customer needs
• After each iteration, feedback is taken from the customer
• it ensures that the final product perfectly meets the customer expectations
To Delivery and Beyond
• Reaching the delivery phase means that the iteration cycles have
produced a version of the software that is ready to use
• Maintenance and future iterations are prepared during the final
stages of the project
• Maintenance in XP is proactive.
• the team continues working on the software
• responding to changing customer needs
• rectifying bugs
Benefits of XP
• Flexibility and responsiveness
• the ability to adapte quickly to change
• Improved quality
• because of test-driven development and pair programming, it results in clean
and well-designed code right from the start
• Collaboration and communication
• emphasis of close collaboration within the team and with the customer
• so the final product meets customer expectations
• Risk reduction
• it enables early detection of errors and misunderstandings regarding project
requirements
Challenges
• Resistence to change
• organizations following traditional development methods may resist adopting XP
• training regarding the XP may be crucial
• Expectations management
• customer may find it difficult to adapt to continuous feedback model
• educating the customer is important in this regard
• Need for strict discipline
• strict discipline is needed on the part of development team with regards to testing, code
reviews and communication
• Limited communication
• Emphasis on code may result in lack of project documentation
• It is essential to strike a balance
XP vs. Scrum
• XP emphasizes technical excellence and rapid response to changing customer
requirements
• Iteration duration
• XP opts for cycles of 1-2 weeks
• Scrum sprints are generally from 1-4 weeks
• Changes in timelines
• XP allows changes in timelines more fluidly
• Scrum sprints are timeboxed
• Engineering practices
• XP focuses intensly on engineering practices
• pair programming, test-driven development, simple design
• Scrum is flexible in this regard
XP vs. Scrum
• Roles
• Scrum has defined roles like Scrum master, product owner, etc.
• XP puts an emphasis on the team as a whole
• Prioritization
• In Scrum, product owner prioritizes work in the product backlog
• In XP, this is done by the customer based on the business value of the
features
When to Use XP
• It is particularly suited to the projects where speed of delivery and
code quality are essential
• Following are a few project types where XP shines:
• Projects with volatile requirements
• XP methods can adapt quickly to changing requirements because of short iterations and
continuous feedback cycles
• Teams advocating solid engineering practices
• XP suits the teams that value code quality and are ready to adopt rigorous engineering
practices
• Close collaboration-oriented corporate culture
• teams favoring intense collaboration and communication will like to adopt XP