There is an interesting conflict between skill vs. humility:
- Software teams requires smart people
- Smart people tend to be more egotistical (because they think they're smarter than everyone else)
- Egotistical people can hurt software teams because they ruin the chemistry and are no fun to work with.
So, the problem is that a smart person helps the team, but smart people usually have egos, which hurt the team. It prompts the question, would you rather have a coworker that is an egotistical star, or a humble average? (Of course everyone wants the best of both worlds, but life affords very few of those).
I see pros and cons to all the options on the spectrum. If you're doing a highly-complex feature, you may need the skills of the egotistical star, and may just need to tolerate the ego that goes along with it. If you're doing more commodity-type work, the humble average guy could be sufficient.
Personally, I'd like a balance, but find teamwork to trump ego. Because in enterprise architecture, you're always on teams with other people, and getting along with those people makes a world of difference. I'd rather be 10% late, and appreciate the team, then 10% early and hate the job.
I also find it's easier to learn from humbler people because they're more willing to share ideas, don't take criticism personally, and put the good of the project ahead of their personal ambitions.
Questions that I'd ask when trying to pick a person for a team:
- Is this position on a team - will they be working with other people?
- Are the skills replaceable? A developer's whose skills are easily replaceable doesn't have the right to be egotistical.
- Can you constrain/redirect their ego to something constructive (such as convert it into pride of ownership for difficult components, which helps the team).