Recruiting programmers is one of the key processes when running an online business. Ideally, you need people that are reliable, dedicated and excel at their technological domain. Is it possible to achieve?I'm the CTO at Apptension, creative software house that grew from 3 founders to a team of almost 50 people.I've skimmed hundreds of resumés, interviewed all of the developers who applied to work at my company and evaluated many test tasks.Even though there’s no cookie-cutter way of assessing whether someone is the perfect fit for your team, I believe there are some ways in which you can increase your chances of successful hire.In this article, I want to present my take on hiring web developers, which should be helpful for people responsible for technical recruitment in startups and small companies.
The first question you should ask yourself is not actually how to recruit the programmers, but rather whether you need to do it yourself.Holding a CTO position at a software house, I’ve worked with several startups. Being with them through the whole product development cycle or just to get off the ground without employing programmers right away, I know that hiring a trusted technical partner can save a lot of time and nerves for startups.There are companies, like these 25 startups, that achieved amazing success with outsourced development, but if you decided to start hiring the tech team on your own, this is a guide that might help you on the way.
It’s no secret that big companies have complex policies for interviewing and hiring new employers, Google even uses hiring committees to make sure the process is of the highest quality.The reality of startups, however, is that you are on your own when it comes to creating and maintaining the recruitment process. While daunting, this task is an amazing way to keep the pulse of what’s going on in your company.When we’re hiring IT professionals, the two things we really look for in candidates are:
The second factor works well for us because young programming minds are yet to be spoiled with nonchalance, hastiness and habits that we don’t necessarily want to nurture within our company. Juniors come with enthusiasm, little experience and a lot of bugs. Once they learn their ways, however, you have an option of having the best workers there are – dedicated and competent.
For the sake of this article we divided our recruitment process into 3 parts:
Let’s start from the very beginning… almost.First, you have to encourage people to apply for the positions you want to fill but this is a topic for yet another article. Imagine that your inbox is full of applications from various programmers. How can you effectively assess their self-proclaimed skills?One thing I do is to assess the overall layout of the application. If I’m looking for a frontend developer with a pixel-perfect attitude, seeing a poorly formatted application is a big red flag.
Another element which usually doesn’t work for me is an arbitrary scale system the candidate employs to score their skills. It really doesn’t tell me a lot when I see 3 out of 5 stars under HTML5 or even more vague preloader-like diagrams. It's tempting for a candidate to present their skills visually, but the truth is: for programming skills it is near impossible to evaluate them on a scale of, say one to ten.What’s more convincing for me is seeing these skills in practice, as a previous job experience or, in particular, completed projects listed in the resumé.Speaking of which, personal projects are the apple of recruiter's eyes. Little professional experience can be undone with such proof of real interest in a given technology and willingness to refine skills. URLs of the projects the candidate worked on also help building credibility.One telling factor is the list of technologies that are known by the candidate. You have to keep in mind that, when studying Computer Science, developers become familiar with many different programming languages and frameworks, only to eventually master the ones they choose to pursue. When I see a list that includes tens of different tech terms, it usually turns out that the candidate only knows OF them, without proper experience. It is a good indicator to see a shorter list of technologies from a common field.One, perhaps unlikely, element of an application I scan with attention is the “interests/hobbies” section. For our company culture it’s important to celebrate different passions of our employees, that’s why I’m not exactly thrilled when I see no trace of a personal touch within the application.
In my opinion, an interview is not the most effective way to assess technical skills when recruiting programmers. Of course, there are some questions, concerning the process, understanding different terms or following latest trends, that you can and should ask.At the end of the day, however, the pure technical command can be best evaluated by analyzing the code.So what are the interviews for? For me, it’s an excellent personality test, giving me insights into the work ethic of a candidate. At the end of the interview you should be pretty sure if he or she is a close cultural fit or not.Putting the stress factor aside, you should be able to determine if your candidate is an open and straightforward person, which is a good indicator for teamwork:
If not, they may need more hand-holding in their everyday work. When the applicants are not particularly experienced, it makes sense to ask how they learn about programming, what are the sources they read – this will let you know how and to what extent they raise their qualifications on their own.One of the questions I often ask, especially when interviewing young programmers is:
This is a good indicator as to what are the goals of this candidate:
When talking about past projects, you should inquire about issues and obstacles your candidate encountered and how they eventually tackled them. This shows you their approach to solving problems.All in all, the interview can help you decide how good of a fit this person is for the company. For technical assessment and the final piece of your quest for a perfect employee, check out the last part of the process – test task.
The way the test task works at Apptension is:
The task is suited to the position we’re trying to fill, it could be, for example, a simple game or web app feature.When it comes to the level of difficulty, however, we try to make it quite challenging for the candidate. We want to see what they do when they’re stuck, which is a good test for the inevitable programming obstacles they will come across at work. We nurture the ability to ask for help when the task is taking much longer than expected. It is also an opportunity to check how fast people learn.
The code itself is, of course, very telling, but one should also evaluate the process they follow, how they start tackling the task. The very outline of the project along with tool selection show their level of expertise.
Each part of the process of recruiting programmers is important but, at the end of the day, it is the overall picture that matters.It happens every so often that someone who did great at the interview didn’t manage to succeed at completing the practical task and it shouldn’t surprise you. It is, after all, not that difficult to prepare some answers for theoretical questions, especially when ready-made sets of interview questions for many companies are published online.One could say it’s also easy to fake the test task, for example, by using external help. In reality, we’ve never had such a case – even if someone did so-so in the interview and excelled at the test task, he managed to prove his skills at work later on.There is always an element of risk when hiring a person and technical recruitment is no different. Looking at both technical skills and personality allows you to have a better chance of getting a valuable programmer who will feel satisfied with the job.