On episode 28 of chaosradio express Tim Pritlove from the CCC talks with Pavel Mayer on his experiences with extreme programming (XP). He uses this development process for the past 5 years. Here is a short summary of the main parts:
1. Pair programming - Most of the time engineers do programming in pairs. This transfers and exchanges the knowledge within a company effectively.
2. Unit-testing - Reduces the liability to create new bugs on changing existing code. Gives more confidence that changes do not entail unexpected behaviour on stable code.
3. Daily stand-up-meetings - Exchanging knowledge about current work item of each team member. Define the programmer’s pairs for the current day. Not sitting but standing has the nice side effect, that meetings do last less long

.
4. Observe priorities - When setting up the specification with the customer, prioritize the project goals and features. Strictly work off those work modules with highest priority first.
5. Work iterative and in small pieces - Identify small work items which can be done within a maximum time of 3 workdays. Plan this work items in a cycle of about 1-3 weeks.
6. Communicate anxieties - Provide an open communication between customer and a contractor. Developers fear to observe project goals and contractors fear not to get what they have ordered.
7. Small team size - Works best on manageable team sizes.
Here is the podcast in german language