loading...
Cover image for How to survive (and thrive!) in software engineering interviews

How to survive (and thrive!) in software engineering interviews

calebmer profile image Caleb Meredith Originally published at calebmer.com ・10 min read

I’m an engineer who's beginning to interview candidates for coding work. I’m loving meeting new people, and I’m also benefitting a lot from the incredibly interesting conversations that spark in the interview room. However, while it’s exciting for me to see the process from the other side, I know full well how daunting it is to be in the interview chair. I wrote this article hoping to assuage some fears by removing some of the mysteries around interviewing for software engineering positions.

Right now, my understanding of the gap between being an interviewee and an interviewer is developing. As I learn more about the process from the interviewer side, from colleagues who’ve been interviewing for far longer than I have, I can see clearly (with hindsight) some of the more egregious errors I made in the interviewee chair. I could tell stories about the things that I’ve done…

Ok, just a few. Purely for illustrative purposes. And maybe some amusement. Let’s call these—uhh—Story Charmander, Story Squirtle and Story Bulbasaur. Because why not?

Story Charmander

The worst interview I ever had ended early. Why? I was way too forthright with my opinions, and immovable on my stance. Things I’m still working on today. And while I am a huge proponent of confidence (see below), my nerves had pushed me right through confidence and into arrogance. Not a good interviewing look! More on this later.

Story Squirtle

My second story is about a time when I couldn’t come up with a simple answer, so instead grasped at the most esoteric, niche data structures I could muster (Bagwell’s ideal hash trees with a branching factor of 32, since you asked) to solve…wait for it…a problem asking me to do date math skipping weekends. The interviewer was, to their eternal credit, extremely patient, and once I’d stopped grasping at straws, gently queried whether that would really be the most efficient, cost effective solution for a client. That brought me back down to earth pretty quickly.

Story Bulbasaur

The third story is about the time I helped build an app and coded in right / left swiping with redux-saga that almost blew my own mind with its elegant beauty. Yes, it was that good. I wanted to explain all the awesome details of the code to my employer. And my employer was so fascinated that he paid me double to write a book about it didn’t care. Not one single bit.

I still think fondly about that code, from time to time.

So, you’re preparing for a software interview? Welcome!

Now that I’m in the other chair, I find that I have empathy with both sides. One of the really interesting things I didn’t appreciate before is that the interviewing process really is all about communication. By which I definitely mean two-sided communication. This train of thought got me mulling on all the things that I wish someone had told me before I started interviewing. So here, I’m going to explain some of the things that we look for in candidates. My intention is to make the process less intimidating, if possible.

There are a lot of myths around; stories that seem designed to worry candidates. I was certainly anxious, particularly given my oddly shaped background. And this needless worrying did me no favours at all. This article is intended to be more transparent, dispel some of those myths, and explain the process a little better.

I also want to spend a little time exploring how personal behaviors that we put on for one reason can very create different impressions on those around us (please refer back to Story Charmander). I hope that the following points will remove some of the mystery surrounding interview rooms, and maybe even allow you to enjoy the experience of meeting people who, most likely, share some of your passions with you.

Interview terrors: taming the beast

Lots of people get these. Arguably most people. We all feel worried, agitated, like our stomachs are full of butterflies raging, fanged netherbeings.

It doesn’t have to be this way! Having some nerves before important events is a good thing, causing adrenaline to flow, which in turn will help your natural charisma to shine in the room. However, unchanneled fear is more harmful than not, in several ways. Here, I’m going to share with you a few strategies I’ve learned to face some common pitfalls within engineering interviews.

Rejections! Fresh rejections! Get ‘em while they’re hot!

Some people hamstring themselves, being so worried about failing the interview that they fail to even apply for the job. This is a huge shame. Really. I almost want to shake some of my intelligent, awesome friends when I think about the jobs that they’ve settled for, instead of applying for the jobs they deserve, all because of a lack of confidence. Their inner voice made the decision that they weren’t going to get the job, and they then made sure of that by never applying.

Look, truthfully, for most people, the fact is that you will apply for more jobs than you land, i.e. you will face some rejections. This is ok! Please, don’t let fear of rejection put you off applying in the first place. If you don’t give yourself a chance, why would someone else?

I think we’re all familiar with rejection-to-success stories; everyone has at least one and you can fall down a plethora of internet wormholes reading them. So I won’t repeat those stories here. However, recently, I‘ve been finding it more helpful to train myself to look forward to the rejections — to consider each rejection as one stepping stone closer to a YES. I’m really enjoying Jia Jiang's rejection therapy talks as a way of understanding this process.

I like to imagine the process as collecting a bunch of rejections that I can then trade in for a YES at a swap meet. You may have a different visualization technique.

The interview itself: Shall I compare thee to a band-aid?

Ah, the best bit. Are you a ripper-offer, or a slow peeler?

In theory, a perfect interview would be you demonstrating your smart, cool, funny qualities so well that when you leave, the interviewer(s) can’t imagine being on a team without you. Perhaps you’d have a conversation ignited by glowing sparks about developments and solutions in a field you’re both interested in. (Hopefully. If the interests aren’t shared, there may be bigger problems to fix 😉).

However, in practice, know this: the interviewer is looking for indications of your skills and behaviors. Essentially, they want to know three things:

  1. Can you do the job as advertised?
  2. Can you learn fast?
  3. Are you a person they want to work with for the next three—five years?

And don’t forget, crucially, the interviewer should also want to show you how cool the company is to work for.

Anything else is just icing on the cake. Flowing conversation would be amazing, but honestly, one interviewer may be trying to remember to assess you and not just have a fun conversation, another may be worried about ensuring you’re having a good time; meanwhile you are trying to remember how html works. No one single interviewer gets a final say in these things. What I'm trying to say is that it’s tough, and there are a multitude of moving parts to interviews.

And recently, I’ve actually been thinking, instead of sugar coating this process, maybe the truth is really the best that can be said about this. An interview isn’t intended to be a walk in the park. Hey, 👁👄👁. Just acknowledging that fact will allow you to get to grips with the nature of the beast.

So yes, you are being evaluated while you are in the room. But please don’t forget, you should be doing some evaluating of your own while you’re in the room! Do you want to work with your interviewers? Do you get a good vibe as you walk through the offices? Interviews are not one-sided lectures—you should actively participate in making your own judgments about the company. Understand that the interview is a necessary part of this process. It might not be pleasant, but facing it with strength allows you to have some power over the situation.

Also please note, if you’re more of a slow band-aid peeler, sorry—I don’t know of other, more useful advice for you.

The interview itself - some answers are more right than others

Let’s get into the details. The list of three things above is a summary, and there is a bunch of information out there on learn how to talk about yourself, your achievements and your abilities. I have faith in you—you’ve got this part.

But that stuff? That’s the basic stuff. Here’s where you’re really going to make an impression. Try to remember at all times that you are being considered not just for the job as described, but as an individual who’s going to be able to grow and develop alongside the rest of the people in the company. Your interviewers want to see that you have that potential. How do we look for it?

Well, there are a few indications, and one really interesting one I want to talk about relates to Story Bulbasaur (see above).

The moral of that cautionary tale is that yes, code can be beautiful, and complex, and imaginative. Is this always what a client is paying you to do? No. Is it ever? Unlikely. Your clients probably won’t care about the intricate, clever solution you came up with to fix their issue. They just want to know it’s fixed.

But wait! There's more ... On the other hand, your co-workers will care very much what solutions you are using, as they’ll be the ones helping to maintain and develop your code in the future. They will also be the audience you want to woo with well-designed code.

So long story short, in the interview room, when we are looking for potential, we are almost certainly looking for your ability to take a practical approach when it comes to work. The trick to this is to try to achieve a balance between demonstrating your knowledge, and being pragmatic.

The interviewers: just…some other people?

A point so important, so vital, so often-forgotten: we’re just people. Moreover, we are people who want to stop interviewing other people so we can get back to work, so that we can go home on time. This incentivizes us to be on your side — truly, we want you to be ✨The One✨ so that we can end the interview early!

Techniques for Improvement

So, now you have some of the common pitfalls and experiences that many of us go through on this journey. Here, if you’re interested, are some of my thoughts on how to change your approach to software interviews from now on.

Confidence is Key

Work on your confidence before getting into the room. Really work on it. Use affirmations or whatever is necessary. You need to be able to talk with assurance about what you’ve achieved, and use your skills to solve problems while in the room. If you don’t believe in yourself, it’s going to be harder for you to do these things. The interview is about proving to us in person that you have the skills your resume said you had.

Always try to aim for balance. At this point, please refer back to my personal ‘Story Charmander’. For some people (guilty), confidence under pressure has a habit of mutating into something that seems like arrogance. Work on your communication skills before the interview with friends and family members. Remember, we can’t read your mind, so something that may seem obvious to you will need to be explained to people who don’t live inside your head. Think of it like this: remember how for school math tests, you couldn’t get high marks unless you showed your work? Show us your work! We want to know how you’re arriving at your conclusions.

And finally, take the time to understand that in this area, just like everything else in life, there are very few cut-and-dry answers. Almost everything will have grey areas which can be debated and played with. Part of any interviewer’s job will be to test your boundaries and see how well you work in a team. As long as you can’t be malleable and accept other points of view, you’ll be telling your own ‘Story Charmander’ to people for a while.

Practice may not make perfect, but it sure builds muscle memory

I wholeheartedly recommend that you practice interviewing in preparation for an interview. Find a friend who is familiar with interviewing and set up some Zoom time with them. Or join an interview practice group - these do exist, and you just have to find them. You’re not practising to get perfect, because you won’t. What you will do is improve and build your personal tool-set. Work on spotting patterns rather than aiming to do every problem under the sun. We’re interested in the solutions you offer, sure, but also your routes to solutions, the way you think, and the tools you have at your disposal and choose to use.

Programming languages and problem solving

Try to be comfortable in at least one programming language, but don’t get hung up on your usage speed. Remember, we’re not looking at how fast you can type, or how many languages you can list. We are looking at how you use the tools at your disposal to effectively solve practical problems. Often, a candidate who is very familiar with only one language but has spent time practically using a language will outperform a candidate who is familiar with three—four languages but spent no time practically using those languages.

Will I have to use a whiteboard like on TV?

Most likely yes, this will probably come up. You may need to show your work on a whiteboard. Seems like it’s easy as pie to simultaneously think, talk, write on a board and explain your thinking when the people on TV do it, right?

Yeah, it’s not.

It requires some serious hand-eye co-ordination, the ability to organize your thoughts, and simultaneously present. It’s further complicated in current, social distancing times with the necessity to ensure that:

  1. Whatever program you’re using for the interview will allow you to present; and
  2. You have enabled the necessary permissions to be able to present.

My advice?

Practise presentation skills with a friend who enjoys being talked at. Use Google Docs and Miro. Check your settings several times before any interviews begin. Then practise presenting again.

Conclusion

The thing I most want you to take away from this is the fact that we are all just people. If you and we are in a room together, it means the recruiting team believes you can pass based on your resumé. Whether your resume is full or not, you’re in the room, so try to have fun talking about the thing you enjoy doing! And know this:

We, as interviewers, want you to succeed so that we can go write some more cool stuff. We want you to succeed so that we can have an extra person on the team to do even more cool stuff with. The interview is simply an opportunity for you to wow us in person.

Now, go forth and interview.

And let me know if you have any questions.

Because I’m interested.

Posted on by:

calebmer profile

Caleb Meredith

@calebmer

Big fan of JavaScript, Rust and daikon. One of these things is not like the other. Currently at Airtable; formerly Facebook, Oculus, Flow (type system). Creator of PostGraphile.

Discussion

markdown guide
 

Thanks for sharing this post, very informative 😍.

 

And my employer was so fascinated that he paid me double to write a book about it didn’t care. Not one single bit.

🤣🤣🤣