Choosing a Coach

The word "coach" implies a balance between being part of the team and having an independent perspective. In the beginning, the coach is the one who spots opportunities for improvement and leads the experiments addressing them. Coaches have experience and perspective and are not enmeshed in the day-to-day group dynamics.

You can apply XP successfully without an experienced coach. Many teams have done it. You won't benefit from the experience and perspective of a coach, but you can learn as you go. Applying XP doesn't happen without leadership though, whether from inside or outside the team.

The values, principles, and practices of XP are best learned by example. You can learn them from someone who has made all the mistakes or you can make the mistakes yourself. I've been on both sides of this learning. People will pair program with me and say, "I thought I knew what test-first programming was, but now I really get it. You actually write a little test before every change." I was also in the position of thinking I understood frequent releases, but when I worked on a team deploying daily I had the same kind of aha experience: "So you really deploy new software every day." Just because you understand the words doesn't mean you understand. A coach can accelerate your learning.

A coach notices bottlenecks in communication and deals with them. A coach reminds teams to do the simple thing when they are listening to their fears. A coach motivates teams to use the practices; for example, "Have you written a test for that yet?" A coach models effective values and practices. A coach is responsible for the process as a whole, keeping the team working at a sustainable pace and continuing to improve. A coach communicates what he sees in such a way that the team can address problems.

Selecting a coach is an important and challenging decision. A coach should be aligned enough with your existing values to be effective, but firm enough in the XP values to keep leading in that direction. A coach should have enough technical skill to teach what people can't easily learn on their own. Finally, and most importantly, a coach should encourage independence, not dependence. A good coach moves on a little before you think you're ready and leaves behind a team that finds itself firmly on a path to sustainable, profitable, stable, fast, fun software development.

When You Shouldn't Use XP

XP is ineffective in organizations whose actual values are at odds with the XP values. I say "actual values" because many organizations have professed values differing from or contradicting the values revealed by their actions. In XP, you have a set of practices intended to express and reinforce a certain set of values. If an organization's actual values are secrecy, isolation, complexity, timidity, and disrespect; suddenly expressing the opposite values through a new set of practices will cause trouble rather than create improvement.