Wednesday, August 20, 2008

Agile Anti-Patterns - Part I

In this first of what I hope will be a series of posts about agile anti-patterns that I have either observed at Macadamian, or learned about when I attended the Agile 2008 conference during the first week of August. I am going to talk about the "Hierarchical Anti-Pattern". This is one of the most common anti-patterns I have seen, I have just never though about it before. This is something that I touched on briefly in my last post but am expanding here.

In the "Hierarchical Anti-Pattern" the lead in your team at your global centre does all the talking. In this anti-pattern the person with the most rank or seniority does the talking, not necessarily the person with the most knowledge. This is something that is very common cultures that are very hierarchical, and it is even more prevalent if you are using third party contractors as your offshore development or testing team.

The situation is worse with third party contractor teams as they are your customer! And you have a customer. That is a lot of levels of indirection! Since it is common that people don't want to pass bad news on (not us at Macadamian though right?!) they will be less forthcoming when their is bad news.

Of course we all know that we want the bad news as soon as possible so that we can react and hopefully address the issue.

You cannot allow this situation to develop on your distributed team, the lead in your offshore centre cannot cover for or protect someone on their teams. It will only breed resentment and hostility, and could obscure the true status of the project.

So what can you do?

  1. Everyone dials in from their desks
  2. Everyone stands up during the call (you know, a stand up meeting)
  3. Everyone speaks for themselves
  4. Empower your team
  5. Ask probing questions
  6. Video conferences

One of the easiest ways to help prevent this anti-pattern by ensuring that everyone dials in from their desks for their daily scrums. This will help avoid the side conversations that are necessary for this particular anti-pattern.

You can also (and this one is hard and sort of goofy) have everyone stand at their desks while on the daily scrum call. This one is hard to enforce without web cameras but can also help prevent the side conversations via IM that are required for this anti-pattern. It also has a nice side benefit of preventing the team members from multi-tasking, or even reading /.!

During the actual scrum, you should be sure that everyone speaks for themselves, and that the person you ask the question of answers that question. Ask the question to who should be the subject matter expert, be polite but firm. This can also help expose team members that are coasting or not pulling their weight.

You should also work diligently to create the collaborative atmosphere where team members regardless of rank or seniority feel empowered to speak their minds, and voice their concerns. You can help foster this by asking the team what their thoughts are? What are their suggestions? What can they do to help? Don't isolate all the decision making power on shore.

It is very important to ask probing questions to get to the bottom of the status. Ask questions about the state of development, testing, how much effort is left, what if anything is blocking, how it will be implemented etc. This is related to your delegation technique, and is also extremely important when dealing with with anyone on your team regardless of where they work. Also keep in mind their seniority when validating their answers, sometimes juniors haven't thought their entire way through the problem, they can rely on their lead in these cases to help guide and mentor them.

Video conferences are good to help pick up the quiet guy sitting in the corner of the room. It will also help you see any confusion that might not be prevalent on just a voice call, and allows you to more easily build trust with them as you can see each other. Just don't let technology get in the way of the communication. Don't spend 20 minutes setting up for a 10 minute call. That is not efficient.

There are just a few easy ways to help prevent and correct this anti-pattern, does anyone else have other ideas?

No comments: