I'm usually the person that does the interviews when we have a programming position. There are three criteria that I look for when I interview potential candidates:
- Technically savvy - can the candidate do the job? Does he/she has a good foundation on computer science (data structures, algorithms, etc)
- Quick learner or persistent when it comes to finding a solution.
- Is he/she an asshole
As I mentioned before, my interviews are very technical. For the first criteria, I start with a phone interview and present problems that deal with algorithms and basic fundamentals of computer science. If the candidate does well, then I schedule a personal interview and give them a small project to bring to the company. In person, we do a code review of the project along with the team and then along with the candidate. This is simply a "creative criticism" and a way to find out more about the programming skills of the candidate.
The second criteria is hard to gauge. I usually try to give some questions and if I see them struggle, then I see how they handle it. I also ask questions like "what is the latest thing (programming language, framework, tool) that you learned?", "what do you do when you get stuck on a problem?", etc.
The third criteria is extremely important to the team and the hardest to catch. Everyone has worked for or with an asshole. Just so we are clear, I really liked the definition from Robert Sutton's "The No Asshole Rule":
THE DIRTY DOZENCommon Everyday Actions That Assholes Use1. Personal insults2. Invading one’s 'personal territory'3. Uninvited physical contact4. Threats and intimidation, both verbal and nonverbal5. 'Sarcastic jokes' and 'teasing' used as insult deliverysystems6. Withering e-mail flames7. Status slaps intended to humiliate their victims8. Public shaming or 'status degradation' rituals9. Rude interruptions10. Two-faced attacks11. Dirty looks12. Treating people as if they are invisible
I usually call the candidate's references and asks some "what if" scenarios. Despite all of this, it is hard to identify an asshole.
It is very hard to build a cohesive team, but when you have one...it's amazing. The team works like well-greased machine. Introducing an asshole is almost like throwing a monkey wrench to the machine. As Jim Collin's mentioned in his famous book "Good To Great:"
If you have the wrong people, it doesn’t matter whether you discover the rightdirection—you still won’t have a great company. Great vision without great people isirrelevant
Managers, if you have an asshole, you need to handle them right away! You need to let them know that this type of behavior is simply unacceptable and if it continue, they will be terminated. It is simply not fair for the team or to the company. Simply put, assholes will bring down production and cohesiveness to the team. Worse, you can potentially loose some great resources.
How do you find people that are quick learners?
How do you handle or filter assholes?