Hiring software development talent challenge
Hiring software development talent is a multi-faceted skill that lies at the crossroads of social networking, technical acumen and process management. Anyone who has ever had hiring responsibility understands the extent and depth of the hiring challenge. Particularly challenging is the fact that qualities of exceptional software engineering candidates are extremely difficult to evaluate. The techniques described below can serve as a valuable core process for finding and hiring software developers that are the best in the industry.
It seems that an ideal interview does not exist. Firstly, such standard prefixes as "junior-middle-senior-lead" are not universal, as each company has its own ratings and metrics and there is too much variety of necessary skills. Moreover, recruitment metrics also change with the growth of the company. It might be more profitable to hire those who have “burning eyes” at the early stage of the company’s growth. Then, in the years of stability and IPO, such engineers are too dangerous and they are burdened by the process-oriented flows of mature companies.
Secondly, copying interviews of large companies is popular, but not the best practice. It is a common knowledge that serious companies invent lists of subjective rules for hiring, which in fact look like a joke about "losers we do not need." The candidate might not remember by heart the random definition from Wikipedia or needs more time to solve the task at his own pace. The key is to explore a candidate’s ability to innovate and think creatively; determine if he’s a team player; his ability to take constructive feedback and investigate someone’s moral fiber.
Likewise, the programming skills of the candidate could be evaluated in a month of trial period, which seems to be everywhere. Top software development engineers don’t waste time committing to memory language specifications and documentation. Learning a new language, technology, or design pattern is a relatively trivial exercise for a strong developer – one that wouldn’t take too long. Unfortunately, in reality, few people are so honest with themselves to say directly: “Well, we are doing an online store, you don’t need a lot of intelligence for this.” Still, they are all sick with unique corporate values and "they select only the best."
On the other hand, there are startups for which it is vital that you do things and fit into the team and they do not care about the burdensome selection process. For them, an interview with a cup of coffee in the park is an awesomely effective process that weeds out those who are not like-minded.
Where to look for people. Searching ourselves via in-house hiring specialists might be a good option. In such a case, an honest text of the vacancy trying to avoid cliches about "coffee-cookies-market leaders", could be placed on one of the popular sites and wait. It attracts precisely those who are needed – good candidates themselves attracted most likely by the main thing, which is honesty. Likewise, you could offer cash bonuses to your employees for the referrals provided. Either someone in your company, or someone you know, knows them and recommends them highly. The beauty of these resources is that they supply engineering candidates who you have vetted, in one way or another, before even interviewing them. Finally, you could turn to outsourcing recruiters. Those normally work according to one pattern or script and might not study the market or candidate profiles and thus, are not efficient.
We, at Webdevelop Pro, believe that a systematic approach to properly identifying potentially qualified candidates can streamline and increase the efficiency of the entire recruiting process significantly and, therefore, have a contact base of approximately 3 thousand engineers from East Europe.
Three candidate qualities to look at. The purpose of any interview is to make the binary decision “yes” or “no” and there are three key qualities in the candidate that need to be looked at.
1. Wisdom (intelligence). Do not confuse with the knowledge, IQ level or diplomas. The mind is the ability to reason, ask questions, analyze arguments, see the pros and cons of decisions, processes, frameworks. Wisdom can be replaced by experience, but not always.
2. Ability to get things done. The younger the project, the more people who know how to download a startup on their knees in a week is needed. For mature and stable projects, on the contrary: more people think about logic, the better. In any case, you need to know the balance. Determining the ability to do things is simple - by the directness of the answers to the questions asked and the notorious "burning eyes". The ability to do things, though, has an unpleasant feature: it decreases with the growth of wisdom.
3. Compatibility with the team. IT is a team game, and those who prefer to work on their own are not compalible. Sometimes, when hiring engineers, there is too much emphasis on the candidate’s technical skills – and not enough on their soft, personal skills. While those abilities are crucial, the best-fit for a modern development team goes far beyond the nuances of a specific programming language or technology.Therefore, wise team leaders can refuse good candidates who, unfortunately, will not agree with the team.
How to avoid your own bias. Any interview could be called a “battle” between two parties, who are in obviously unequal positions. The company side owns all the information and is ready for everything, the candidate is like a student who came to the exam without a clue on what subject. Smart interviewers strive to be aware of their own bias and try to avoid it. If you ask a candidate a question that has a definite answer and you know this answer, this is a bad question. Instead of asking the question “does he know”, the correct formulation is “to understand whether the candidate can.” Next, both the interviewer and the candidate analyze the options together, which in turn, helps the interviewer to evaluate the three qualities above.
The structure of a good technical interview. The classic hiring process is straightforward. It starts from the screening for overall adequacy and relevance of the vacancy followed by the technical interview and conversation about the leadership principles and sociability, and ending with an offer. For the quality evaluation, do not try to push all stages into an exhausting interview marathon. It is better to stage the process into several conversations.
Step one: the interviewer (product owner, technical lead or other company representative according to the scrum) explains about the company, product, tasks and plans, the team and processes, describes the technical stack. This step is concluded by explaining why there is a need for a new person and what this person will be doing.
Throughout the screening process, aim to be as honest as possible about your company culture, compensation, hours, location, goals, and expectations. This conversation is a chance for both sides to evaluate whether they’re a good fit for one another. Never misrepresent what your company is really like. Remember that interviews are a two-way street, and they’re trying to learn as much about you as you are about them.
Step two: the candidate tells about himself. This step is predominantly for checking primary soft skills. While evaluating these “soft” criteria is no easy task, doing so is essential in one’s quest to hire the very best. A common resulting pitfall is to instead focus too heavily on technical minutia, rather than evaluating the candidate’s ability to problem solve, to think creatively, and to work compatibly with the rest of the team. Getting a realistic feel for a candidate’s personality and temperament is crucial to a successful hire. Throughout the interview, look for opportunities to provide the candidate with constructive feedback. Observe carefully the reaction that this elicits. Is the feedback appreciated or does the candidate appear to become at all defensive?
Step Three: evaluating technical acumen or small talk about life and technology. This is the place where the interview begins. It is worth recalling that we are not hiring a Wall Street salesman. Before us is merely an engineer. It is always good to start with simple technical questions, set up a dialogue, engage in non-technical “chit chat” for the first minutes of an interview as a means of obtaining insight into the candidate’s personality.
Step Four: technical tasks. When the contact is established, you can give tasks. Beware of the candidate’s and your own time and, therefore, choose tasks wisely. For example, you could present the candidate with a simplified version of a task that you yourself recently solved. It will help the candidate to understand what the team is doing, and the team sees how much the candidate is interested. Another good task could be to inquire on how the candidate would design a product similar to ours. Or, likewise, you could make a code review. The candidate sees the real project, and the interviewer is able to read, write, discuss the code with the candidate.
Another extremely valuable technique for evaluating technical acumen is to ask the candidate to provide a list of open source projects that they have authored, or at least contributed to, on sites such as GitHub. The interviewer can then come to the interview having reviewed their code, prepared to ask them about specific design decisions, coding styles, patterns employed, and so on. Such a discussion can be substantially more valuable than simply quizzing the candidate on the technical minutia of a language.
Step Five: home task. This should be proposed as an offer, without limiting the time and obligation of its implementation. Having code on GitHub replaces the test task by 100%. It is convenient both for the interviewer, and the candidate, the interviewer could evaluate aspects of solutions provided by various candidates with particularly clever or elegant approaches to the same task and the candidate works with the real business cases and not rebuses. That said, having code on GitHub could be a valuable additional component of your interview process.
That said, it is clear that an effective determination of technical proficiency goes far beyond the nuances of a specific programming language or technology. While these technical details should certainly not be ignored, they typically are not the only important element of the evaluation process. It is the candidate’s fundamental technical strength and understanding, creative thinking, and problem solving that are critical to evaluate.
Step six: questions from the candidate. There’s still one pivotal question that remains to be answered: to what extent is the candidate specifically interested in your available position and in working for your company? The answer to this is of paramount importance in ensuring a successful hire. One-sided relationships work no better in business than they do in any other aspect of our lives. A healthy interview is when not only the company evaluates the candidate, but also the candidate decides whether he wants to work in it. A candidate who is genuinely interested will likely be asking questions throughout the interview process and at the end of the interview process.
When used collectively, these 6 recruiting techniques yield a highly effective screening process with a proven track record of success for hiring salaried or freelance engineering talent, as proven by Webdevelop Pro.
It is important to remember that effective hiring is not a destination, it’s a journey. We at Webdevelop Pro continually re-evaluate our hiring process. We execute the recruitment process from end-to-end on our clients’ behalf. We implement a meticulous hiring strategy which guarantees your development team is built around highly-educated, experienced engineers who put everything into the software that they build. If you’d like to learn about how Webdevelop Pro could help your business, we’d love to have that conversation.
The Clean Architecture Interpretation
I would like to tell you how we started to use the practice of code organization in our projects, what we reached and also show you an example how it looks like at our.
Page Object Pattern in automated testing with Selenium WebDriver
Today I want to talk about Page Object Pattern which very popular in test automation with Selenium WebDriver. In my post will be used Python binding for Selenium WebDriver and Google Chrome Driver.
Step by step guide for creating WebSocket client in Golang using mutex and channel
In this guide to using WebSockets in Golang I would like to concentrate on the following: the application should work whether WebSocket server is online or not. The server can be offline for a number of reasons: poor connection, server issues, etc, but a