Extreme Programming focuses on software development. In that domain, it borrows on many core agile values, principles, and practices. It also contributes a series of core values, and provides a unique method that can be employed as a whole or in part within the framework of other agile methods.
Five (5) XP Core Values
The practices of XP speak to the core values of the method:
- Simplicity – The idea in XP is to develop the simplest thing that could possibly work.
- Communication – Team members work interchangeably as a unit, and all are expected to know what everyone is working on.
- Feedback – Failing fast is a mantra, and obtaining feedback early and often is desired.
- Courage – Programmers are expected to be totally transparent, and willing to take constant input and feedback from fellow team members.
- Respect – Everyone is accountable for the team’s output, and to work so closely each needs to respects the others’ contributions.
Four (4) XP Team Roles
- Coach – Similar to a scrum master, the coach mentors team members and also acts as a conduit for communication to the outside.
- Customer – This the business representative, similar to the Product Owner on scrum teams.
- Programmers – The developers, sometimes interchangeable with testers.
- Testers – The testers, sometimes interchangeable with programmers.
Thirteen (13) XP Core Practices
XP employs thirteen simple but powerful core practices that are organized like layers around a concentric circle. I have divided these core practices into high, medium, and low level layers.
Thirteen (13) XP Core Practices - High Level
- Whole Team – XP teams function as a unit, where co-location is mandatory and roles are as interchangeable as possible – leaving a team of “generalizing specialists".
- Planning Games – The “planning games" are comprised of release planning and iteration planning. Iterations are typically two week sprints and are “released" typically within six months.
- Small Releases – To encourage continuous integration, releases to the test environment even at the iteration level are a best practice.
- Customer Tests – The developers build automated tests to prove to themselves and the customers that the customer-specified functionality is met.
Thirteen (13) XP Core Practices - Medium Level
- Collective Code Ownership – Any pair of developers can improve or modify code.
- Code Standards – Consistency among developers is realized through adherence to code standards.
- Sustainable Pace – Sustainability produces the highest productivity in the long run.
- Metaphor – The idea is to make sure everyone understands the functionality in plain language.
- Continuous Integration – This practice reveals issues early.
Thirteen (13) XP Core Practices - Low Level
- Test-Driven Development – Acceptance tests are written BEFORE developing the code.
- Refactoring – The idea is to minimize or eliminate technical debt by removing duplicated code, minimizing dependent connections among modules, and increasing cohesion.
- Simple Design – The philosophy is, “What is the simplest thing that could work?"
- Pair Programming – Switching frequently between developing and reviewing roles, this core practice aims to catch issues early.
The core values, team roles, and core practices can stand alone. However, XP can also readily be inserted with another agile method to create a hybrid approach.
A Look at Agile Methods
A series on the most popular agile project management methods, including Scrum, Extreme Programming (XP), Lean Product Development and Kanban.
- Agile Method #1: Scrum
- Agile Method #2: Extreme Programming (XP)
- Agile Method #3: Lean Product Development
- Agile Method #4: Kanban