I did a presentation last month at the Agile Denver user group. It was a great time, and there were some great discussions around what it takes to transition to agile software development. One key item that came up is the question of self organizing teams in agile. I have seen this discussion many times, usually around why project managers and "line" managers are obsolete in the agile world. I agree that self organization is a fantastic goal, and uniquely suited to the agile mentality. My question is, does every extreme programming or scrum team really self organize? Also, when is it maybe not a great idea to aim for complete self organization?
Let's look at a couple of times in history when self organizing teams were tried. So we are going to step into our way/back machines to the heady days of the French Revolution. The people storming the Bastille; The barricades in the streets of Paris, Jean Valjean singing "Bring him home"! After the new government was formed, the entire European continent formed armies to crush these republicans before the scourge of democracy would spread. The French Army had to be able to defend the new Republic. Of course all of the officers were from the aristocracy, who were too busy losing their heads. So the armies elected new officers. Each unit voted for their favorite soldiers to become officers, no matter what their experience was. And if the soldiers didn't like what the officer told them to do, they voted him out and elected a new one. As one might imagine, this was not a terribly successful organization. Eventually a young Corsican named Napoleon turned this around, but only after abandoning the principles of the Revolution and establishing himself as a dictator. A very similar sequence of events happened in Russia in 1917, with a similar unsuccessful outcome.
Now, am I saying that not only do agile teams not need to self organize, but that they need a dictator with his hand in his vest? No. What I am saying is that the idea of self organization needs to meet with the reality of the world around us. In many cases, a team can organize themselves. Sometimes they need a little help. Sometimes all they need is someone to act as the representative of the team to the rest of the business. In most cases, this person is selected based on a set of skills that is not necessarily the same that makes the person a successful programmer or tester. That does not mean that they would not be successful leaders. It would be best if the agile team had a vote in who was selected, but by no means should the selection be limited to just the team. The folks who will be interacting with the team need a vote too.
In the long run, most agile teams work within a larger corporate structure. Having someone who can navigate such a structure is highly useful and desirable. Having someone who can do the hard personnel/oriented things like hiring and firing, or the more enjoyable but time consuming things like nurturing and mentoring, is a Good Thing. This person may be a Coach, or an Advisor, or in some cases even.....<gasp> a Manager!