Agile Webspace > Methodologies > Extreme Programming
Extreme Programming
Extreme Programming (XP) is a set of concrete, well-defined practices that are intended to increase software quality and responsiveness to changing customer requirements. As such, the practices proposed by XP serve as concrete guidelines on how to implement the principles stated in the Agile Manifesto.
The outer ring represents the business-facing practices. They provide the framework for the way development and business communicate with each other.
- Planning Game teaches us how to break down a project into features, stories, and tasks.
- Small Releases encourage teams to work in small increments.
- Acceptance Tests urge teams to define when features, stories, and tasks are considered "done".
- Whole Team carries the philosophy that a software development team includes many different functions (like programmers, testers, business analysts, managers, etc.) who all work together as a cohesive team.
The middle ring represents the team-facing practices. They provide guidance on how the self-managing development team communicates with itself.
- Sustainable Pace is the practice that teaches teams to balance urgency and diligence. Festina Lente.
- Collective Ownership ensures that the team does not divide projects into a set of knowledge silos.
- Continuous Integration encourages teams to close feedback loops frequently, so they know where they are at all times
- Metaphor is the practice that creates and spreads the vocabulary and language that the team and the business use to communicate about the system.
The inner ring represents concrete technical disciplinary practices that constrain developers to ensure technical quality.
- Pairing is the practice of reviewing, collaborating on a technical level to share knowledge and drive innovation and accuracy.
- Simple Design teaches the team to avoid wasted efforts.
- Refactoring encourages continual improvement and refinement.
- Test-Driven Development is the safety net that allows the team to go fast while maintaining quality.
All of XPs practices clearly contribute to one or more of the principles of the Agile Manifesto:
Individuals and interactions over processes and tools | Whole Team, Metaphor, Collective Ownership, Pairing, Sustainable Pace |
Working software over comprehensive documentation | Acceptance Tests, Test-Driven Development, Simple Design, Refactoring, Continuous Integration |
Customer collaboration over contract negotiation | Small Releases, Planning Game, Acceptance Tests, Metaphor |
Responding to change over following a plan. | Small Releases, Planning Game, Sustainable Pace, Test-Driven Development, Refactoring, Acceptance Tests |