SingleStore's frontend-focused development team works on all sorts of interesting challenges to simplify the User Experience of our product. In this blog post, we talk about how we hire engineers for this team.
SingleStore’s Hiring Process for Frontend-Focused Engineers
We're actively hiring frontend-focused software engineers, and I thought it'd be a good idea to write about our interview process. Not only will this be helpful for potential candidates, but I also think it'll be useful for me to get some feedback on the process from folks externally.
Disclaimer: some parts of this process are standardized at SingleStore, whereas other parts are specific to my team. In this article, I talk about both so you'll see me use both the "I" prefix and the "we" prefix. Finally, all of this is subject to change any moment since we iterate frequently on our hiring processes.
I'll start with a bit of context about our technology stack, what we work on and how we work together.
We hire frontend-focused engineers across a couple of different teams. This blog post is focused on our "Singlestore Helios Team'' which works on the control plane UI for SingleStore's cloud service.
- This UI includes various components such as a SQL IDE, a Query Plan visualizer, an activity monitoring dashboard as well as other standard administrative features for managing users and clusters.
- Our frontend is not just a view layer. We're building a web application that does a lot of its work on the client. Because of this, the frontend is actually quite complex and has a lot of logic.
We try to foster a culture of "full-stack engineering". We hire both frontend-focused engineers and backend-focused engineers, but everyone is encouraged to work across the two stacks.
Our frontend technology stack is React/TypeScript. Our backend is written in Go and our frontend talks to the backend via GraphQL. Our frontend also uses SQL over WebSockets to fetch a lot of the information that it displays in the UI.
In terms of team process, we're very distributed and work from many different time zones. This means that we prefer to hire people with strong written communication skills. This is something that our interview process does not test for at the moment, but we'd like to introduce some day.
Just as importantly, I also don't personally care about location as long as employees reside in one of the countries where we can hire employees (Portugal, US, UK). However, we may sometimes try to balance the seniority of team members across time zones.
Next, I'll give an overview of the entire interview process following an application to one of our open positions through our careers page.
Application Review
The first step of the interview process is the application review by the hiring manager. I manually review every single resume that is submitted to our recruiting platform. Moreover, I make sure that anyone who is not a fit or does not meet requirements gets a rejection email from me. This is really important since I consider "ghosting" to be a very poor practice from most tech companies. Moreover, as the hiring manager, I think it's really important to be looking at all the applications for the team.
In this stage, I'm looking for:
Whether the candidate's experience matches the requirements listed in the position or not. Sometimes, we're looking for more experienced candidates, whereas other times we're looking for less experienced candidates. This will be clear in the job description and what I do is verify that the requirements are met.
Any relevant experience to what we do at SingleStore. If we're looking for experienced candidates, "relevant" experience could mean something like having worked on an Interactive Development Environment (IDE) before. This type of experience could mean that I "ignore" one of the listed job requirements that is not met.
I prefer reviewing resumes which are short and to the point. We accept cover letters and read them. I don't have a strong preference for or against cover letters, and it is up to the candidate if they want to submit one or not.
First Stage
We conduct 2 interviews with all candidates that pass through the application review. Each interview is a one-hour technical exercise. We use Google Meet to conduct all of our interviews.
- The first interview is a technical programming exercise focused on exploring existing codebases and making improvements to them.
- The second interview is a technical programming exercise focused on building UIs with React and JavaScript.
On both calls, we pair candidates with one or two engineers, and we don't just evaluate their technical skills but also their communication skills. Certain things we look for are the ability to ask good questions and discuss trade offs. We try to schedule both interviews at once to minimize back and forths.
If these two phone interviews are successful, we'll advance them to the final round.
Final Stage
The final round of interviews is made up of four interviews. We try to schedule them in a single day or across two days depending on the candidate's preference.
An interview on UI and User Experience. In this interview, we try to dig into the candidate's experience of building user interfaces and how they think about UI/UX.
A technical programming exercise focused on dealing with network requests in a client-side application. The programming language used should be JavaScript, but pseudocode is fine here.
In this interview, we're looking at how well candidates understand the JavaScript execution model and event loop.
A technical programming exercise focused on using data structures to solve a specific problem. The programming language used should be JavaScript, but pseudocode is fine too.
- In this interview, we're looking at how well candidates can translate an algorithm into implementation.
A conversation with the hiring manager with two parts:
- Talk about past experience, career goals and team culture.
- The hiring manager explains how the team works, what our roadmap looks like and what our technical challenges are. The candidate is free to ask any questions here about the team, our software development process, the product or the company.
Exceptions
- A percentage of candidates are asked to do a take-home exercise to test fundamental web development skills (HTML, CSS and JavaScript). We mainly do this for our Summer internship positions or for candidates who have less listed experience with these technologies. This step would not replace any of the steps above.
- We may hold a "Recruiter Phone Screen" or "Hiring Manager Screen" before the "First Stage". This changes depending on how many candidates we have in the pipeline.
- Sometimes an extra interview might be needed if we didn't get any information out of our interview loop. We avoid this as much as possible.
Roundtable and Culture Alignment
After all of the steps above, everyone who was involved in the interview process will meet for 30 minutes for a roundtable discussion. This discussion is obviously very sensitive and it is where we decide whether to move forward with the candidate or not.
In our internal applicant tracking system, interviewers will give candidates a "Pass" or a "Rejection". However, the discussion at the roundtable is much more nuanced than that (i.e., a candidate doesn't have to get a "Pass" from all the interviewers). Everyone is expected to talk openly and respectfully about the candidate's performance, and questions about the candidate's performance in a specific interview are welcome from anyone who wasn't a part of that interview.
One of the most important topics discussed in this meeting is cultural alignment. Everyone involved in the interview process is responsible for looking for any information that tells us whether the candidate would be someone we can work with on a daily basis or not. This is something that we think about throughout all the interviews and the hiring manager interview touches a bit more on this.
Wrap-up
We want candidates to have the best experience possible and that means that our process needs to be somewhat fast. This can be difficult to achieve as we need to avoid hiring people who are not a good fit for us. So, this means that our interviews need to give us a lot of information about the candidates. We're constantly iterating on our interviews, and we occasionally meet internally to review how valuable they are and make small adjustments to them when necessary.
We also have some larger plans to rethink our interview loop and hope to implement those before the end of 2021. Our goal with these plans is to unify our interviews under a common theme and modernize some of them in the process.
We're also always looking for feedback on our interview process and if you have any, we'd like to hear it. In fact, we ask all of our candidates for feedback and use this feedback to improve our process.
Finally, if you're interested in applying to this or any other position, please check out our Jobs page.