Reference for Extreme Programming (XP) values, principles and practices.

Values

The five core values of Extreme Programming are:

  1. Communication
  2. Simplicity
  3. Feedback
  4. Courage
  5. Respect

Principles

I’ve slightly updated these principles based on my own experience practicing Extreme Programming:

  1. Open, honest communication
  2. Autonomous, self-organizing teams
  3. Accepted responsibility
  4. Work in small batches
  5. Quality work
  6. Rapid Feedback
  7. Incremental Change
  8. Continuously Deliver Value
  9. Sustainable Flow
  10. Build Trust
  11. Honest measurements
  12. Reflection
  13. Continuous improvement

Primary Practices

The following list has been compiled based on my personal experience applying Extreme Programming:

  1. Domain Discovery
  2. User Stories
  3. Loosely Coupled Architecture
  4. Acceptance Criteria aka Definition of Done
  5. Iteration Planning
  6. Pair Programming
  7. Test Automation
  8. Continuous Integration
  9. Ten-minute Build
  10. Incremental Design aka Refactoring
  11. Frequent releases aka Continuous Delivery
  12. Nearly Zero Bugs
  13. Informative Workspaces aka Visual Management
  14. Team Retrospectives
  15. Eliminate Waste

Full List of Practices

  1. Domain Discovery
  2. User Stories
  3. Rules and Examples
  4. Ubiquitous Language
  5. Acceptance Criteria aka Definition of Done
  6. Cross-functional Teams
  7. Loosely Coupled Architecture
  8. Incremental Design
  9. Concrete Experiments aka Spike Solutions
  10. Fail fast
  11. Release planning
  12. Maximize Work Not Done
  13. Backlog refinement
  14. Estimating
  15. Iteration Planning
  16. Daily Stand-Ups
  17. Work in progress (WIP) Limits
  18. Automated Acceptance Tests aka Customer Tests
  19. Technical Coaching
  20. Pair Programming
  21. Simple Design
  22. Test-Driven Development aka Programmer Tests
  23. Continuous Refactoring
  24. Version Control
  25. Streamlined change approval
  26. Continuous Integration aka Trunk-Based Development
  27. Coding Standards
  28. Collective Code Ownership
  29. Ten-Minute Build
  30. Exploratory Testing
  31. Nearly Zero Bugs
  32. Test Data Management
  33. Frequent Releases aka Continuous Delivery
  34. Deployment Automation
  35. Database Change Management
  36. Monitoring and Observability
  37. Root-Cause Analysis
  38. DORA/SAFE Metrics
  39. Team Retrospectives
  40. Eliminate Waste
  41. Iteration Demo
  42. Real Customer Involvement
  43. Informative Workspace / Visual Management
  44. Work-In-Progress Documentation
  45. Documentation as Code

Other resources

See Martin Fowler’s article on Extreme Programming for a detailed overview.

Updated: