You see, people usually experience feelings, and sometimes those feelings are a barrier to do the most important thing: team work.
There are those who have excellent problem solving skills, and those who manage to remember all the tiny little deatails of every language. And over the years I've met people having one and lacking the other, and vice versa.
I once worked with someone having superior problem solving skills. He'd participate in programming contests acheiving excellent results. He was a star programmer.
But then, working with him on a team as a partner on daily basis was more than just complicated. His "team work" skills were something like "the rest of the team cheering him to do all the work".
Then I moved jobs and met the Architect. He knew all the Desing Patterns by memory, creating tons of layers of abstraction just because "It makes sense to keep things separarted", leading to an over engineered solution twice the size of a more simpler one.
And again, instead of communicating his "solution" to the rest, he'd open Eclipse and write all the code by himself, just because it was "easier".
Finally I met Q. He wasn't as smart as the first one, nor he knew all the desing patters like the Architect. But he'd code like a machine, creating elegant and simple solutions.
His most notorius skill was explaining things, a skill the other two completely lacked.