Cross-Functional Teams

A buzz word within the Agile camp is ”cross-functional teams”. For some reason though, there seems to be quite some confusion about what it really means. More precisely, it seems that some people argue for that members of a cross-functional teams should be generalists rather than specialists, that everyone should be able to do every job. Other argue the opposite.


According to Wikipedia, a cross-functional team is:

A group of people with different functional expertise working toward a common goal. It may include people from finance, marketing, operations, and human resources departments. Typically, it includes employees from all levels of an organization.

If we instead look at the definition of a cross-functional team in Wikipedia’s Agile Software Development article, we learn that such a team “is usually cross-functional and self-organizing without consideration for any existing corporate hierarchy or the corporate roles of team members.” This seems to suggest that the meaning of cross-functional in agile is often interpreted a bit differently.

Why confusion arises

Part of the problem might be that leaders in the field are sometimes a bit unclear. For example, reading Henrik Kniberg’s otherwise excellent piece on agile testing quickly, you can easily get the perception that he is arguing for the generalist approach. Quotes such as the following certainly helps one reaching such a conclusion.

In agile projects, testing is considered to be far too important to be confined to a single role, a single team, or a single project phase. Having a role called Tester implies that others don’t need to test. In an agile project almost everyone tests.

On the other hand, if you read it more carefully, he is actually arguing for a specialist approach. (Although he plays safe — and increases confusion — by calling them generalizing specialists.) Anyhow, this quote gives a rather other feeling than the previous.

Since the programmers have automated all the boring, repetetive tests, you are free to focus on the hard stuff. The stuff that is difficult to automate. Exploratory testing. Usability testing. Performance test scripts. Figuring out those tricky test cases that only a veteran like you could come up with.

Finally, in his own words:

Agile teams are cross functional, they are made up of generalizing specialists. People who are experts at certain areas, but have basic knowledge of a whole bunch of other areas as well. A team of generalizing specialists is extremely fast at learning and adapting.

Why specialists?

For me, I’m in the specialists camp. As some form of evidence, I’d like to quote Marcus Buckingham and Curt Coffman from the great book First, Break All the Rules.

Great managers do not believe that a productive team has camaraderie as its cornerstone and team members who can play all roles equally well. On the contrary, they define a productive team as one where each person knows which role he plays best and where he is cast in that role most of the time. … The founding principle here is that excellent teams are built around individual excellence.

The nice part about this last quote is that it is not simply anecdotal “evidence”, but actually conclusions drawn by the Gallup organization after interviewing over 80 000 managers!

Your experience?

What’s your experience in the matter? Is specialist or generalist the way to go?