I was speaking with a colleague the other day, and he told me about an audition he’s been using for developers for years: asking them to implement a String-Copy function in the language in which they’ll be developing. Some of their reactions are telling:
- Some have said, “Why? The language has it?”
- Some have worked for 20 minutes, and figured it out.
- Some have worked for over one hour and not figure it out.
My colleague’s reply to the “Why?” people is to explain he’s looking for an example of their language skills. Only one person walked out of the interview.
For the people who finish in under an hour, they discuss how this version works. In fact, some candidates realize they have performance problems with their code during the walkthrough, and then want to change it.
Some people freeze, or just can’t figure it out, so for the people who work for an hour but can’t get it — and want to keep working — he says, “Go home, figure it out, and email it to me.”
What my colleague is looking for is simple: does the person know the language well enough to write something that he or she is willing to discuss with something else. It doesn’t have to be perfect and it doesn’t even have to be right. My colleague has to see just a little evidence that the candidate has thought through the problem, has tried to implement something, and has checked his or her work. Brilliant!
Over the years, my colleague has kept the implementations on these pieces of paper, and he was surprised by how many techniques a person could use to implement a String-Copy. (I’m not 🙂
For whatever jobs you’re hiring, think about how you’ve asked the candidates to show that they have thought through the problem, tried to implement something, and has checked their work. That’s an audition, and it’s especially good if most people can solve the problem enough to discuss their implementation in about 20-30 minutes. That’s because many people become nervous or resigned if the problem seems overwhelming or impossible.