Note: although the question talks about programmers, I imagine it applies as well to many other professions where self-organization is suitable: scientists, visual designers, etc.
I remember from my psychology course a few illustrations showing three to ten years old children performing team projects together while staying self-organized. The projects could be something like building a Lego house or put toys in order.
When I was a child, I also remember being part of such projects involving five to twenty children: it just worked, magically, with any team members.
There are obviously children who were not team players and harmed the project, like an angry child who will try to destroy the Lego house or start building his own or throw the toys to create disorder. Despite this, roles were still assigned (and mostly accepted), the bad players were bet or thrown away by the team and the work was still done.
If I remember well, the goal of the psychology course was to show the social behavior of a human being, and the capacity of self-organization in a context of a project performed with other persons.
I observe different teams of programmers in different companies for five years, acting as a technical lead, a manager or a simple team member. While there are rare teams of talented developers who are self-organized, most are not:
Most, when not being directed, can't even take the simplest decisions like which task should be assigned to which team member.
As a manager, explaining to the team that they have the freedom they maybe didn't have with a previous manager have no effect. They still expect to be micro-managed, and remain particularly passive otherwise.
Many teams have members who are plainly harmful (for instance a person who doesn't have required skills or who does nothing because of the lack of interest in the project), but the team prefers to talk behind the back of the bad player instead of actually doing something (either helping the person to get back to the project or kindly throwing the person away).
Some are not even teams, but a group of persons working individually on the same project. They don't know their coworkers; they can't tell the strong and weak points of each member; they won't ask for help but will remain on their own.
In worst cases, this leads to disastrous situations like a constant blame of other members. “This is not my bug, I don't work on this part of the app.” “Why would Jeff change my code? It's his fault that this class is now a mess!” “I can't release on time, because I'm waiting for a web service from Emily, and she doesn't seam to hurry.”
Finally, a few teams lack roles assignment (both formal and informal). With children, roles are always assigned or self-assigned: Timmy is filtering Lego bricks by color, Jessica takes care of the garden and the flowers around the future house, while Alice and William are building the roof. They switch roles from time to time (because Timmy is bored filtering pieces and wants to play with the flowers, while Jessica finds in herself a deep passion for roofs), but at any moment, they know what is their role, and the roles of others.
On the other hand, I had cases where nobody knew who was actually dealing with the database access layer or who was handling error messages in AJAX requests. The members were admitting that the situation was a mess, but had no idea what should be done to solve the issue, making it practically impossible to work.
Why kids are able to be self-organized, but encounter severe self-organization issues later in corporate environment? Is it:
- The corporate environment itself?
- The lack of motivation?
- The habit of being watched by the management and being constantly micro-managed?
- The fear of being accountable when taking responsibilities?
How to deal with it as a team manager?