I think specialization is good, and cross-functional teams are not. Here's why...
Suppose you are the publisher of a magazine about cooking. It's a glossy magazine, with recipes, restaurant reviews, and lots of pictures of expensive cutlery and celebrities tasting trendy oysters. The magazine is released every month and you have a huge list of recipes, restaurants and celebrities waiting to make their appearance in one of the upcoming editions. Getting a new edition out the door is always a stressful experience. The celebrities never commit to any culinairy photo shoot. The chefs always complain about the way their food is described. And some of the recipes are so bad, you wouldn't even want to cook them for your neighbor's dog. But still, despite the bruised egos, and the meat clevers flying around your head, a new edition is published on the same day of each month.
Now the editor walks up to you and tells you he has the solution to all problems. It is called the cross-functional team. It's really simple and very effective: The different roles of all people working on the magazine will be turned into one generic role called team member. There are no real specialists anymore, as everyone on the team is allowed to do any of the jobs needed to get a new edition of the magazine out of the door. The writers are allowed do the photo shoots, whenever they happen to be in the vicinity of a celebrity. Any chef, with at least one working finger left, is allowed to type restaurant reviews. And if the photographers are finished with their work, they can help out writing recipes that won't kill any neighbors' dog. With such a cross-functional team, explains the editor, making a new edition of the magazine will be much less stressful. So... what do you say?
This is what I would say:
Are you completely insane? If I'm on an operation table, having my eyelids corrected, would I want the nurse to take over when the surgeon is having trouble keeping up with his schedule? Would I say, "Yes, thank you nurse, and why don't you have my tonsils removed, while you're at it?"
Specialization is good.
Specialization is not the same as introducing a waterfall pipeline in your organization. Smart organizations can specialize without doing waterfalls. Avoiding waterfalls does not imply doing things cross-functional. Cross-functional teams (in the way they are promoted by some agilists) completely ignore everything society has learned since philosopher and economist Adam Smith pointed out in 1776 (in his landmark book The Wealth of Nations) that specialization leads to higher productivity and prosperity. Specialization is the reason why software developers do not bake their own bread, fix their own clothes or hunt for their own food, a few exceptions notwithstanding. The larger an economy or organization is, the more people will want to (and be able to) specialize in what they are good at. It is a mechanism that has proven to work well, not only for individuals but for the whole as well.
In our company I disapprove of people attempting to be cross-functional. When the design of a web site is being implemented by a developer, it can bring tears to my eyes. Some of them seem not to be able to see the difference between a pixel and a centimeter. I have seen functional designs for web sites, created by software engineers, that would probably have caused physical injuries among our web sites' visitors, if we had followed the designs. That's why we have software developers, content developers, business analysts, interaction designers and graphic designers.
I am all in favor of agile software development. We put people over processes, we favor face-to-face communication over written documents, we embrace change, and we welcome customers collaborating with us on their projects. And we demand that people stick to doing the work they're good at (or want to become good at).
Are you happy doing what you're good at? Or do you allow people to give you work you don't even know how to do?
Comments
I've not witnessed
April 7, 2008 by Jason Matchgrip (not verified), 1 year 49 weeks ago
Comment id: 1501
I've not witnessed cross-functional teams being advocated the way you describe. I think ideally you do have specialists, but when the team is cross functional it allows every to contribute to different parts of the team. You may very well have a QA specialist, that person knows all about testing and the testing tools your team is using. But if the team gets behind on testing it would be nice to have others step in and help to get the testing back up to the level the team would like. It seems like you are authoring about very extreme cases. I think ideally your teams are made up of generalizing specialists - jack of all trades, master of few.
I find your arguments misleading...
April 7, 2008 by Rob Park (not verified), 1 year 49 weeks ago
Comment id: 1502
Sure I don't want a nurse taking out my tonsils, but that's not software. And what's wrong with having a developer get the pieces in place on the web site (especially if the guy who's better at window dressing is too busy). I want that person to know how to operate in there... or at least not be afraid of it or worse told they can't.
For me, the better analogy is a SEAL squad. They are heavily cross-trained and can function in any of the team roles, but at the same time like any good team, some people are better at some skills (specializations) than others, but there are of course times when they aren't in the right position or they are just spread too thin. Note they have swim-buddies too, which seems to me similar in ways to pair programming (which help build better generalists).
And with too much specialization, you always have to be aware of your low "truck number".
Agile...??
April 8, 2008 by Anonymous (not verified), 1 year 49 weeks ago
Comment id: 1504
First of all excuse me for jumping into this topic, as I’m quite a noob at ASD.
But here's my opinion anyway....
As described by mr. Apello, doesn't Agile Software Developing consist of the following: put people over processes, favor face-to-face communication over written documents, embrace change, and welcome customers collaborating with us on their projects.
In doing this we deviate from following strict procedures and protocols, and combine best practices to suit each particular project.
I compare this method allot to evolution, because through time the environment is also ever-changing - as with development projects.
Greek philosopher Heraclitus, "everything is in a state of flux".
Through evolution, the individuals who are the most specialized always seem to disappear first.... as for the ones who have learned to adapt to different environments and cope with change, have a better chance at survival.
As mentioned by Rob Park and the SEAL analogy, if the demolitions expert gets KIA, you still want your squad to plant those explosives and complete the mission. Even if they don't all know the exact composition of C4, they should all know how to plant it and arm it for detonation.
After all.... isn't this what the word Agile means.... "The ability to change"
a double straw man...
April 8, 2008 by Ilja Preuß (not verified), 1 year 49 weeks ago
Comment id: 1505
Your argument is based on two fundamental misconceptions:
First, the term "cross-functional team" doesn't have anything to do with individuals. It describes a team where all the knowledge needed to reach the goal of the team (like developing a product) is present inside the team. This is in contrast to functional teams, where a product needs to be handed around between different teams to get finished. It doesn't say anything about who inside the team has what knowledge.
Second, nobody in the Agile community I know says that everyone should work on everything, no matter what. What we are saying is that a team can be much more effective if team members can fill more than one function, and are able to help out in even more when needed (for example by pair programming with an expert). See http://www.agilemodeling.com/essays/generalizingSpecialists.htm
Finally... a response!
April 11, 2008 by JurgenAppelo, 1 year 48 weeks ago
Comment id: 1508
Thank you all for your comments, and sorry I'm late with my response. I hope some of you are still able to read it.
"what's wrong with having a developer get the pieces in place on the web site" - Jason Matchgrip
What is wrong is that is that we had customers threatening to cancel their contracts because some developers thought they were able to do a bit of design, and a bit of testing. But it turned out they made a mess of things because design and testing wasn't their specialty. It made some of our customers really angry. Some people are simply over-confident.
"the better analogy is a SEAL squad" - Rob Park
I don't think so. A SEAL squad doesn't scale to 220 people (which happens to be the size of our organization). Sure, you can have 30 SEAL squads. But that defies the wish of many of our people to specialize.
"Through evolution, the individuals who are the most specialized always seem to disappear first." - Anonymous
This is clearly untrue. If evolution favored generalists all species would still be bacteria. But the estimated number of species on earth is between 5 and 30 million. This looks like specialization to me. They are definately not 30 million generalists.
"First, the term "cross-functional team" doesn't have anything to do with individuals. [...] Second, nobody in the Agile community I know says that everyone should work on everything, no matter what." - Ilja Preuß
Well, I agree that there's nothing wrong with the intended definition. But what I am talking about, and disagreeing with, is the interpretation in agile circles. Here's a quote from Chris Spagnuolo:
This means anyone on the team can and should work on tasks that may not be within their expertise. Usually there is someone on the team with functional expertise to lead a specific task, but anyone on the team can do the work.
I don't agree with that.
How does a team grow and mature?
April 22, 2008 by Chris S. (not verified), 1 year 47 weeks ago
Comment id: 1517
While I like what is being discussed here, I have to stress that cross-functional teams encourage learning. It's how teams grow. We do a lot of pair programming and it has really helped our team become "cross-functional". We work on a lot of consulting contracts often simultaneously. Sometimes, a specific team member with a set of expertise is not available because he or she is committed to another team on another iteration or release. But, because we've paired in the past and some of those expertise have been "passed on" through the pairing, our team is better equipped to handle the temporary absence of our expert. And our expert is always available for questions if the need arises. But we have found that the more people stretch their knowledge base, especially through pairing, the more flexible and nimble our team can be. Even on iterations where our "expert" is on the team, often we've had "non-experts" take some of his/her tasks and perform very well on them. This allowed our expert to either expand his/her knowledge base or concentrate on more complex or difficult tasks. But this all comes with one caveat: You still do need that single expert (or multiple experts) to spread their goodness around to other team members. This takes a team member with little or no ego who is willing to share and transfer knowledge with the rest of your development team.
Specialists outperform generalists
April 22, 2008 by JurgenAppelo, 1 year 47 weeks ago
Comment id: 1518
In his book Agile Management for Software Engineering David J. Anderson mentioned research done by Capers Jones which showed that a team of specialists will usually outperform a team of generalists (page 272).
Now I don't mind a specialist occasionally making a contribution to another person's job (provided he's capable enough). But if I have to choose between specialists and generalists then it is evident I will go for the specialist approach. The inefficiencies associated with specialists do not outweigh the much bigger inefficiencies of generalists, who are apparently slower at doing their jobs than the specialists are.
interpretation in agile circles
April 28, 2008 by Ilja Preuß (not verified), 1 year 46 weeks ago
Comment id: 1526
"Well, I agree that there's nothing wrong with the intended definition. But what I am talking about, and disagreeing with, is the interpretation in agile circles. Here's a quote from Chris Spagnuolo:
This means anyone on the team can and should work on tasks that may not be within their expertise. Usually there is someone on the team with functional expertise to lead a specific task, but anyone on the team can do the work.
I don't agree with that."
I'm not sure that there is something that you could call "the interpretation in Agile circles" - the Agile community is not as homogeneous as this statement seems to imply.
I'm also not sure that your interpretation of Chris' interpretation is actually correct. I can think of ways to interpret that statement that wouldn't be in conflict with what I wrote at all. On the other hand, I wouldn't be too surprised to learn that Chris and I actually disagree on this - while I find his views to be interesting and valuable, I don't know how much he is actually embedded in the Agile community. From all I know, he might just be a blogger who happens to write about his very personal view of Agile Software Development.
a spectrum?
June 16, 2008 by Jeff Santini (not verified), 1 year 39 weeks ago
Comment id: 1585
How can anyone discuss generalization versus specialization as if they are mutually exclusive? I can walk AND breath AND eat. Do those three skills label me a generalist? What if you throw in drive AND type AND play football? OK. how about add Write java code and Erlang and CSS? Next you could discuss at what level of skill you could be considered a specialist. While you, Jurgen, might consider me a java specialist, client X might disagree.
So if we agree there is a spectrum with extremes of specialization and generalization that can be applied to how people within a team are used we could move a little farther away from strawman arguments. Then there is the seperation of person from role. A team could be defined as needing 6 roles and those roles could then be filled by one, three, six, or 220 individuals. If you only have three people to comprise your team, you had better be able to value some level of generalization.
The concrete arguments I heard against specialization came from instances of failing to generalize. If a person who is only competent in a developer role tries to do web design, unsupervised, then expect trouble such as your team experienced, but throw in pairing and a daily stand up in which the team self organizes around high priority tasks. The result is a lone incompetent web designer won't be stuck doing web design. But perhaps a person whose skills are generalized to the point of being a capable developer AND web designer will be given the task. Hopefully they will even pair or be supervised by a SPECIALIST web designer. If the team failed to organize along those lines it is not the fault of the concept of generalization. It is the fault of the teams organizational capabilities.
Post new comment