Gayle Laakmann McDowell’s 5 Tips for Cracking the Coding Interview (from Anywhere)
As COVID-19 continues to change the hiring landscape, we sat down with Gayle Laakmann McDowell, author of Cracking the Coding Interview, via LinkedIn Live to dig into remote interviewing tips and best practices. The conversation focused on advice for developers currently searching for new roles.
With over 3,000 participants tuned in, the audience shared their questions about interviewing remotely—from tackling video interviews, to navigating unconscious bias and pay negotiation. These are the highlights Gayle shared for job seekers and interviewers alike:
Tip #1: Candidates: show up to the interview prepared
Preparing for a technical interview can seem like a daunting task. But at a high-level, there are two rounds you should be prepared for in a technical interview:
Prep for the problem solving round
The first round you should prepare for is a problem solving round, which usually involves questions around algorithms and data structures. For this round, there are plenty of resources that you can practice from. You can start with Gayle’s book, Cracking the Coding Interview, or try the interview prep kit on the HackerRank community. Gayle also suggests trying the Cracking the Code Interview video series—a series where Gayle outlines key concepts from her book in quick 5-12 minute snippets.
Prep for the system design round
The second round you should prepare for is the system design review. One way to get ready for this round? Gayle suggests giving your developer friends a call. Discuss the architectural decisions you had to make to design your last project—and see what questions they have about the process. It’ll help you practice answering questions you might get from an interviewer during the system design round.
Think carefully about languages
And when it comes to languages: try not to cling to one language alone. Instead, plan to go into the interview focusing on one or two languages that you already know well. For backup, plan to have a few other familiar options in your back pocket. The language you master does matter to some degree (e.g. the stigma some have against .NET).
But instead of focusing only on what you already know, in the interview, it’s important to stress that you can continue to learn more languages over time. Don’t identify yourself by the language(s) you’re most familiar with—like calling yourself a Java engineer. If there’s a gap in your language proficiencies, make it clear that, given a month, you should be able to add any language to your arsenal.
Tip #2: Understand the (new) risks of remote interview bias
In moving from an onsite to a virtual interview, some biases may be removed from the equation of the interview (e.g. some body language, clothing, and the like). But in a remote interview, new biasing factors—like your work from home setup, family life, or context clues from your background—can also come into play.
Candidates: Consider your interview background
For candidates, Gayle suggests setting up a professional looking background, or trying a virtual background: if your personal environment is not professional, a virtual background is recommended. Set up in a quiet space, get a good microphone, and ensure to communicate to any family or roommates that you’ll will be unavailable during the interview window.
Employers: recognize and mitigate biasing factors
For employers, Gayle says that companies need to be diligent about eliminating bias as much as possible in this stage. She suggests that employers try conducting interviews with video off to eliminate biasing visual cues.
And no matter what happens: be kind, considerate, and empathetic. Interruptions like kids in the background will happen—but they shouldn’t be held against the candidate. Be aware that silence is much less comfortable virtually than it is in person. Be sensitive to this awkwardness, and don’t be afraid of a long pause. Candidates may need time to formulate their thoughts, and video delays can mean that their responses come in slower than they would in an in-person environment.
Tip #3: Keep investing in personal development
In the current climate, unfortunately, some new grads and students haven’t been able to get hands-on job or internship experience to improve their skills. But according to Gayle, that doesn’t mean they can’t hone their skills through other means.
Getting experience without a full-time role or internship
For new grads and students that aren’t able to get an internship, Gayle suggests finding a mentor in a corresponding field. Scour your network for a developer that’s currently employed in the role you want in three to five years. Even without an internship, they can help you continue to guide your learning and job search. A mentor is also a great person to reach out to when one of your projects is breaking, or to ask for advice when preparing for interviews.
Whether you have an internship or not, Gayle says the key is to use this time wisely. Get all the fundamental computer science (CS) experience you possibly can, through compilers, debuggers, and code systems. Use this time to work on your own project, or contribute to open source projects. When it comes time to apply for jobs again, it’ll help offset the impact of missing an internship.
And overall: know that you’re not alone. These are unprecedented times, and hiring managers aren’t going to hold new grad candidates accountable for the conditions of the job market. So if you’re able to use this period productively, companies will understand if you weren’t able to get an internship, or if your offer was rescinded. Stay focused and curious.
Tip #4: For interviewers, distribute your hints thoughtfully
For interviewers, it’s tricky to decide when to give a hint—and when to hold back. The goal is to make sure that you have the right type of question to ease that tension.
When you’re choosing interview questions, try to choose questions that have different hidden “levels” in them. That makes it easier to transition from one step to the next. That way, it’s easier to give the candidate hints when they're stuck. Just remember: you’re trying to assess the best version of the candidate. If they get thrown off, it’s unlikely that you’ll get to see the full extent of their skill set—so be patient.
Gayle has a few go-to interview questions that she suggests. One of her favorites?:
Given two strings A & B, find how many permutations of B exist in A as a contiguous sequence
The reasoning: there’s a simple, naive brute-force solution to this problem. But there’s also another level that involves some level of hashing. If you help guide the candidate effectively, you can learn a lot about their skill set based on how they answer the question.
Tip #5: When it comes to negotiation, know your worth
According to Gayle, the negotiation mistake she sees most candidates make is simple: they don’t negotiate.
The importance of negotiation
Negotiation can be an uncomfortable conversation, but avoiding it altogether is a disservice to your skills. If you’re able to overcome the discomfort that comes with negotiating, one conversation can earn you real value in minutes. According to Gayle, there’s nothing to lose. Since it’s a complex conversation, it’s easiest to discuss with your recruiter via phone, but it’s ok to use email if needed. But don’t stress too much about the medium you’re using—just make sure you have the conversation!
When determining how much to ask for, put a price tag on the discomfort of the conversation. Start by asking for their offer, plus a little extra. If you’re not sure what to target, ask for comparables from friends. Just remember: anything additional you get from that conversation is more than you started with. And don’t worry about employers rescinding offers because you chose to negotiate. So long as you stay professional, the worst they can do is say “no” to your ask.
Getting prepared for a negotiation
Overall, make sure you're prepared for the discussion—and be ready to talk about the compensation you expect for the role. Look up comparables online through resources like Glassdoor or Levels.fyi, but take them with a grain of salt. Published salaries aren’t always aligned with what people are getting, since some calculate salaries differently than you may, depending on the unique components that make up their compensation. The best way to gauge an appropriate salary is once again to ask your friends in similar roles. It can be uncomfortable, but if you admit it’s awkward, and explain your reason for asking, most friends are willing to share.
It’s also important to know that in New York, California, and many other states in the US, law prohibits employers from asking about your salary history. And if you ask for a salary range for the role, they’re required to provide you with that information. Understand your state law and know your rights going into the conversation.
If you’d like to watch the full session recording, tune in here. Go forth and crack the coding interview from anywhere!