I have to spend, at the minimum, 30 hours with these people, often 40 or 50. If I have to deal with someone who stretches a 10 minute meeting into an hour because they just are chatty or don't understand or think it's a good time to bring up their hobby horse (every time), or they're irritating as hell, it's going to make my life worse. Life is too short to spend a third of your life with people who you can't stand.
But there are going to be people who are going to totally click with them. So is it better, as a boss, if I tell them to shut the fuck up? That they make me want to kill myself on a regular basis?
Now, for me, that means I'd have to personally pair program with everyone I interview for a half day. (If this irritates you, this is the wrong cultural fit for you.)
I've worked with people who got the job done but wouldn't follow UI patterns in the rest of the application. People who thought it was fine to modify the database in an integration test without rolling everything back. People who, no matter how much you asked, ignored the logging framework and checked printlns in everywhere. Who thought getting the job done quick was more important than getting the job done right. People who thought a copy and paste was better than generalizing the code and not repeating yourself.
Are they not doing their job? It depends. For people who were like them, they probably would get along swell.
But that's not a good cultural fit for me, for the kind of work I do. And I wasn't a good fit for a job where the boss knew every piece of code like the back of his hand and so tests weren't necessary. I was so afraid to make any changes that I froze up -- a bad checkin could mean hundreds of dollars an hour lost until someone notices.
I should have left, but I thought the problem was me, and that I'd eventually get it. I know better now, but it was about personality. I need to be around people who write tests. Some people don't. These types of people shouldn't work together.