For implementing agile development methodologies, many talk about cross-cultural teams spanning distance and time, but with respect to agile, many discussions also arise regarding cross-functional teams and the use of specialists versus generalists. The problem with generalists is that although they may understand a problem, they may have a deep enough understanding to solve the problem. While some propose to have a combination on the team, others strongly favor one or the other.
Capers Jones, for instance, showed in his research that a team of specialists can outperform a team of generalists. It makes sense that specialists can outperform generalists if coordinated correctly. Think about building a house. If you hire a general contractor, they may sub-contract out the electrician, plumber, and drywall out to specialists. Of course they probably have the skills to do it themselves, but they don’t because the specialists can do a better job, and faster.
So why is it that some think an agile team with generalists is better than a team of specialists? The same reason as for building a house! Think about it. Isn’t the scheduling sometimes a nightmare? Oh, the plumber can’t come until the framing is done. The plumber is busy until Tuesday while the framing guys finish on Friday. The electrician shows up and does his work and says, “You need this part here framed out better, then I’ll come back.”
Specialists not only need more scheduling which can lead to idle time for the project or for other team members who may be waiting for another, but additionally, some specialists can be prima donnas. They just won’t do tasks outside their own specialty, or they may do so grudgingly and slowly.
On the other side of the coin, if you have a guy that can do framing and drywall, or a plumber that can also do electrical wiring, that can move things along faster. They may run into problems that they have not solved before, but the efficiencies gained from elimination of schedule hassles, idle time and different personalities could be worth it.
In the end, when implementing agile methods, you need to assemble a team consisting of mostly generalists who specialize in something, or perhaps have the skills to solve the most common problems in a certain area. You also have to have the right personalities where the project comes first and egos get checked at the door.