Had to take a coding challenge recently. It is a strange experience for any developer. Got me thinking about interviews that require doing a coding challenge at any stage of the application experience. Here are my views on coding interviews..

Coding interviews are supposed to test the programming abilities of the testee. Although coding interviews ideally test the ability of the test taker to program, they are far from perfect.

What do I classify as coding interviews? I’d say interviews that involve the test-taker to do any sort of programming is a coding interview. I’d classify whiteboard interviews in the same category.

What are the goals?

  • I’d say the main goal is to weed out the worst CVs that claim years of experience in a programming language and the person/applicant is not really a good programmer.

  • Another goal is to test if the applicant is versed in the basic computer science concepts of performance tradeoffs etc. i.e. O(someting) PLUS the space-time tradeoffs.

Where coding interviews fail

  • Online coding challenges fail to catch cheats. I could sit with a friend and have him do solution 4 while I work on 1.
  • The interviewer may be biased: not really ever obvious, but it’s humans doing interviews in the end.
  • In-person interviews might make the applicant confused. This is just a matter of experience. I think experience helps here.

Conclusion

I like the concept of in-person whiteboard sessions. They are abstract enough so that the applicant can feel comfortable with his knownledge, he also doesn’t need to remember syntax by heart.

Development environments and editors are a personal thing for developers and programming in a foreign environment isn’t the same as doing it on your own machine. Recently, I had to talk to a board over serial (tty) interfaces on a colleague’s machine. Took 2 hours of struggle to get nothing done in the end. Went downstairs to my machine, sshd into the board and 5 min(!) later, done! 2 hours!! I’m not joking.