If possible, it begins with a short (5-10) minute phone conversation to explain the process and answer any questions. If the person has a disability, we'll opt for IRC/XMPP/Email/Slack/whatever.
Our process is then:
We then evaluate the candidates objectively:
We make our hiring decision based off these metrics. Over time, we plan to add better metrics and cull the ones that aren't a better predictor of excellent hires.
We do not look at resumes, CVs, etc.
We do not whiteboard candidates. We do not fly anyone anywhere for a stressful in-person interview.
We have two steps in our process:
This really helps us determine how a candidate thinks through problems, how much they fit the position, and helps them put their best foot forward. It is enough work that we can tell who mailed it in, but not so much that candidates need to upend their whole schedule to accommodate us.
Each member of our team taking part in the interview process (typically everyone in our small team) conducts individual 15-20 minute interviews with the candidate, usually back-to-back. Each member of our team will evaluate the candidate on areas they are most capable of evaluating (some more technical than others)
My interviews will typically consist of walking through their code and asking questions, then we may walk through our code if it is relevant and they ask us questions. I am looking to tease out a candidate's current understanding of topics, potential and willingness to learn, and interest in our mission. What I don't do is code trivia or riddles and the such.
And if we need another interview, we will do it.
We try to optimize for capable candidates, not for ones with enough spare time to jump through circus hoops for us. The best candidates are not necessarily the ones most capable of taking on an arduous interview, and we think there are diminishing returns and enough uncertainty that we try to streamline the process whenever possible.
The most important part of our process is that we all fill out individual surveys after each contact point without consulting one another. We do this to insure we don't bias each other and get true wisdom of the crowds benefits. After everybody has filled out their surveys in private, we come together to have discussions about our candidates, fight for ones we liked, etc.
I'm pretty happy with our process so far.
This is a really great question and I've found a lot of inspiration in the answers below.
Our company has about 130 employees, so we have a lot of effort to make our process smooth and effective.
We are doing both direct contacts to potential candidates through LinkedIn and also listing our open positions on our website, social media and other platforms.
Our HR doing a great job finding new developers, but we also have recommendations from our fellow colleagues.
If it is possible, HR makes a short phone call to the candidate, asking a few general question (starting date, salary, current job etc.) and explaining our recruitment process.
At this point, candidate should receive a link to our online test for developers.
This questionnaire consist of general questions about software development, a few "what is this code doing" puzzle and some questions about the technologies we use.
If most of the answers were correct, we ask the candidate to join us for a personal interview which takes usually one hour.
This turn has two parts: one is HR-related and one is about topics related to software development. Beside the candidate, there are three participants: one colleague from HR, one developer and me, the team lead of devs.
In the first part, HR ask some questions about their previous projects and experiences and some of the "classical HR questions" and just in case we are ask the candidate about salary one more time in person.
In the second part, we ask some questions about software development and other skills (we are interested if the candidate would be a great mentor or lead developer as times passes).
At the end, we talk about company culture, teams, products etc.
Sometimes we use a second round of personal interview if we are not sure about the candidate's personality or if someone from the designated team would like to meet with the candidate. The second interview is way more casual than the first one, we usually just talk about general questions, our company and the possibilities within it.
After this we talk about the candidate and make a decision.
If the candidate turns out to be applicable, HR makes a phone call about the exact salary and other options. If the candidate accept our offer, we agree on starting date and deal is done: we have a new developer in team!
If we wouldn't like to work with the candidate, HR makes a phone call explaining why we decided so. We call or e-mail every rejected candidate.
I think this is an important step of recruiting new employees. We have a complete programme for new developers and it works perfectly because in their first week, they slowly walk through the many project and departments at our company.
We have some fellow developers who are mentoring others. This mentoring is mostly about general stuff around the office, like: "How can I print?", "How can I ask my days out?", "I have a problem, to whom can I go with it?" and so on.
We are using JIRA for recruiting which is connected to the online questionnaire system. We comment every question and decision. I just wanted to share this with you guys, because trust me, a ticket with every useful information about a candidate could be life saver when you are making a decision.
I really like to make interviews a casual, personal experience rather than asking questions about unsolvable problems. I'm going to interviews as well mostly by curiosity and to enhance our process, and I don't really like interviews when I feel myself embarrassed as a candidate. You should never bully the developer in front of you in any way, because he became stressed and will forget everything about his profession.
I know, this should be fundamental, but I've seen a lot interviewer holding this wrong.
That would be it. I really like our process because in the last two years, we only hired really talented and great developers who are fit the team and the company.
Thanks for the chance to share our process and my thoughts about the topic! I'm open to questions and further discussion as I browse your fantastic posts. :)
Here we go like this, after we get the candidate application:
CV analysis, not very strict, but some things are no-gos, like lack of care with the application
Short email asking availability, salary expectation and relocation possibilities (most applicants are foreign)
Short phone call with the product manager, to check cultural fit and basic communication skills
Deep technical interview (using hangouts or skype), with a bunch of Q&A and lots of talk, but no hands on. It servers to access the candidate level of understanding of the technology and how curious they are. Some matches or divergences in terms of values become clear at this point
Technical assignment. Git repo, 3-5 days to develop something according to the instructions. Unit tests, clear architecture and clean code are the most important points here
Remote pair programming session, following coder/breaker pattern or refactoring exercise. It's done on the terminal with tmux and vim through an AWS instance
Each step is proceed only if the candidate passed the previous one. Sometimes, people can get approved somewhere in the middle of the process, when the match becomes obvious.
Great question, Jess. I decided to write a blog post to provide a bit more detail, which you can find here: Update on Hiring: It's Still Hard
Here's the short version:
We source candidates through contributions to open-source projects we care about (e.g., code, activity on mailing lists, discussions on bug trackers, etc.,), networking (especially with professors), and submitted resumes.
If the hiring manager decides you might be a potential fit, they set up a 20-minute phone call to make sure you and the position are aligned at a high level. We discuss details of the position like job responsibilities, expectations regarding things like title & salary, and physical office location, then briefly talk through your resume.
We then go to a 30-minute technical phone screen, administered by one or two engineers in a similar role. In some cases, this involves writing code in a shared document.
Next up is the technical presentation. If you are local, you have the option to come in and do it in-person, but we always offer the remote option to make it easier to schedule. The presentation usually takes 30-45 minutes, including questions and discussion.
If the presentation goes well, we bring the candidate on-site for a half-day interview, including a group lunch with the team. The on-site interview is conducted by a series of teams, each asking a question they have practiced and honed in prior interviews.
If a candidate comes through all five steps and we still feel good about them, we can generally be confident that they are a good match.
Unfortunately we use the standard whiteboard interview technique. I've expressed my great displeasure with it but the culture is still very much focused on trial by fire.
Blogging actively has been an intense and rewarding process thus far, and I've taken this week to reflect on it!
We’re a place where coders share, stay up-to-date and grow their careers.
We strive for transparency and don't collect excess data.