If you want to drive you software team without pain you should favor generalists over specialists. That is not always possible of course, but in general generalists are a better bet (gen-gen bet-bet - weired ;) ).
The idea is of course that there is no single point of failure. One specialists is a single point of failure. Losing her can cause quite a big headache. Code reviews help and pair programming comes to the rescue...