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 Link to this heading

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 Link to this heading

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 Link to this heading

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.