Extreme programming is a fast iterative approach:
- new versions may be built several times per day
- increments delivered every 2 weeks
- all tests must run for every build
- build is only accepted if tests run successfully

There are some key principles when doing XP:
- incremental planning: user stories / cards for requirements; prioritisation for planning per release cycle; stories broken into dev. tasks by developers
- small releases: minimum viable product; frequent, incremental releases
- simple design: just enough design
- test-first development: write tests before solution; automate test execution
- refactoring: continuously refactor code to keep it simple and maintainable
- pair programming: developers work in pairs
- collective ownership: everyone can make changes everywhere; everyone is responsible for the quality of the whole code base
- CI: regular releases, supported by powerful tooling for integrating and testing
- sustainable pace: overtime is not considered acceptable
- on-site customer: full-time end-user representative on team