In a recent post I referenced two opposing views on generalist and specialists development team members, both derived empirically. I will continue to blog my experience on this issue because the question goes to core issues like the composition of teams, etc.
Summary argument for generalists: generalist team members decrease the communication barrier by having overlapping experiences and skills. Also, involving more people in more tasks contributes to a better understanding of the “big picture” by individual developers and to increased “ownership” by the team. My last post on this largely discussed the arguments for specialists.
Here are some observations from my work with cross-functional teams at Danube:
- Not everyone can do everything well. Some developers (in the generic sense of the word) are very astute, for example, at QA and finding obscure bugs while others are not so inclined.
- Not everyone wants to do everything. In general, people like to do what they do well.
- It is obvious that inexperienced developers should not be making critical design decisions on their own.
- The more team members that are involved with requirements analysis work the better the results.
- Conceptual Integrity starts to fade and development slow down when the team lacks a “guide (PDF)“.
- However, if the entire team is not engaged in the design process they will lack the big picture and ownership required for individual responsibility.
What do I take away from these observations? I like the “Recommended Actions” in the HolisticDiversity pattern. Let teams create specialist roles of their own volition to depending on the conditions at hand. Rather than mandate everyone do everything, or vice versa bestow individuals with specialized roles, let the team decide what they need to do to get the work done and get out of the way.
Hey wait a minute… isn’t that what Scrum calls “team self-organization”?
Now my question is: can any team self-organize to overcome the problems they face? Are there minimum requirements for team self-organization? Stay tuned…