Picking a Language


Picking a Language


August 6, 2023

tutorial interviewing

One of the first questions I get from people preparing to interview is: what programming language should I use during my interviews?

I think people ask this question expecting to hear a revelation about one language secretly being the best for interviews. But the answer is, perhaps frustratingly, simpler than that:

You should use whichever language you’re most comfortable with.

Okay, it’s slightly more complicated than that. You should know which languages the job you’re applying to uses, either from the job description itself or from your early conversations with your recruiter. Don’t be afraid to ask this directly. “What languages does this position use?” and “What language should I expect the interview to be in?” are both valid questions that you should ask as early as possible.

Most likely, you’ll be given a few languages to pick from. And you should pick whichever one you’re most comfortable coding in.

Know the Company’s Stack

I mentioned this above, but it bears repeating: you should ask what languages, frameworks, and libraries are used by the position you’re interviewing for.

You can get some idea of this ahead of time by searching “what programming language does __ use?” or by visiting this Wikipedia article: Programming languages used in most popular websites.

Most big tech companies use pretty much every language you can think of in one way or another. Different parts of a big tech company might also use different stacks: Google Maps uses a different stack than Google Cloud, for example.

But don’t rely only on what you read on the internet about a company. If you’re interviewing for a company, ask them directly! They’ll be able to tell you exactly what you’re interviewing for, whether that’s a generalist position (in which case you’ll probably be able to pick any language you want) or something specific (in which case you might be asked to stick to whatever language they use).

Be Honest

It can be tempting to list every language you’ve ever heard of on your resume, but this can backfire if you’re asked about it in an interview.

Here’s an actual conversation that happened in one of my Google interviews:

  • Interviewer: How is your C++ knowledge?
  • Me: Honestly? Not great. I learned a little bit back in college, but that was ten years ago. Since then I’ve mostly coded in Java, so I don’t remember much about C++.
  • Interviewer: Haha, same here. Okay, so going back to Java, can you tell me when and why you need to override the hashCode() function?

I answered honestly, which resulted in my interviewer and I laughing together and then moving on. I might have tried to bluff my way through, by claiming to know C++ better than I did. But I’m sure my interviewer would have asked me a follow-up question about C++, and I would have been toast.

Fundamentals vs Frameworks

While you’re thinking about which language you’re most comfortable with, I’ll also mention that knowing a framework can be helpful, especially if the position you’re interviewing for uses it. But you should also know the fundamentals of your language.

As an interviewer, one of the most common reasons I’ve recommended against hiring candidates is because they could only code in one specific framework, but they were lost without it. Knowing a framework is a nice bonus, but you should be able to explain what it’s doing behind the scenes.

I’ll use Java

For these tutorials, I’m going to use Java, mostly because it’s what I know the best. I’m not implying that you should use Java, unless you already feel comfortable with it. The concepts I talk about should apply to pretty much every language, so don’t get too hung up on the syntax.


Comments

Happy Coding is a community of folks just like you learning about coding.
Do you have a comment or question? Post it here!

Comments are powered by the Happy Coding forum. This page has a corresponding forum post, and replies to that post show up as comments here. Click the button above to go to the forum to post a comment!