So if I make a startup, I should be forced to hire some brilliant programmer whose personality I clash with over over a slightly less brilliant programmer who I can tell will become a fast friend just because the former has demonstrated more technological prowess?
My opinion: there's not enough information to make a rational decision between the two.
Perhaps check references to determine if either candidate was able to work well in the type of environment you provide.
For example - the nice person may be lazy, or the abrasive person may productive and helpful.
It's been my experience that contacting the candidates references will flush that information out. Even in this age of litigation - I've always been able to get an answer to "Please rate on a scale of 1 to 10"
We've avoided some people that interviewed well and had great skills but were horrible human beings - and we've picked up some people that are hard workers that are willing to learn that didn't interview well.
Some programmers are real jerks who are always trying to prove how smart they are in competition with other people in the room, and because these are basically acting out on a neurosis if you have one of them yes an hour interview will probably at least establish some cause for concern.
If you want to play the hypothetical game: maybe you're the kind of person (most of us are!) who will never be fast friends with someone who's a woman. Or gay, or Muslim, or Mormon, or vegan, or deaf, or Republican.
If your hiring criteria excludes groups like that by a "fast friend" proxy test, then yeah, you should be taking the better programmer.
Rejecting someone is really hard. Of course you want to give them actionable feedback, but at the same time you don't want to give them a bad feeling about you or your company. These two things are almost diametrically opposed to each other, because most people take feedback from strangers pretty badly.
Sure, it'll be more productive for everyone if I tell someone that we think they're just not smart enough to learn shit as fast as we need them to. But that hurts. So we say "You're great, but we're looking for someone with just a few more years of C++ experience". Similarly, when we think you've been acting like an arrogant dick, we say "lack of culture fit".
I once rejected someone whose English was so bad that I couldn't understand them on the phone. That's a hard thing to tell a foreigner who has the courage to call you up, by phone, in a language they probably know they're not great at, for an internship position! So I lied and I told them they had insufficient React experience. Am I proud of that? No. I'm still not sure what I should've done.
I see this trope a lot on HN that "lack of culture fit" means "wrong brand of sneakers" and it's usually nonsense. "No culture fit" means "there's something specific that we dislike about the way you behave or communicate but we don't want to hurt your feelings more than necessary".
Just say you’ve chosen not to move forward and decline feedback for legal reasons if pressed. That’s what everyone else seems to do. Better than lying.
I mean, it's just a hunch though. I've only spent an hour or two with the person, I don't know actually know if they would be hard to work with.
Candidate one gives off slightly anti-social vibes but is brilliant, candidate two jokes around with me during the interview and is smart as well, but less so than candidate one. Am I justified in going with candidate two on a hunch?
In your position, I’d take candidate 2. Displaying a reasonable level of competence and ability to work in a group is so much more crucial for a small company!
But now you did the mistake of assuming a lot of stuff, with very little data. Why can you say that person 2 is better at working in a group? Maybe person 1 was just very nervous, or is a type that takes a few days to warm up to new people. Maybe person 1 just crack jokes all day and is actually detrimental to the productivity. Impossible to tell from this one que alone.
You're always left with an imperfect amount of information after an interview. I don't think that means you should discount how well someone fits into a conversation given how important solid communication is.
Pretty much this. Yes, technical skill is important, but to some degree, the proficiency to do our jobs can mostly be taught given a proven background and some proven competency during the interview. Good communication skills? That's something taught over a lifetime.
And hence, some weight in the skills/judgement of the interviewer.
Which is also why there are usually multiple stages in an interview process, or at least, you pass a candidate to 3 or more team members to interview the candidate.
In my experience, it's hard to find good candidates, but not that hard to figure out which of the candidates will be a good fit, and a strong contributor, to a team. I've also hired mostly for team sizes of 10-20 developers, not 200.
Yes, as a manager you shouldn't become friends with your reports anyway. It happens but it always complicates things. If for no other reason then you have a perception issue with your other reports that you don't have a relationship with. Did your friend get a promotion because they're good or your friend? Did they not get the promotion because they're your friend and you're worried about optics?
This doesn't even touch even more difficult situations like when your friend messes up and needs to be dealt with in a professional but non-personal manner.
If the reason you can't work with them/clash with them is based on their protected class status, the answer is yes, you are forced to hire them. So why not expand it a bit to protect groups that might not have quite the same level of legal protection?