One of the most common problems I observe in Agile teams is their inability (or perhaps unwillingness) to "swarm" on difficult problems to ensure an adequate solution. When I use the term “swarm,” I’m referring to multiple people working jointly to solve a single problem. Too often teams suffer from fuzzy logic, thinking, "Let's divide our resources to conquer the stories in this sprint more efficiently."
What's interesting is that I see teams fail sprint after sprint by employing this strategy. Yet they can't bring themselves to take the recommended course of action and swarm on stories until they are completely done. What's even more baffling is the unwillingness of teams to apply common sense to situations when "efficiency" is at stake.
Remember how in suspense/horror flicks the characters inevitably decide on a course of action that involves splitting up the group to overcome the adversity, whether it’s brain-starved zombies or chainsaw-wielding maniacs? There’s always a pivotal moment in the movie where one of the characters utters these famous last words: "Why don't we split up, so that... (insert absurd rationale here)?" Of course, everyone watching the movie is thinking, "Bad idea, you idiots! You won't stand a chance alone!"
It's common sense that facing big, hairy monsters alone leaves no chance for survival. Yet the draw of being "efficient" seems to win this debate every time, regardless of the empirical evidence against it. I suspect that until we let go of preconceived notions of “efficiencies,” the bloodbath will continue...

"Swarm" connotes each team member has similar capabilities & knowledge. Tasks can be moved quickly from person to person.
While it may appear "splitting up the group" to attack a problem is disadvantageous, it may not really be what’s happening. What often occurs is the person best suited to handle the task is given that task.
The guy or gal with the PhD in particle physics gets the particle physics problem.
"Specialization" isn't necessary in all products/projects - but it can often be absolutely essential.
Competent companies often *do* hire individuals based on specific sets of knowledge, skill & experience. Position descriptions are nearly always (in my experience) intentionally discreet.
While it would be great if the person doing GUI work could also do back-end development – if they're particularly well suited to GUI work (& love it) - why give them the database? If they’re not good at and don’t like it – won’t tasking them with it (or allowing them to sign up for it) create risk?
People have strengths and weaknesses. Yes - teams should continue to build their member's strengths and mitigate their weaknesses. Sharing work obviously builds competencies.
However, if a key task requires 12+ years experience in guidance control systems - or genetic algorithms - or telemetry processing - or (no kidding) particle physics – a GUI person just isn’t going to hack it. You need an expert.
All of the projects I’ve worked on had experts with specialized skills. There’s no way everyone could do everything.
Also, "stars" (experts) often need to float from project to project. (that’s Agile!) Therefore, they (the person – more than the manager) need to see what their total tasking is for the Sprint – for all the products/projects they’re working on.
Scrum is an Agile process. Therefore, it's also true "People before Process" applies to Scrum. If People work more efficiently on things they're knowledgeable about & love to work on, Scrum should not stand in their way. :-)