/ work

So, about coding interviews

Let me just say something straight here: I kinda hate coding interviews. I get the point of them and I understand why people do them, but I still don't like coding interviews - at least for any position higher than a Junior one. Let me explain why.

Coding interviews are annoying. Some of them you do at home, alone, no one looking at your face or screen: those I'm mostly okay with. Starring at my face, analyzing my behavior, checking every single line of code trying to understand my thoughts? Nah.

NOPE!

You see, from my perspective, asking someone you don't really know to code something just to prove he/she can actually write some code is wrong. Most of the problems I've seen so far are completely unrelated to the actual job tasks themselves. Asking someone to write a code just for writing a code is useless unless you ask the person to actually explain the idea. You probably don't need someone who knows every single algorithm by heart: you need someone who knows how to think about a problem, break it into smaller pieces and solve all (or at least most of them).

This process of analyzing, understanding and designing a solution for a problem is a skill that you get by... well, trying. It's all about experience for me. Maybe the person you're interviewing simply didn't get the idea of your question. Or maybe it's something that he/she never saw before in the real world. Or maybe it's just a question that isn't in the skillset of that person!

Instead of asking to write Bhaskara's formula in C (this was actually my first coding interview), solving a "Snake game"-based problem (for a web dev position! sigh), or even checking if a string is palindrome (dude! *facepalm*), ask the person a real problem. Say:

Hey, look, we got this problem over here. Our model is like this, but we need to migrate to something more in the lines of that. How would you do it? Explain your approach.

Then elaborate on it. Ask about how to do it with no downtime, no client version issues, no API version issues, anything that is actually a real problem for you. This is way more interesting than standard questions that most people, after years coding weird systems, probably won't remember. You allow the candidate to discuss the solution and even improve it during the talk. Analyze that, not the code!

So, please, don't ask me to do something with a binary tree or a linked list or a weird-ass structure that I saw over 10 years ago in college and expect me to know it just because I have years of professional experience in coding. Most of my - and others I've talked about - daily tasks don't require memorizing those algorithms anymore: we still remember some of them, we can still understand them and, maybe the most important part of it, we know how to Google them up if we ever need anything related to them.

Fuck this shit, man!

We just won't remember!