Our philosophy when it comes to hiring software engineers at Typito and how the process has evolved over time.
Hiring is one of the tasks in a Startup whose return on time invested is as random as having a go at one of those roulette wheels in a casino. You either get lucky with a great software engineer joining you out of the blue or you end up interviewing 50 candidates over 3 months and still not being able to fill up that critical position in your team. This could be why many companies choose not to hire an in-house team for development and IT processes, instead choosing to look for a versatile IT Services company for all their technology needs. While this works for companies that don't have IT as a core feature of the services/products offered, it might not be the case for companies (such as ours) that require in-house teams.
Working with hiring consultants and recruitment related startups would definitely help you put more resources at the task and gradually you will get a hang of what works and what doesn't work for hiring talent at your startup. You might find as well, that using something similar to this criminal background check in Arizona can help speed up the process as well so that you get the people that are better suited for the job you want them for.
Hiring in an Early Stage Startup can be tough. Photo by Charles ?? on Unsplash
While getting a good number of candidate leads for interviews is a challenge in itself (not very different from your customer acquisition process), I'd like to take this opportunity to throw some light on some of the lean practices that have helped us from the first call with candidate to offering / denying a position in the team?-?the phase I'd call as 'Candidate Onboarding and Interview Process'.
Let's deep dive into what has helped us in the Candidate Onboarding and Interview Process
Ground Rules first
Before getting started with interview process, I'd like to lay out some of the ground rules that we thought were important to acknowledge and follow for hiring at Typito. This would mostly be influenced by your startup's culture (here's a read on ours) and could vary from what we held as critical. Let me share what we laid out as ground rules before engaging with the candidate:
a) Respect their time: Most of us would have encountered that experience where the other person keeps you waiting for long hours?-?something that could've been avoided with better planning. We think that sort of obnoxious behavior comes from a place of entitlement or lack of empathy and we definitely don't want to be there. So we do our best to accommodate the candidate's already busy schedule in every way possible.
b) Care for them: There are two entities in the context of an interview?-?the candidate and the startup. Both these entities look forward to growing and getting better at what they're doing today when they look forward to engaging in a relationship. While this is important, I've seen that most companies don't care much about the candidate especially after they conclude that there's no fit. While this skewed one sided behavior might be a result of the demand and supply dynamics, we think it's not fair. We try our best to see how to genuinely help the candidate irrespective of whether they join us or not.
We believe helping candidates win (by joining us or otherwise) can go a long way. And in most cases, it's not that difficult to lend a helping hand.
c) Tell them everything they need to know: We tell our candidates everything that would help them take a decision. When did we start working on Typito, what sort of revenue do we make on a monthly basis, what are the challenges ahead, everything. We try our best not to paint too rosy a picture but do talk about what excites us?-?the promise that next few years hold for us at Typito. This way, it helps them understand what they are getting into and how they could contribute to the journey.
d) Let them express themselves: This is specific to our culture where we encourage engineers to come up with solutions for problems that are not spoon-fed completely with a water-proof product requirement document. We've realised that it helps our small and lean team to move faster when everyone in the team builds the confidence to own projects, features and releases end-to-end and this usually starts with enabling the team to express themselves.
Now that we've set the ground rules, let me take you through the different phases of the interview:
Initiation is the phase where you meet the candidate in person for a catchup (30-60 mins) or have a phone call (15-30 mins) with them to learn their story and narrate your journey to them. This conversation helps them understand where you are and slowly start building a picture of how they could help your startup achieve the goals. It also helps with the opposite?-?it helps you understand where the person is, in his / her career journey and imagine how an experience at your startup could help them in the future.
A day before the call, you could maybe ask the candidate to checkout your product and any other resources that you think would make the conversation easier. Here's a snapshot of a message I send out to candidates before we decide on a time to chat.
It helps to prep the candidate about your product / startup before having the chat.
Some of the discussion points during the call would be the tech stack, the challenges you've faced, what processes they like in the current company etc. It also helps to ask about their salary expectations?-?it gives the right feedback to the candidate that you are taking the conversation seriously. And in case you think the person is asking for a compensation which is way beyond your budget for the position, this is a good time to point it out and exit gracefully?-?no shame in doing the right thing :). At the end of this call, the candidate would mostly be certain about whether they want to take it forward or not. If they are up for it, we tell them about the Assignment stage that's going to be a preliminary filter for the competency we are looking for. More about it in the next section!
Assignment is a nice way to do two things: 1. it ensures that the candidate is ready to reciprocate the commitment you've shown to make this work 2. it also lets you test the person's understanding of technology in a way that matters to your startup (for us, we wanted to know if a candidate can code and deploy a simple web app all by themselves)
Our assignment was the brain-child of my co-founder Srijith and he called it the Polaroid Eye. It is a simple web app assignment that basically tested the candidate's proficiency in basic full-stack web development. We share the assignment link with the candidate and tell them that they can take as much time as they want to build it but we also push them to come up with a deadline for the assignment that they are comfortable with. This helps make the candidate own the assignment end-to-end as they are now responsible for shipping it out as per the deadline they suggested.
The assignment in our case is also drafted pretty loosely so that it requires the candidate to build it the way they deem fit?-?UI, UX, choice of database (if any) and everything. These tweaks in our assignment helps us to evaluate two things that we consider important to be a good fit at Typito: if a candidate can own and deliver as per their timelines and if he/she can confidently take smaller decisions independently while working on a big project. While we have taken the time to build all our assignments from scratch, it does not have to be this way for everyone. There are tons of APIs on the Internet that can be used to test a candidate's proficiency in full-stack web development. Additionally, integration platforms like those offered by Pipedream could help create custom testing environments. Now, I have to admit that checking out assignment submissions are fun! Check out some of the entries we got for Polaroid Eye :)
Here's the link to Polaroid Eye assignment template if it helps you draft your own assignment for candidates.
After reviewing the assignment, we decide whether the candidate has qualified to the next round of interviews. If not, we do inform the candidate about why we can't take it to the next round and try to provide feedback that the candidate could work on, to improve as a software engineer. Remember, this person took many hours from his/her busy schedule to complete the assignment, and they may have even researched into things like the Core Java Interview Questions and many other questions related to this role, all in preparation for this interview process. This is certainly something that deserves acknowledgment and feedback on the work.
If the assignment round is cleared, we conduct 3 face-to-face or telephonic rounds of technical interviews, two of them taken by senior engineers outside Typito and the last one by an engineer at Typito. The external interviews would mostly be of two types:
- Web development 101: The first interview tries to dig further into the decisions made by the candidate while doing the assignment and also tests the person's understanding of very basic concepts of web applications. Eg. how does an http request works or what is the difference between asynchronous and synchronous calls etc.
- Data structures & Algorithms (DSA): On completing the first interview successfully, the candidate is tested on his/her understanding of DSA. While this interview won't be as extensive as a Google or Amazon DSA round, we do try to evaluate how the candidate thinks about problem solving.
These external interviews take away the bias we'll usually have when hiring candidates and brings in a fresh perspective from outsiders.
One tip for conducting these external interviews would be to volunteer to interview for other startups and ask their engineers to interview your candidates. This is one area where early stage startups could definitely help each other.
After the external interviews, the candidate would talk to one of the engineers from our team. This would be more like a conversation but one that's certainly used to screen the candidate. This interview helps you understand if the candidate would be a culture fit and can communicate effectively with prospect team members. This is also a great opportunity for the candidate to ask questions in detail about our tech stack or decisions we've made on the engineering front.
If the candidate clears all the tests so far and if we feel 100% confident about giving a try with the candidate we usually offer a role after discussing compensation and other specifics. This conversation is headed by me at Typito and can be done by a founder who's heading the hiring function.
If the candidate doesn't clear all the interviews, we gather related feedback from the interviewers and then share it with the candidate either in a face-to-face catchup or a telephonic conversation. It also helps to share a written summary that they could go through later whenever they have time:
Here's a summary of feedback that we shared with a candidate who didn't make it after the interviews
To iterate again, here's a person who spent a decent amount of time going through your interview process and when you are saying no, it's important to also give them feedback so that they could work on it. If there are positives, call them out and help him/her with reinforcement about what's great and what needs to be improved as per your thoughts.
That would be it!
That would complete a comprehensive picture of our hiring process. While we are still experimenting with our interview process, we've got a lot of good feedback from candidates about how they enjoyed our hiring process, especially the Polaroid Eye assignment and how we take time to provide feedback to candidates who don't make it.
Your startup engineering hiring process would depend a lot on your requirements, your team culture and other factors. However I hope this process break-down of how we interview candidates at Typito would give you an additional perspective going forward. If there are interesting processes you follow at your startup on the hiring front, feel free to share them. Looking forward to learn from you!