source | link

I totally agree with most of the comments above that refer to fitting a person to a problem. This usually results in a long term relationship rather than hiring a superstar to work on a regular problem - which will just frustrate him to leave quickly.
Having said that, You should always try to hire for your company rather than a particular position. Because this same guy is going to switch between teams sooner or later with personal contacts etc. and he might turn out to be a deadweight somewhere else. Ensure your company has very strict internal transfer guidelines and that you have a clear picture of what you will do in your team for the next couple of years before hiring a person who you think might not meet the company bar (but will solve the current problem). I have seen too many cases where mediocrity in developers has made the team work extra hard to fit around them.

    Post Made Community Wiki by Subu Sankara Subramanian