Finding a qualified and experienced programmer who at the same time will fit into the company’s organizational culture is not easy. Although the requirements for each position in IT differ significantly, in this article, we will try to look for common and universal features that every software developer should have, regardless of the industry, size of the company and the project! Here’s what you should check before hiring any new person to work as a programmer.
1. Look for passion
Real passion is an asset in almost any profession, but in the case of programmers it seems to be indispensable. Ben Collins-Sussman divided developers into two groups: 80% and 20%. The first one, 80% of programmers, are people who, despite being able to program, are limited to coding at work. The remaining 20% are enthusiasts who constantly broaden and improve their knowledge and skills, create projects in the after-hours, follow technology, go to industry meetings, etc. It’s this group that, according to Collins-Sussman , is able to really influence and develop the IT market. Looking at these proportions, it is easy to draw the conclusion that finding a good developer and a real enthusiast at the same time becomes a daunting task. However, this trend is changing and an increasing number of people shows real interest in coding. It is also worth noting that apart from real ‘geek’ programming (or the mentioned 20%) there are people who may not devote most of their free time to deepen their knowledge but regularly follow the latest trends and sometimes create something after hours.
And how do you know if a person is interested in programming? There are many ways to do it and below we present the most popular ones:
- Check whether s/he actively keeps accounts on any kind of discussion forums or groups in social media devoted to programming, or any other places primarily intended for programmers i.e. GitHub and Stack Overflow.
- Ask if s/he takes part in various kinds of IT meetings, such as conferences, trainings, meetups or hackathons. Find out if these trips took place out of his/her own initiative or as a duty.
- Ask about their favourite book on programming and to shortly review and recommend the book.
- Ask what s/he thinks the biggest breakthrough in technology in the last quarter was or what trends s/he would choose for the upcoming year.
- More and more programmers run their own blogs or video-blogs/vlogs. So, it is worth asking whether s/he is engaged in such a project or maybe creates such a content occasionally in other places.
- Ask about his/her plans for the future. The questions may seem trivial, but it will allow you to make sure whether you are dealing with an ambitious person who is passionate about the job and is keen to develop and broaden the horizons constantly.
2. Review profiles on programming services
If the candidate meets the first condition and proves passionate about coding, s/he certainly has the above-mentioned accounts on sites strictly intended for programmers. An account on the GitHub platform is actually a “must have” for any software developer – it is a platform for uploading and exhibiting projects which any potential employee should do even before starting the first job in IT. The user profile should have links to projects, websites or blogs s/he has created to help you verify the skills. The account itself may also prove a source of information about the number of people observing and following the profile – if the number is high then you are certainly dealing with an experienced and highly valued IT specialist.
Another popular service in the industry is Stack Overflow – an international forum that attracts many IT specialists from all around the world, who discuss the topics related to software development. Developers use it mainly to find solutions to the problems they face in their daily work. Stack Overflow is a valuable source of information about a potential candidate. In addition to general information on the profile, such as location, personal site or blog link, users can also create personal sections for posting descriptions and links to projects created by them. By browsing the channel of a given user, you gain access to questions and answers written/posted by them. This way you can learn which technologies and languages your candidate is mainly interested in and pre-check their suitability for the position. The answers found on the profile are useful and informative hints about the candidate. In this way you will learn, for example, the manner the candidate communicates on the web– together with the technical and interpersonal skills.
3. Check problem-solving skills
According to the HackerRank report: “2018 Developer Skills Report”, the most demanded skill by employers, which was indicated by almost 95% of them, is the ability to solve problems. Naturally the knowledge of new technologies and programming languages is essential, but another, also important part of a software developer’s work is to show a good deal of understanding concerning the problems that may occur as well as the ability to handle the problem and draw conclusions from it. A good developer knows that an obstacle should be broken down into smaller tasks which will allow to solve as many (smaller) problems as possible.
And how to check if a person can cope with the problems encountered?
- During the recruitment interview, ask about the most difficult problem they have had to deal with so far. Find out how they solved it, what lesson was learnt from it and the conclusions that were drawn.
- A great way to test problem-solving skills is to use gamification mechanism in the recruitment process. This can be organized in various ways, for example by preparing a game, which involves solving all kinds of programming tasks or one that checks logical thinking. Developers like both games and puzzles, as well as competitions, which is proved by the growing popularity of websites such as CodeWars, Codingame and CodeCombat. Undoubtedly such a method will arouse interest.
- Another interesting suggestion may be the application of the pair programming method. This technique – as the name itself suggests – involves joint programming of two programmers who use one computer. While one of them, called “the driver”, writes the code, the second programmer (“the navigator”) observers the partner’s work, asks questions and/or proposes other solutions. The result is higher quality software they have created. This method in the recruitment process focuses on solving an assigned task on a computer and to work together with an experienced programmer. The pair programming method is a very effective way to verify the skills of a potential employee and the manner of dealing with problems.
4. Assess communicativness
Remember that a good programmer is not only a person who is able to write good software and to cope with difficulties. A programmer becomes primarily a team member who needs to communicate well with the co-workers. It is often said that programmers have limited interpersonal skills but this theory may not be necessarily true. However, before making a decision about employing a candidate, it is worth considering whether the person will be able to work well and fit in with the rest of the team. Introversion, unwillingness to interact and not admitting to one’s mistakes can significantly hinder everyday work. The easiest way to test whether a candidate is communicative enough is during a job interview. It would also be a valuable idea to invite the candidate for a trial in order to check how they are getting along with the other team members.
Finding a good programmer is not an easy task. When deciding who to employ, remember that you primarily employ a person – not a code writing machine. The knowledge of specific technologies, languages, frameworks or tools can be quickly mastered . Still, it is much more difficult to cooperate with a person who fits neither into the team nor the company’s organizational culture.