Here at Retain, we recognize that interviewing can feel like an opaque process. In keeping with our values of honesty and transparency, we wanted to share a quick guide to our interview process and how you can best prepare for it.
Our Interview Promise to You
- We are going to be transparent about our interview process and timeline. Most or all of your conversations will be with fellow engineers or founders at the company.
- We will move fast. Our goal is to complete the interview process within two weeks, or even faster if you can make it work with your schedule.
- You will have many opportunities to learn about Retain and ask us questions, and we’ll give you honest, direct answers.
Our Interview Process
This process describes our standard engineering workflow – if you’re interviewing for a more specialized role, the specific interviews may be a little different.
Step 1 – Background Discussion (30 – 60 minutes)
Non-technical interview with an engineer or engineering leader to help us understand how you got to where you are today. Be prepared to talk about some of your recent projects, and what role you played. This will also be a great opportunity for you to ask us questions. Some things we may ask:
- Tell us about your last role – what were you responsible for? what did you ship? What accomplishment are you proudest of?
- What was a strength and an area for improvement identified by your last manager?
Step 2 – Coding Session (60 minutes)
Coding session guided by Retain engineers, working on a technical challenge in the IDE and language of your choice.
Step 3 – Virtual Onsite
- Coding (60 minutes): Another coding session, typically covering a real problem we are solving at Retain.
- System Design (60 minutes): System design covering a real problem we are solving at Retain.
Step 4 – Wrap Up (60 minutes): Discussion with Retain founders and next steps
Preparing for the Interview
You will solve a coding exercise while sharing your screen. You will have complete access to whatever tools you want – feel free to Google, Bing, or use Stack Overflow – whatever most resembles your ideal workflow.
How to Prepare
- Make sure to have an IDE of your choice ready to use.
- Make sure you know how to load and manipulate files and arrays.
What we Look For
- Feedback: we look for constructive responses to interviewer feedback.
- Dealing with uncertainty: we look for ability to deal with underspecified requirements by asking questions and articulating assumptions.
- Communication: we expect you to walk us through your thought process and reasoning, and defend your decisions along the way.
- Technical strength: we look for idiomatic language use, readable code, and motivated tradeoffs between performance, elegance, and challenge completion.
- Completion: our challenges are designed to be completed in the allocated time.
- Given an input file of JSON objects containing a duration field and given an algorithm for grouping those objects, calculate the total duration of each group.
- Using ASCII characters, print a specific “shape” to standard output.
- Given an API returning Retain data for a sample user, design a UI to display that data back for the user (front-end roles).
You will be asked to design a system that performs a specific task. The prompt will be open-ended, so remember to effectively articulate your assumptions and motivate your decisions. For more senior roles, such as Data Engineering, we’ll expect more familiarity with specific tools and technologies, but we’ll make sure to guide you along.
What we Look For
- Ability to describe a solution commensurate with the scale of the problem, and ability to explain how it would scale.
- See bullet points for “Coding” section above.
- Design a system that lets users authenticate into their Google email and get insights into their most frequently interacted-with counterparts; describe this system as MVP (“will anyone even use this thing?”), and then if you had 1,000,000 active monthly users.
We hope you found this guide helpful. If you have any feedback, let us know. Good luck, and most importantly, have fun!