Self Organization is an Emergent Behavior
Ever since I got involved in the agile development community, I’ve struggled with the concept of self organizing teams. We all know that the most highly performing teams are self organizing. The question remains, “How do I, as the duly appointed leader of this team, enable self organization?”
This seems like a false proposition, even from the outset. We started with a team that has been formed by some act of management. Then management assigns someone the job of leading the team. The paradox is obvious. “Go organize a self organizing team”. I confess that I have really had a hard time with this concept for years. Finally, in the course of a weekend, I have stumbled on what I believe is the answer to this paradox. Just as good software design is emergent, so is a self organizing, self directed agile team.
One of the earliest and most valuable lessons I learned in the world of extreme programming is that good software design comes not from up front planning, but from constant, purposeful craftsmanship and refactoring. When we are working on the software, as we find areas that can use improvement, we refactor to a new, slightly better design, paying close attention to not changing the behavior of the software. Each of these changes is small, and may have only a little bit of impact, but over time we will find that a new software design has emerged, and that it is superior to where we started. I believe that this is exactly how a self directed team will emerge as well.
How does an agile development team become self directing? One step at a time. Most organizations are going to form a team around some sort of project or task, and then assign someone as the manager or lead. One of the most important jobs for this manager is to enable an environment where the team can become a high performing team. This means providing the right tools and a safe environment in which to take risks. As the team starts to gel, certain behaviors that lead to self organization will emerge. Perhaps a programmer will start implementing unit tests and continuous integration, just because she finds it interesting. Or maybe the team will collectively start to make decisions, and inform you of them as they are starting to be implemented. Each step of the way, be ready to identify and encourage these emergent behaviors. Over time, you will be able to step further and further away from the “command and control” and the team will be able to emerge as a true self directed unit. At this time, you can comfortably move on, or take a long vacation: you will have earned it.