The technical interviewing process is difficult.
A phone screen is typically the “gateway” into the interviewing process. After that, interviews can go in several directions.
If you’re looking to make a career change, you might wonder what to expect when applying for a technical role.
To learn more about the process, we spoke with Ali Spittel, Senior Developer Advocate at AWS. Ali is a (mostly) self-taught software engineer who has been employed in the tech industry since 2014, holding multiple software engineering positions at startups and a distinguished faculty role at General Assembly’s Software Engineering Immersive. She blogs about her coding experiences, cohosts a podcast, and is a regular contributor to Women Who Code DC. Her experience speaking with, working with, and teaching engineers has given her a wealth of knowledge about technical interviewing.
Below we’ve compiled the most common technical interviews and share Ali’s tips on how to knock these out of the park.
What are some of the most common technical interviews?
The Phone Screen
This style of interview is often the first step of the interviewing process.
Most of the time, these interviews take place with someone in the HR department and aren’t a big time commitment. It’s your chance to learn about the company, the role, and if you’d want to continue interviewing with them. It’s also a great time to learn about their interview process, including what interviews you’ll have to go through and how time consuming it will be.
We talked with Ali Spittel about her approach to these interviews. She shared, “during the interview process, you have to think about your own time. I’ll usually accept phone screens because it’s a half hour call, but I like to be mindful about whether or not I should accept a full-blown interview with a company.”
Granted, if you’re interviewing for your first role or really want to move into a new position, then you may be less concerned about the time commitment. But if you have another job, these short phone screens are a great chance to vet the company before moving along in the interview process.
The Code Challenge
Some companies will have you complete a code challenge in order to gauge your technical skills. These challenges look different at every company. It could be a quiz, a project you have to build, or a link to solve algorithms. Some of them are templated coding challenges (from sites like Qualified.io), while others are created by the company for that specific role. They are usually “take home assignments” allowing you to do it on your own time.
Most of the time, these interviews are done using an online portal with a built-in timer. They’ll have you write code or solve algorithms in that portal. Other times, they’ll give you a GitHub repository with instructions for a project or have you use HackerRank, a code challenge site.
Even though the style can be different, the ultimate goal is to determine whether you have the technical skills for the role.
In this style of interview, you’ll be given a programming challenge or algorithm and will be asked to write the code for it on the whiteboard. For remote interviews, a lot of companies will do whiteboarding through a software tool or even Google Docs. The main goal is to get you to write code without using a text editor. They want to see you code in something that doesn’t provide formatting or make suggestions.
Ali doesn’t think this style of interviewing is very practical. You can’t run code after writing it on a whiteboard, so it doesn’t really mimic a real-world experience. She said, “I think the best format for this is when they ask you to write pseudo code. In that case, they ask for a general solution rather than actually writing code on the whiteboard. This option can be helpful since writing code on a whiteboard is really difficult when you don’t have your tools available.”
But preparing for this style of interview is worthwhile since it’s a practice that many companies follow, even for remote interviews.
A lot of unique interview styles exist with the goal of providing more accurate screens. We asked Ali what her thoughts were on these interviews. She explained that traditional, high-pressure interviews don’t highlight her skillsets well. She likes that companies are making the interview process lower pressure and thinks this approach provides a more accurate view of a candidate’s skills.
Some common options are pair-programming and a sample day of work.
An increasing number of companies are paying candidates to do a sample day of work since it lets them see what you’d be like as a co-worker.
In a pair programming interview, you’ll get paired with one or two engineers at the company to solve a challenge together. It often involves sharing your screen or using a tool like Visual Studio Live Share so you can write code together.
These interviews allow for collaboration and questions between you and the company’s engineers. It’s a way for a company to understand your style of coding and problem-solving skills. Some companies are less concerned about the actual code. Instead, they care more about your style of coding and thought process behind writing the code.
How should you prepare for these interviews?
In Ali’s opinion, the best types of interviews are the ones that don’t require preparation. You can just be yourself and show your skills, instead of having to cram for it.
That being said, here are some tips on how to best prepare for interviews:
- Don’t assume you know what the company is looking for or that they’ve communicated all of the instructions. Every company has different expectations on these technical interviews. For example, some companies care about how you solve the problem, while others just want to see how your mind operates. Some companies don’t look at the amount of time it takes to complete an assessment. Whereas for others, the clock starts ticking as soon as you open that link. Go ahead and ask follow-up questions: “Do you care how long I take?”, “When should I respond to the challenge?”, and “What do you expect from this coding challenge?”
- Read all the instructions and emails (even if they’re long)! Then read all the instructions again right before submitting the code challenge. It’s a dead give-away if you didn’t take the time to prepare or read things in advance.
- Research the role and try to get in the mindset of the person doing the interviewing. Think through what types of questions you’d ask if you were conducting the interview. Getting in this mindset will help you be more prepared to answer any question. You’ll also get a deeper understanding of the position.
- Practice explaining technical concepts. It’s one thing to know how to code. It’s another thing to be able to explain what you’ve written (and why you’ve written it that way). Try walking through your resume and make sure you can explain the technical concepts behind different projects you’ve worked on. Companies want to know what your communication skills are like and whether or not you’re able to explain your work.
- Rephrase the job description based on your experience. Most job descriptions have a list of required experience. Run through that list and ask yourself, “Have I done this?” Prepare by thinking through examples of how you meet the requirements.
- Make a cheat sheet. Ali shared that she has a repository on GitHub with visuals and practice problems for interviewing. It includes her notes on the problems, the answers, and things that might be relevant for the interviews. Over the years, it’s become a helpful resource to return to when she’s in the process of interviewing.
- Complete practice problems. You can find challenges on sites like Project Euler, HackerRank, Code Wars, or LeetCode. To prepare for a whiteboarding interview, use a Google Doc. You can practice by writing pseudo code but remember that a lot of companies ask applicants to actually write out the full code, so it’s worth preparing for that route.
- Follow good dev practices. This means you use good variable names, write clean code, and add comments when necessary. Go above and beyond if you can. For example, you could add some tests and some styling, even if they didn’t ask for it. You don’t want to spend too long on the challenge by any means, but it can be good to go above and beyond in a little way. Most companies typically have a large number of submissions for these challenges, so it’s a way to set yourself apart.
- Make sure a company isn’t taking advantage of you. Ali warns to make sure a company isn’t taking advantage of you when you’re completing these coding challenges. She shared, “You can do this by making sure it’s a challenge they give to all interviewees. You can also ask them if it’s a timeboxed challenge to make sure it won’t require an exorbitant amount of time. If they’re asking you to essentially do freelance work in order to interview, then that’s not ethical and they’re getting free work from you.”
If you’re looking for advice about doing a remote interview, check out The new rules of job-hunting during COVID19.