Programmers choose tasks, and work in pairs. Programmers write unit tests. Programmers add features to pass unit tests. Programmers integrate code. Programmers produce a released version.
Customer runs acceptance tests.
Version goes into production. Programmers update their estimates based on the amount of work they've done in release cycle. XP programming doesn't embrace this approach for a couple reasons. A large up-front design means that the whole programming team sits down and plans out the entire program before writing code. That would work if two things were true.