Interviewing: How You Think

My friend and Web Dev colleague, James Socol, wrote a piece recently about some hiring things. I think it’s a good idea, and it would certainly make my job easier. It reminded me that I’m putting off a few posts about hiring.

I want to touch a bit on the “build/implement/write an X” style technical questions. For example:

  • Implement a linked list
  • Write a url parser
  • Make an image resizer in Javascript

Often we get candidates who are exceptionally smart on paper, have great Github accounts, but fall flat on the in person implementation.

For some people this is hard. So let’s get over the nerves. I’m not going to tell you it’s silly to be nervous or that I’m as nervous as you (I’m not), or anything that you already know. I will tell you this. If you notice yourself not thinking as sharply as you normally do, count backwards from 10. Then carry on. Repeat if necessary. Usually our interviews are 45 minutes long. 10 seconds of you counting backwards isn’t going to kill us for time.

Hopefully this will calm you. If this doesn’t… well it was worth a shot.

So let’s get down to brass tacks. I want to know how you implement things. I want to know how you think. I don’t care as much about the answer, but the correct answer is comforting.

If I tell you “implement an image resizer in Javascript” and you start diving into JavaScript code and get flustered, I can’t really help you. If you can do that without getting flustered and produce something that works, I’ll be impressed, but somewhat alarmed.

What I really want is you to step back from the problem. I want you to show me what the resizer will look like and how it will behave. You don’t need to go into too many details, but enough details so I know you understand the problem.

If the problem is easily testable (like writing a url parser), it wouldn’t hurt to have some tests to start.

Then I want you to write the code backwards from high level to low level. Write the HTML, write the initialization code, and finally write the event handlers.

This is not only easier to follow in an interview, it’s basic problems solving, because you end up breaking the problem into smaller chunks.