Article: Mind The Gap

 

Mind The Gap: Let a Coach Help You Bridge the Gap between Book-Learning and Your Team's Reality

By Nancy Van Schooenderwoert, Agile Rules Consulting

"In theory there is no difference between theory and practice. But, in practice, there is." – Jan L. A. van de Snepscheut

Agile Rules helps businesses identify which agile methodologies are best suited to their situation and company culture, and guides clients through the change process. This paper examines the decision of whether to use a coach, given that a decision to use Extreme Programming (a leading agile methodology) has already been made.

Some teams adopt Extreme Programming (XP) without any outside help. Mine did; I introduced the practices and shepherded them along till the team took true ownership of the new process. But many teams try XP and are disappointed. Success depends on a mix of technical skills and interpersonal communication skills. This article is intended to explain what XP coaching is, what the potential hazards are, and to help readers decide whether they can benefit from the help of a coach on their path to adopting XP.

How to tell when you Don't need a Coach

The shortest way to say it is this: If the practices you now use are compatible with XP then you stand a good chance of migrating fully to XP on your own. But there's more to the picture – these areas need to be conducive or at least neutral:
  • Current software development process
  • Condition of the code base
  • Interpersonal dynamics of the team
  • Management

Below, we'll start a worksheet for checking off each of the above areas.

Current Practices

The transition of my team to XP was helped greatly by the fact that we were already building unit tests as we wrote the code. We had a very strong unit-testing practice, including an automated testing capability. We also were doing iterative development (on a roughly 6 to 10 week cycle), and we had collective code ownership. For more details see:

"Freeing the Slave with Two Masters: An Embedded Programming Team's Transition to XP" which can be found here

If you have decent unit tests (covering at least 70% of the code) that can be automated to run daily, then check off this item. It would be nice to have some of the other XP practices, but they'll get covered in the next sections.

Code Base

Can you add features with a reasonable expectation that a nest of new bugs won't pop up?

Do you have someone on the team who understands all of the design? (It doesn't have to be a detailed understanding of everything, just a solid overview plus good knowledge of the tricky areas.)

If you can answer 'yes' to the above questions, check this one off. So far, so good.

Interpersonal Dynamics

If your team members were told now that anyone on the team is allowed to modify any of the code, so long as they test it, would there be strong objections?

Is there a dominant person on the team who intimidates others?

If you answer 'yes' to the above, you have some team-building to do. It's "touchy-feely" work that most techies dread, but it is crucial if the team is to function as a team. They must be able to make that leap – it's the heart of XP. By the way, the above is NOT meant to be an exhaustive list of the interpersonal dysfunctionalities to be wary of.

Check off this item if your team members generally work well together, and can be persuaded to a new view by the facts of a situation.

Management

What is the nature of your team's relationship to management? By "management" I mean those who are sponsoring the project, and who decide what features should get implemented.

Have you fallen into a pattern where they never believe your estimates and just issue a deadline and threats of dire consequences if you fail to meet it? Do new "requirements" fall on you from all directions like rain from the sky?

On the other hand, if there is a bond of respect for each other's role, and capability for give-and-take when working out schedules, estimates, etc. then you can check off this item. You can also check it off if management appears not to know or care what you're doing. If your management is this detached from your practices then you can bring in XP "under the radar". This can lead to better software that will improve your working relationship with your managers.

If you've checked off all the items listed, then proceed confidently on your way to XP coach-free.

How to tell when you Do need a Coach

How many of the items in the previous section did you not check off? If your current process is very much "big design up front", with modules owned by individuals with varying dedication to unit testing, then it may be difficult to map out a path to XP without the help of a coach. If the code base is a problem, you may need to break out key areas of the code base and create tests for them. A coach can help you create tests for legacy code. If the habits of team members are going to become a stumbling block in implementing XP, a coach can help.

If you're dealing with issues that stop you from improving your software development process, you need to communicate with your management about it. Sometimes an outside perspective can be very helpful. Contact us. We may be able to help.

If you believe that you must take a few pieces from XP, a few from another practice, and so on in order to tailor the set of practices for your situation, don't. Your sense that your situation is unique is correct, but the best way to adapt a methodology to your team is to stay with a proven, cohesive set of practices and let a coach help you to "mind the gap" between the books and your reality. It's not crucial to decide beforehand that pure XP is where you'll end up. The point is to improve.

If you create a new methodology, you're adding risk. OK, what if you feel XP just isn't the best fit for your company? We can help you toward a more general, though agile, process. Generally though, you won't really know whether XP is right for you until you start down the path of adding agile processes. The important thing is that these practices will help you improve immediately.

If you think the only way to move to XP is by taking a big plunge into all of the practices at once, that's not so. It may be the most efficient way by some measures and some well-established consulting firms recommend it highly. However if you or your people are not ready to take such a leap then you can go step by step. But the sequence of steps matters, and again here is where a coach can help.

Ironically, those teams who most need help have a bad relationship with their management. The downward spiral of poor estimates, mistakes, mistrust, imposed deadlines, etc. cuts off constructive communication. If this is your situation, then the most important thing you can do is find a way to improve that relationship. That will open doors to the use of new software methods, and to getting coaching, if appropriate.

What will a Coach actually do?

It's not possible to say in detail because every situation is so different. A coach from Agile Rules will look at the situation and give you objective advice about how to improve it step by step. This includes technical as well as people issues. For example, if there is disagreement within the team on a question about the software design, we'd bring the focus up a level and ask what are the pros and cons of the proposed paths. Then we'd help the team apply the "simplest thing that could possibly work" idea.

A coach will help you do any of the practices that you have difficulty with. The key is that the coach doesn't make herself (or himself) indispensable. The whole idea is to get a 100% knowledge transfer. Our goal is to enable teams to function on their own, confidently using the XP practices without us. What if you're not sure you want to use all of the XP practices? No problem – the key is to do what makes business sense and technical sense for your situation. The bottom line is that each practice should prove its worth, and the software team is the judge.

A coach will make sure your management can see the business value in improving your software processes. Helping to improve communication between the software team and management is part of the job. The coach will watch over two fundamental things: the team's relationship to the code base, and management's relationship with the team. Both of these have to be healthy for you to get that "greater than the sum of the parts" power XP can deliver.

Conclusion

When I got my team to transition to XP, I had many conditions stacked in my favor. I had been keenly interested in software "best practices" for years and had been using my own "custom brew" of the ones I'd picked up on previous projects. I had a sense of what could work, and what just wasn't worth the effort.

I was confident that I could persuade my team of each of the new practices on its merits – not because it's some new bandwagon everyone else was jumping on. I believed that we could build trust between the software team and management by delivering high quality code. We did do it, though it was anything but easy.

With all of that said, I still am keenly aware of how much luck was involved. I did learn XP from a book (Kent Beck's Extreme Programming Explained) without any sort of external assistance. I didn't even know anyone else who was using XP. I suppose my prior experience adopting best practices helped me to make most of the decisions correctly. Looking back, I know I could've benefitted from having a coach.