Our team is blown away by the level of talent that applied to our 2021 internship programs. I read every official application (over 500!) and looked at countless projects. Our initial intention was to be open to community members that saw the post on our jobs page, applicants that I spoke with at college career fairs, and people that our teammates referred. However, our application link was quickly shared, and we had an avalanche of talented and passionate candidates applying.
I'm writing this blog post in the hopes that it gives you a peek into the other side of the interview process for those coveted internship positions.
Step 1: Our first cut involved narrowing down these immensely talented applicants to a manageable amount and invite them to our code challenge - some of the applicants were extra clever and caught that our jobs page had the link. I sent out 75 invites, and we received 46 responses within the four-day deadline. We asked our candidates to attempt our code challenge within an hour and use whichever language they felt most comfortable in. Sure we look to see if they have an elegant solution, but we also have an internal tool to see when and how each line of code is written and how long someone spent on the challenge.
Step 2: I went deeper into each candidate's solution and resume. I made another cut and then assigned 5-7 candidates to each engineer on our team who opted to be a mentor. Every mentor took an even deeper dive into the code challenge and projects and selected the applicants who had the cleanest code on their list. Our mentors ended up with 20 candidates who went on to our next step, a 20-minute conversation with me.
Tip 1: When speaking with a company's recruiter, it's essential to know (and sincerely agree with) that company's values, understand what they do, and articulate precisely what you are looking for, such as what you hope to learn from joining the team.
Step 3: Each candidate was just as impressive "in person" as they are on paper! This made the next step even more difficult as we could only pass 2-3 people into the live programming interview with their potential mentor.
Tip 2: This is where the projects you share seriously begin to matter. If someone is applying for the product team, but they don't have any projects that showcase any frontend skills, while another just as promising candidate does, the person who demonstrates that they have already begun nurturing that skillset will usually get the interview. Additionally, it's a very positive signal to have at least one project that you love and can't help but nerd out on when asked about it. Does creating yet another Twitter clone really do this for you? If the answer is no, don't do it.
Step 4: The next interview, a live tech screen, can be a bit nerve-wracking for even the most veteran engineer. We try our best to put your mind at ease and help you make your skills shine during this hour. Every engineer has been in your position before, and I hope this fact helps; we are genuinely rooting for you to succeed! What we're looking for in this interview from new talent is skills, yes, but more importantly, we're interested in how you tackle a difficult task. For years I've been fond of saying, "It's perfectly fine to cry, but cry and keep trying. Don't give up!" (no one cried during the interviews)
Background Info: The next step in our intern interview process is the most fun, in my opinion. I affectionately dubbed it "The Babe Ruth." Before I even looked at an application, I interviewed our two current engineering interns. Two things that stood out were the fact that they were community members before joining us and had strong opinions on how they can improve other Repliters' experience. They pitched Amjad with their ideas and were hired because of their initial plans and their promising skills. So, we did our best to recreate this process. However, I have to share that I was a little torn.
Tip 3: I subscribe to r/cscareers and a few recruiting subreddits where candidates share their horror stories. It is a fact that there are a few bad actor companies out there that use the interview process for free work from talented programmers. I strongly encourage you to feel comfortable declining any code challenge, interview, or job where your gut tells you something is wrong. I know that we are not one of those companies, but how do you convey that fact to a potential teammate when they don't know you and the team well yet? After some reflection, I decided to keep our Babe Ruth step and ban our final interview candidates from sharing their idea with us until we connected for the presentation, which of course, we don't record. After all, thoughts are a dime a dozen. People that put in the effort and can execute on their ideas are pure gold!
Step 5: This brings us to our final step in our process. The candidate's potential mentor, another engineer, and I connected with each remaining candidate and had a fun hour-long conversation exploring their idea and gave them constructive feedback and tips. We currently don't have any official project managers, so everyone on our team quickly becomes comfortable with PMing. While the mentor will help train their mentee in this, our goal was to give each candidate that made it to the final interview a chance to demonstrate this natural talent or existing skill. Each of us scored them independently and made an offer to the highest-scoring person.
If you are gearing up for interviews, I hope that this behind-the-scenes post gave you some insight into what happens on the other side of the interview table.
p.s. Want to intern at Replit? Keep an eye on our careers page in the summer for an update!