I can remember clearly the day I first began learning to drive. My mother and I were driving up Interstate 5 near Chico, California; a straight, flat stretch of road where the highway stretches right to the horizon. My mom had me reach over from the passenger seat and hold the steering wheel. She let me get the feel of how the motion of the wheel affected the direction of the car. Then she told me, "Here's how you drive. Line the car up in the middle of the lane, straight toward the horizon."
I very carefully squinted straight down the road. I got the car smack dab in the middle of the lane, pointed right down the middle of the road. I was doing great. My mind wandered a little. . .
I jerked back to attention as the car hit the gravel. My mom (her courage now amazes me) gently got the car back straight on the road. My heart was pounding. Then she actually taught me about driving. "Driving is not about getting the car going in the right direction. Driving is about constantly paying attention, making a little correction this way, a little correction that way."
This is the paradigm for XP. Stay aware. Adapt. Change.
Everything in software changes. The requirements change. The design changes. The business changes. The technology changes. The team changes. The team members change. The problem isn't change, because change is going to happen; the problem, rather, is our inability to cope with change.
There are two levels at which the driving metaphor applies to XP. Customers drive the content of the system. The whole team drives the development process. XP lets you adapt by making frequent, small corrections; moving towards your goal with deployed software at short intervals. You don't wait a long time to find out if you were going the wrong way.
The customers drive the content of the system. Customers (internal or external) start with a general idea of what problems the system needs to solve. However, customers don't usually know exactly what the software should do. That's why software development is like driving, not like getting the car pointed straight down the road. The customers on the team need to keep in mind where on the horizon they want to go even as they decide, week-by-week, where the software should go next.
What each team does to express their values will be different from place to place and time to time and team to team. Just as the customers steer the content of the system, the whole team steers the development process, beginning with its current set of practices. As development continues, the team becomes aware of which of their practices enhance and which of their practices detract from their goals. Each practice is an experiment in improving effectiveness, communication, confidence, and productivity.