Five Things Learned from Interviewing 300 Full-Stack Developers
Over our 10-year history we have interviewed literally hundreds of candidates for full-stack positions. This experience has taught us a number of important lessons, some straightforward and others a bit surprising.
Table of Contents
Finding the right person to fill a job opening is challenging, especially when it’s a core position at your company. For Salsita, that core position is full-stack developer, which comprises 50% of our staff.
Over our 10-year history we have interviewed literally hundreds of candidates for full-stack positions. This experience has taught us a number of important lessons, some straightforward and others a bit surprising.
Throughout the years, our interview process has been shaped and worked into a concise method for identifying the best developers. The interview process is divided into several phases to test a candidate’s theoretical and practical knowledge, their English (we're based in Prague and most of our staff are not native speakers), and how they would fit in with Salsita's company culture.
The first phase of the interview process is an off-site Google Hangouts call. If the candidate is successful, they are invited to the office to meet us in person. Next are the face-to-face interviews. These last 3-4 hours and the candidate meets individually with a full-stack developer, our HR manager, CTO, and CEO. Finally, the interviewers discuss the candidate and, if they agree, that candidate is given a job offer within a week.
Lesson #1: Ignore the Candidate's Experience
Okay, this is something of an exaggeration. But in the early days of Salsita, we naturally looked for developers who had experience with JavaScript and other web technologies but quickly realized that this might not yield the best hires.
We have therefore instituted an intensive training program for JavaScript and our other core technologies (React, Angular, React Native, Node.js). We think this gives us the best of both worlds: elite developers with great technical abilities who are quickly up-to-speed with the latest web technologies. Apart from anything else, the space is changing so fast that some training is needed anyway for virtually any new hire.
"I'm a recovering C++ developer, and I was frankly a bit underwhelmed by the programming chops of a lot of 'web development ninjas' and 'JavaScript rock stars' that we were interviewing. Finally, I decided I'd just start hiring the same developers as in the past, those with a really strong Computer Science background, regardless of which technologies they have experience with. It's a lot easier to teach a great developer a new technology than to teach someone to be a great developer." - Matthew Gertner, Salsita CEO
Lesson #2: Screening Calls
In the early days of the company, candidates were invited for a face-to-face interview right away. Since it seemed rude to start the interview with a test, the interviewer would chat with them for a while beforehand. As a result, they could spend a lot of time with candidates who might not be close to meeting the hiring bar in terms of programming skills.
"I used to talk to candidates for 45 minutes, then realize 30 seconds into my test that they hadn't the faintest clue how to code," explains Matthew. "But it's kind of awkward to start the interview with a test and potentially send someone home two minutes after they step through the door."
As a result, we put into place an off-site interview to screen candidates before they get invited to our office. The call typically lasts an hour and we have found it to be the most time-efficient way of preselecting promising devs.
The first few minutes are casual, which helps build trust and put the candidate at ease. Once the introductions are finished, the technical part begins. The candidate can expect to answer algorithm-based questions and write short bits of code. The interviewer asks detailed questions about code complexity, efficiency, testing code, and how to restructure it to accommodate new requirements.
“We value our time and our candidates’ time,” said Salsita CTO Roman Kašpar. “It doesn’t make sense to invite someone blindly without verifying that it could be a quality interview.” Face-to-face interviews also take a lot of time; four people are involved, so finding and booking a single block of time is its own challenge.
Lesson #3: Test Algorithms and Software Architecture
Some web agencies might buy into the conventional wisdom that front-end development is somehow easier than other types of software development. We disagree.
“Modern web development is no different from any kind of other SW development, so you need people with a solid Computer Science background if you want a truly professional result,” said Matthew.
Our testing has gone through several iterations. Each interviewer has their own method of testing the candidate and conducting the interview. Here are a few things the candidate should expect to know: Fermi calculations, easy and challenging algorithmic questions, system design questions, data structures, and more.
“The interview tasks should reflect daily challenges,” said Salsita Full-Stack Developer Tomy Novella. “We don’t discourage the use of external sources, but knowledge of the underlying principles is required.”
The interviewers want to see the candidate’s thinking process and how they handle challenges. They also want to see the candidate’s judgement, critical thinking and ability to write correct code in person. After this, there will be extensive discussions about the code and its reasoning.
The best candidates are the ones that get excited during the interview and even appreciate it if they learn something new along the way. “They need to show off their excellence,” said Roman. “We are there to guide them through their great ideas.”
Lesson #4: CEO Participation
Salsita CEO Matthew Gertner has a Computer Science background and interviews every candidate as part of the hiring process. Candidates can expect both a high-level technical conversation with him as well as a casual conversation about Salsita’s culture.
“Matthew is involved in the process to have direct touch with employees,” said Salsita HR Manager Marketa Tuláčková. In the early days of hiring at Salsita, he was the only person involved in the process.
Matthew likes to start the interview by answering any questions the candidate may have. He then asks for a general overview, and discusses their past projects, technical details, and how they’ve addressed their biggest challenges. He also gives them a programming test focused on practical decisions about software architecture.
If the candidate makes the grade, Matthew closes the interview by explaining with a founder's passion what makes the company a great place for developers to work. This and the fact that the CEO is a seasoned programmer in his own right seem to make a big impact on candidates.
“We have a very high rate of acceptance when we make someone an offer,” said Matthew. “It’s a great achievement considering that the kind of people we are looking for probably have multiple offers, so it appears that the approach works.”
Lesson #5: The Interview Itself Can Be a Hiring Tool
Obviously, Matthew can't take all the credit for the high proportion of successful candidates who accept Salsita's offer. One of the most frequently cited reasons for joining Salsita is the interview process itself.
Too many web agencies glance at a developer's resume, check that it contains the requisite buzzwords and wave the candidate through. Or they give the candidate homework but don’t have enough face-to-face interaction to give them a clear idea of what makes the company tick.
At Salsita our strength is that we are a software agency created by developers for developers. Nearly everyone here, from the CEO down, has an engineering degree (the vast majority in Computer Science). Exposing candidates to several members of the team, including the CEO and CTO, makes it clear to them that they are going to be working with a bunch of really smart people and have ample opportunities to learn new things.
“I noticed it was significantly more thorough, which I do appreciate. I liked the fact that they bothered to test my knowledge, so I'd know what to expect in Salsita. With the others, I had no idea if I was really qualified or not since I didn't get any indication of what their technical expectations were from the interviews.” - Tom Morris, Salsita Full-Stack Developer
By the Numbers
Since 2016, 310 people have interviewed to work as a FS Developer at Salsita.
- 49% passed the Hangouts call
- 17% passed the F2F interviews
- 12% were hired
These hiring methods may not work perfectly for you, but they have helped us build a team that we would happily pit against the world's best web agencies. “You can tell the great ones in the interview right away,” said Roman. “They leave you with a ‘wow, they were awesome’ feeling.”
Our recruitment team is committed to preserving Salsita's status as a top development and design agency. If you’re interested in applying as a developer, or another position, check out our open jobs.