Co-founder and CTO of Intelligent Cargo Systems
I bombed completely at my first big job interview. It included whiteboard-coding and questions about multithreading and I hadn't prepared nearly enough. Instead of saying I don't know, I ranted on for a good couple of minutes about anything tangential I could come up with, hoping I'd get in the vicinity of the answer–I never did. Fortunately when the ego takes a hit, a willingness to improve kicks in.
It's now almost ten years later and I've been through numerous ones–from both sides of the table. I'd like to share how our process looks today and what we've found works for us.
Our whole interview process looks like this:
Great candidates aren't looking for a job for long so we aim to have you go through our hiring process in less than a week.
As we do quite a few of these, I handle the initial 10-minute video chat screening. For the rest of the interview process, I get help from the tech team.
We started out by doing longer video chats but have learned that 10 minutes is enough to gauge if someone should proceed to the next stage.
This is what I'm trying to figure out in this brief chat.
Have they given some thought as to what they're looking for in a job? What's important to them? Good colleagues, snacks, hard problems to solve? What makes them tick? Do their eyes light up when they talk about things they enjoy?
Have they looked up what we do and do they have pertinent questions surrounding it? Do they care what kind of company they work for?
It's over in a flash and it's on to the next step.
We know it doesn't help to have someone look over your shoulder when solving a complex problem. We want to see how good you are at the problems you'll be solving day-to-day so you'll do the majority of problem-solving on your own time instead of at an interview where we think coding on a whiteboard or working out how many golf balls fit in a plane isn't a good indicator of your skills.
The assignment we ask you to do is simple–and that's our intention. Spending a few hours on a task will let us know as much as a task that takes a dozen. And no one likes spending more time than necessary on an interview assignment.
So far we only have tasks for frontend and backend engineers as we've yet to hire for more specific roles.
For frontend roles, the gist of the task is:
And for backend roles:
That's it! We also provide some hints as to what shortcuts and documentation you can use, e.g.
No need to reinvent the wheel, take any shortcuts you deem necessary in terms of libraries and frameworks but be prepared to explain your decisions.
We'd like to know how well you can communicate in written form and what your idea of instructions for a non-technical person is. From what we've seen, junior engineers glance over this next part and more experienced candidates do considerably better.
Submit what you consider is production-ready code including instructions for a non-technical person on how to run it.
You'll have three days to complete it (ship it earlier if you're finished) but we do set a deadline so there's some pressure to complete it.
This is where the grilling takes place–and oh how we grill.
No really, we're a friendly bunch and we're curious as to why you made the design choices you made in your take-home assignment. Interviews are stressful, especially when you're at the beginning of your career and we do our best to not make it more so than it needs to be. We think it helps to skip tasks like whiteboard-coding and yes-or-no questions and instead try to ask open-ended questions to spark up a conversation.
Instead of asking questions that have a fixed answer, e.g. "Define inheritance" or "Name the methods of an object class", we prefer questions like
What are your thoughts on testing code?
What does production-ready code mean to you?
What makes for a great product?
These questions are hard to study for–they require experience. We think the best interviews are the ones where it's more a back-and-forth rather than us interrogating.
We're also looking for good communication skills and a touch of humility here. Can you explain difficult concepts to a layman, and can you admit when you don't know something?
I love hearing I don't know from a candidate. It's not so I can feel superior but if I never hear it during an interview, we're either asking the wrong questions or the candidate may have an ego problem.
Congratulations, you've survived a technical interview. Let's head out for lunch or a coffee and talk about life in general. If you end up working with us, we'll spend a lot of time together over the next couple of years and we'd like to make sure we get along. Everyone can, of course, pretend to be nice for a few hours but it's a good indicator.
Most people are on their toes during a technical interview but by now we've spent a bit over an hour with you and this is our best shot at seeing you in a somewhat relaxed environment. Add to that the relief of having survived a technical interview and it's usually a nice break.
Everyone who was involved in the interview has a quick catch-up about what we think, it's most often unanimous but everyone gets a say.
One of the most important things we consider when hiring is that the candidate needs to be a great addition to the team–ok isn't good enough.
Finding great team members is exhausting and takes tons of time. When you've been interviewing for a while without finding someone, it can get tempting to go for a candidate you can't find any major concerns with. Our experience has been that unless you feel that you absolutely must have them on your team–don't make an offer.
That's it. That's what you need to go through to come work with us.
Would we do better not sharing our interview process? We don't think so. We think the best long-term plan is to have transparency within the company and so far it's treated us well.
We're always interested in ways we can improve. Candidates that get to the technical interview stage have spent enough time with us to provide some good feedback. Whether they get past that stage or not, we ask how they think we can do things better.
Got comments or do you know of a way to improve our interviewing process? Reach out on firstname.lastname@example.org.