So you find yourself on the hunt for a new job. Maybe you stopped learning at your current job, or there are frustrations you can’t overlook anymore. Or, maybe you finally think you gained what you needed to go for that perfect job. So you go to leetcode, spend some time each day practicing, and start applying. But, you strike out. Months go by, and you can’t seem to get any of the jobs you really wanted. Any job interview that does go well is with a company you don’t want to work for, or the offers are too bad to accept. What gives?
The Status Quo
You’ve trained for technical job interviews like this your whole life. Your friends have trained like this. This is what the industry tests for, and if you want to get a good job that’s what you should practice, right? Well, let’s take a step back and think about what it is you really want to get across during an interview.
You have a wealth of experience you’ve gained through your life and previous jobs. Ideally, you want to get all that across so it’s obvious how awesome you are. If you only practice algorithms and that’s the only part of the job interview you slam dunk, it’s going to seem like that’s the only thing you have going for you. Maybe you’re applying for a big tech company like Amazon or Google or something, and you know that is absolutely the most important thing. If that’s the case, maybe you’re right on the money and you’re happy with that. Great! For most people applying to a less specialized job, though, interviewers will look for a lot of other important skills.
For starters, when doing any coding or when answering general coding questions, consider the structure of what you’re writing. Making sensible constructors for your objects and splitting up your methods to make them testable, for instance, can go a long way. It tells the interviewers that you are thinking about the problem as a whole and not just the zoomed-in view of the direct task requested of you.
Consider if there are any built-in methods in your language to achieve the request or part of the request. Maybe the interviewer wants to see you write it by hand anyway to see your coding skill. But, they might just want to see if you think about those things before possibly over-engineering something. Even if they aren’t intentionally looking out for it, a line like, “Well, I would never do this by hand as the built-in sort is much more performant and saves time, but if I had to I would do this…” can really impress.
To practice this skill, I recommend you think more broadly as you do coding practice. Consider all the implications of what you’re writing and why and get a feel for what you think you could get across in a limited time frame. For instance, good variable names is a really nice skill to demonstrate, but it can be time-consuming on a whiteboard. So, with limited time, it might not be worth it. Consider doing different coding prompts than just algorithm tests from leetcode, but something that requires you to design a larger program. Maybe try programming your favorite game or something that interests you. This could also double as giving you code samples to hand out if requested, which is handy if your company owned all your previous code.
You might have the best idea in the world, but if you can’t communicate it during an job interview, how much good will it do? From group projects in college to software teams at giant corporations, communication is essential to working productively in any environment where you aren’t in a complete silo. Maybe it’s explaining technical information to lay audiences. It could be objecting to requests or timelines that you know are impractical in meetings. Or maybe it’s just vocalizing an opinion to your manager and why you feel strongly about it. Getting that information across is crucial to the success of a team, otherwise all the accumulated knowledge doesn’t do that much good. This can be a tough skill to get across in an interview, but if you’re good at it, explaining answers to questions well can really impress.
This one can be odd to practice, but I think totally worth it. Maybe stand in front of a mirror or grab a rubber duck, or even a real person, if possible. Try breaking down some complex idea out loud and see how it comes across. It might feel pretty awkward, but consider that an interview can be equally awkward. You don’t know these people or their knowledge level, so you might have to pay attention to their reactions and adjust. If you can get a real person, get feedback on how clearly you communicated the idea. Or practice bringing up an objection and see if you communicate clearly while maintaining the tone you want.
For most companies, attitude and culture are just as important as anything else. Someone with a bad attitude can be worse than unproductive and can negate the productivity of other team members. It’s true that an interview is a kind of test, but you’re not doing them in a vacuum. Be engaged! Ask questions! Get clarifications! Think out loud! Treat it like a collaborative process to find the right answer, even if you don’t get the totally correct answer, and it will be obvious that you can still be productive on a real team. New hires are an investment, and it looks good to have someone who is a good team player and will, at the very least, be able to learn from the team for whatever skill you might be lacking.
For practice here, consider grabbing a friend and doing some problem solving together. Find some practice problems (they don’t even necessarily have to be programming) and practice working it out together. Maybe you’re just looking to move some furniture around your place. But wait! Going through that process and the pros/cons with a friend can both make it more fun and give you practice at collaboration. Get comfortable thinking out loud on demand and having a balanced back and forth with someone, and that skill will pay dividends in more than just a job interview.
There are many other skills you might have picked up during your career and lots of specific skills that certain companies might be looking for. It’s worth spending some time thinking about what you really want to showcase in an interview and what a company might be looking for. Try to collect them and find a way to brush up on them and make sure you can confidently demonstrate them during an interview. It’s one thing to have practiced something at a previous job, but it can be harder to make sure you can display that in an interview. Take on some personal projects, recruit friends, do some Googling! The sky is the limit if you can really show off everything that makes you awesome in an interview!