Extreme Programming (XP) is a light weight framework intended to improve software quality, responsiveness to changing customer needs and achieve higher quality of life for the team.
Aligned with the Values and Principles of the Manifesto for Agile Software Development, XP advocates frequent releases in short development cycles, intended to improve productivity and introduce regular checkpoints to adopt to the changing customer needs.
XP improves a software solutions in five essential ways:
Communication: XP favors simple designs, common metaphors, collaboration of users and programmers, frequent verbal communication, and feedback.
Simplicity: Simple system design with very simple code could be easily understood by most programmers in the team. XP starts with the simplest solution useful to the customers today. Extra functionality can then be added later.
Feedback: Short Feedback cycles from the System: ( by writing unit tests, or running periodic integration tests), Feedback from the Customer (Acceptance tests gets concrete feedback about the current state), and Feedback from the Team (team directly gives an estimation of the time that it will take to implement customer needs) help with communication and maintain simplicity.
Respect: Respect is a key value for programmers, which includes respect for others and self. Committing changes that break compilation, or delay the work of peers is not a sign of respect towards others. Members can show respect for their own work by striving for high quality and actively seeking feedback.
Courage: Courage enables developers to feel comfortable with designing solutions for what's important today and refactoring their code when necessary. Courage is to remove source code that is obsolete. Courage also means persistence to solve complex problem.
The original twelve practices are listed below:
- The Planning Game
- Small Releases
- Simple Design
- Pair Programming
- Collective Ownership
- Continuous Integration
- 40-hour week
- On-site Customer
- Coding Standard