Hiring is always hard. You have a vacancy, then a lot of candidates came and you have to decide who will be the one.
I think I’ve finally understood what is the perfect interview for the software engineer position.
Test application
First of all, you should prepare a task to write some test application. It should be simple and small (maximum 60 minutes to implement).
Then add about 5 additional problems to work with (every problem can take about 10-60 minutes).
Interview process
Use Google Hangout or Skype to connect with candidate. After introduction ask to share his screen (it’s important).
Then describe the task. Candidate can use any language/framework, he can also use Google, Stackoverflow, any books, tutorials, etc.
And magic happens here. Long resumes, great portfolios, recommendations, certifications - all these things are useless. Now you can see how people really work.
After main task you should offer a few problems to work with. It’s nice if you have either hard and easy problems - you can get additional information in this case. There are different types of software engineers, somebody likes to work on a really huge and complicated problem (think a lot about design, refactoring, etc.), and other people may like finishing tasks, fixing bugs… Sometimes you know what type you need.
Result
In the end of the interview you know a lot:
- You saw how candidate thought about the problem, how he analysed you requirements
- You saw how candidate designed the application, probably on macro- (project, module) and micro-levels (class, function)
- You saw how candidate used his IDE, OS, tools
- You know is candidate able to learn quickly, use Google/Stackoverflow successfully (important skill btw)
- You also saw his programming skills. If you’re generalist it doesn’t matter what language was used.
- You can probably decide will it be comfortable to work with this person
Cool for the 90 minutes, right?
PS: You might say - “I don’t like when somebody is watching when I work. I feel terrible.”.
I think it depends on experience - the more experience you have, the more comfortable you feel. Also, may be you didn’t work in a team enough.