How to interview a technical specialist

  • Tutorial

Some kind of "not healthy booze" has recently gone on a hub about interviews. Enough people already, there is nothing terrible and special in the interviews, I have been spending them with IT-specialists for several years, and in 95% of cases they are adequate and nice people. Therefore, I want to share with you "Zen" about how best to conduct a technical interview, and indeed evaluate the skills of those. specialists, since the question of assessing the competence of a technical specialist can be quite difficult, especially if you do not want to conduct an interview for 3 hours in a row. With this model, you can well put those. an interview in 40-50 minutes (or even faster) and be sure of a decision of 80-90%. If there is a lot of information about the assessment of emotional intelligence, basic motivation and just the level of adequacy, then here’s about how to effectively evaluate the technical skills of a specialist, often, “some in the forest, some for firewood”. This article may also be useful to those who simply want to effectively grow as a specialist, because it is precisely their knowledge that is considered.

How does it happen

In most cases, another specialist with a high degree of technical competence is invited to conduct an assessment, who, as a rule, does not understand anything in personnel matters and methodologies for collecting information about a person’s personality, and just a frontal interrogation “who knows more” begins. Some interviewers just have a checklist of questions. Many also use the practice of the test task, which must be completed before the appointment of a face-to-face interview. In general, whoever can can solve the problem.

In general, this approach is effective, but it has several disadvantages:
1. There is a possibility that the interviewing technical specialist may perceive the discrepancy between the experience of the applicant to his own, as a lack of experience in general. For example, rather narrow practical questions may be asked that the applicant has not encountered in practice, which can be interpreted as “But how can you not know this, it's so simple.” A specialist from personnel will never be able to recognize this due to the specifics of the context.
2. Even if open-ended questions like “What tasks did you have to solve?” Are asked, again, the discrepancy of experience can be interpreted as “He does not suit us because he did not do what we have been doing for several years.”
3. Some technical specialists, especially those with already quite a lot of experience, little recognize the fact that ignorance of specific tools is often not a big obstacle. For example, if a person has not worked with GIT, but knows CVS well, this significantly reduces the threshold for entering the tool.
4. There may also be a problem when the applicant has extensive practical experience and answers questions on specific solutions well, but when he is hired, it suddenly turns out that he makes quite typical mistakes in areas he has not worked with before. One gets the impression that such people are “stupid out of the blue” or “actively copy-paste the code” from their previous projects.
5. Sometimes one comes across a specialist who gives the impression of a beginner and his resume shows little practical experience, but it is important to understand "whether he will fire." Because if you shoot, you can get a good "star" in the team with small investments. And it is not clear how to recognize this as accurately as possible.

These are just a few of the scenarios that are regularly encountered when selecting new technical specialists. Interviewing a technician is similar to a task when you have a huge picture that is hidden behind the turning cells that you flip one after the other. And your task is to guess the whole picture, provided that your time is limited, and the number of possible pictures is huge.
To more likely eliminate the negative scenarios and to conduct more effective interviews with technical specialists, you can use a special model for collecting information.

Classification of knowledge

First you need to decide on the classification of knowledge. To do this, they must be divided into 3 types:
1. Fundamental - this is basic knowledge in a particular area. For example, this may be the question “What are the main types of queries in SQL you know?”.
2. Applied - this is the skill of solving specific problems. For example, it can be tasks for the correct spelling of SQL queries for specific examples.
3. Instrumental - this is knowledge on how to apply specific tools. For example, what is the difference between innodb and myisam repositories?

Fundamental knowledge is necessary in order to understand on their basis how best to solve practical problems. Practical tasks form applied knowledge, that is, an understanding of how and what is best to do. With the understanding that it is better to solve individual tasks with the help of specific tools, instrumental knowledge also develops. Often, a person starts with some small practice, then studies “why it works this way”, then tries to do something similar, and then he hones his skills with tools.
For example, in the same way, a person develops a language proficiency: at first he simply tries to repeat separate words for his parents; then teaches the alphabet; then writes essays, articles or business letters; and sometimes uses reference books and dictionaries for this.

When something went wrong

Since the "academic education" in the field of IT is still rather weak, most specialists are largely self-taught. This creates certain deviations that can be well understood on this model if one of the areas of knowledge is hypertrophied. I will give classic portraits of candidates and their explanation:
1. Know-it-all- has a significant amount of fundamental knowledge, for example, acquired through any courses and reading books / articles, however, it does not have practical skills for their application, which does not bother him. Even if you start asking him some practical tasks, you will always hear a lot of knowledge about how this should actually work, how the individual parts are arranged, but it will be quite difficult for such a candidate to put everything together to solve the problem without your hints. Quite a common situation if you ask a candidate about OOP patterns that are not widely used: hear the description of the pattern when it is used on some academic example, but integration into a live task will go “with a creak”.
2. Stackoverflow developer- usually, such developers talk quite actively about their experience, about what tasks and how they managed to solve, but when trying to answer the question "How to do ...?" from a practical field unknown to them, you will hear either an attempt to “catch your ears” another solution, or an answer in the style of “Yes, it’s google in 5 minutes, I’ve already seen something like this somewhere”. Such developers often try to attract some ready-made solutions that they already made, arguing that “Why do 2 times?”, Or simply copy-paste the code from the Internet and other projects. When asked, “Why does it work that way?” or "How can this be done differently?" often get lost and try to translate the topic.
3. Tools & Frameworks-developer. There is an old joke: “How to start making a website in 1995? Open notepad and start writing code. How to start making a website in 2015? Download and install composer, framework, cms-extension, bootstrap, jquery, bower, less, install an IDE, start writing code. ” Here is about the same for this kind of specialists. Most of the applied experience of such specialists is excluded with a specific tool. A concept such as “brain bitrix” characterizes this case quite specifically. For such candidates it is very difficult to give tasks according to the "native" code, because without a tool for them it is an almost impossible task.
These examples are given for cases when one of the areas of knowledge occupies a leading position, and since the feeling of "superiority" in this area gives rise to a sense of one's own "greatness", the specialist tries to hold on to it with all his capabilities ("everyone wants to be cool"). For example, a Stackoverflow developer, while trying to find out fundamental knowledge, will argue to the last point to the fact that “yes, I don’t need to know this, I’ve done this a hundred times and everything worked like that”.

How effective development works

The most effective scenario for the development of knowledge is precisely the balance between the areas. It can be achieved in various ways, but it is impossible to allow precisely “skew”. For example, you wanted to make a home page and don’t understand anything about it (everyone started from this): downloaded wordpress (took the “tool”); googled how to set everything up and made their first blog with several articles (acquired applied knowledge); and now figure out how and why it works, for example, how the base and cache are arranged, what is the architecture of the engine, etc. (gain fundamental knowledge). Further you can already see what other tools and how they can solve this problem, or write your own tool. If you stop only at the first or second step, then you can easily fall into one of the categories of specialists listed above, and you, I am sure, clearly do not want this :)

How to assess knowledge

Based on this model, you can just as well, and quite easily, “probe” technical specialists for their training strategies and how much their current knowledge allows them to effectively solve problems. The interviewing strategy is as follows: asking a question on a technical field of interest to any field of knowledge, do not move “horizontally”, within the field of knowledge, but “vertically” into an adjacent type of knowledge.
They asked about fundamental knowledge, then ask what problems a person solved with the help of them, or put a practical task in which this knowledge will be required, and then specify what tools are there to use this knowledge and better solve practical problems.

For instance:What are composite b-tree indexes and how do they work? Can you give an example when such indexes may be required or when on the contrary they will be inappropriate? But how to understand that these indices work efficiently and what can be used for this in general?

If you hear comprehensive answers to all these questions, then the specialist really tried to form confident knowledge in this area, to acquire all levels of knowledge. Now we need to draw the right conclusions from this. This will either indicate that the specialist had a huge pile of tasks related to indices, or that he has a good training strategy (which does not exclude the first). To determine if this strategy exists, it is enough to probe a few more areas in which the candidate may not be so savvy, this can often be seen from the resume.

Strong and promising candidates show that even in the absence of knowledge, they understand what they lack and choose an effective approach to compensate for the lack of knowledge. If you check several areas in this way, you notice that the candidate has an effective learning strategy, then you just have to check the fundamental knowledge that is required for you. After all, having them and the right training strategy, the candidate, with a high degree of probability, will be able to solve new problems for him as efficiently as possible.
An effective learning strategy is a strategy for replenishing knowledge in any field for all types (fundamental, applied, instrumental): try something, understand how and why it works, do something similar, learn tools to do even better.

Typical Mistakes in Evaluation

Many tend to overestimate the importance of applied knowledge in relation to other areas, namely, that people with extensive experience in performing tasks are good specialists, but this is completely not so. If the practice is not supported by fundamental knowledge, or the specialist has never expanded his tools, then the effectiveness of such a specialist can be very low. Look for those who know how to develop each of the areas. They are the best, even if they have no gigantic experience behind them.

Often you can find test tasks that are narrowly focused only on fundamental issues, such as language constructs, typical mistakes when using “not intuitive behavior”, questions about OOP patterns, etc. As you can already understand from the above model, you will not define “theorists”, and besides, fundamental knowledge is perfectly googled. So the effectiveness of such tests is relatively small.

There is also a widespread belief that it is important to “understand how a person thinks.” Undoubtedly, this is a “beautiful” phrase, but it is very subjective, and, as a result, it is difficult to be sure of the result based on such estimates. In addition, here you can fall into the trap of subjective assessment "he thinks not like me." However, if you see that a person is able to effectively form his knowledge and solve problems, it does not matter how he does it, because the main thing is the result.

Practical recommendations


If you give attractive conditions for cooperation and the flow of candidates is high enough, then make a test task. Include in it several questions not from one type of knowledge, but from different ones. By answering these questions, you can see an approximate picture of what are the strengths and weaknesses of the candidate.

What to look for

There are several points that you should also pay attention to during the interview. They are more related to the personnel component, however, they are manifested precisely during a technical interview.

Inquisitiveness of the mind . How much the candidate is trying to solve the problem, if he does not know the solution "on the move." Does it look for alternative ways, does it analyze hints, asks and analyzes the proposed solution. Weak candidates “pass by” everything that they could not understand.
Common self-confidence. As far as the candidate admits, he may not know something. By virtue of upbringing, sometimes people have complexes regarding their own knowledge (“graduate students”, etc.). Sometimes, such people in a sharply categorical form issue decisions and do not recognize alternative opinions, if they speak of the lack of any knowledge of the candidate.
The desire for self-development . The best candidates are those who seek to develop as specialists, or who seek to “make the world a better place” through the creation of some kind of benefit. Weak candidates believe that they are already “near the ceiling of knowledge” and simply want to earn as much as possible on this. There are also candidates who believe that the employer should develop them, and not themselves, because it is the employer who sets the tasks.

Interviewing strategy

Prior to the interview, make a list of key areas in which you need experience from a specialist. It’s good if there will be at least 10. For example: PHP + OOP patterns; SQL + query optimization; architecture of highly loaded projects; work with cache, etc.
In each of the key areas, make up at least 5 questions for each type of knowledge, totaling at least 15 questions for each area. This is best done so as not to come up with questions on the go. It is desirable that such issues provide vertical connectivity among themselves.

For example:
Scope: architecture of highly loaded projects.
Fundamental issues:What are the main parameters that are important to consider when designing highly loaded systems? What typical architectural solutions do you know? What is the difference between horizontal and vertical scaling?
Applied questions: If users can upload files, then what is the best way to solve the problem of horizontal scaling for uploads? If you have a page with a high RPM, and an information block that has a long generation time, then how can you speed up page rendering? If a single database became a bottleneck in a project as a result of increased workload, then how best to approach this issue?
Instrumental issues:What tools can be used to balance the load of HTTP traffic? What caching servers do you know and what are their differences? How can I measure application performance under heavy loads?

Start with any of the questions of your choice. Consistently ask questions from each type of knowledge in the selected field (vertically). If you see that the candidate confidently owns theory, practice and tools, then you can be pretty much sure that he will also be able to confidently solve related practical problems.

As you get answers to questions, sorting through areas, you will form a picture of how the knowledge of the candidate is distributed. For example, you may realize a significant lack of theoretical knowledge, or gaps in knowledge of tools. Based on this, you will be able to conclude how effective is the candidate's training strategy and his current knowledge in general. As a rule, the learning strategy is the same for all areas, that is, there are very few candidates who know the theory well in one area and only solve practical problems in the other and did not even try to ask the question “How does it work?”.

Well, then, depending on the requirements of the vacancy, it will be much easier for you to make a decision. Looking for a junior? Make sure that it is not only trying to solve practical problems, but also replenishes fundamental knowledge, as well as seeks and learns new tools. Looking for a middle? Make sure that his skills have “roots” in each type of knowledge and that he understands where to go next to fill in the gaps. Looking for a senior? Make sure that he has excellent knowledge of fundamental knowledge and is able to effectively "collect" any practical task with fundamental justifications and relevant tools.

If you notice any gaps in the required knowledge, and they are not fundamental for you, but still important, then be sure to write it down and work out a plan for filling these gaps on a trial period, using this during the certification. This will allow you to increase the efficiency of your employees methodically and consciously. However, the issue of employee training and development is a completely different and very big story.

Where else can I use the model

The given model, in fact, can be used not only for technical specialists, but also for any profession in general. The difference will only be how fully implemented certain types of knowledge in these areas. Take, for example, a janitor: What cleanliness criteria do you know? If you need to clean 10 houses in one day, how best to do it? For which surfaces which cleaning products are best used?

In conclusion

Recently, I decided to collect my notes on interview questions for PHP developers and put them in the public domain (the project is “on the knee”, so do not blame me). There, of course, not everything, but enough to bring thoughts together and tune in to an interview. You can look at the questions at the link:
If there are positive feedback, I will develop the project as far as possible, I would also like to drop links there for good courses for developers, so I will be grateful for the feedback.
I hope this model can be useful to you. Not only as an interviewee, but also as an interviewee, because understanding your strengths and weaknesses will help you develop more effectively.
I wish you to be the best, and work with the best.

PS: I am the source. Knowledge, experience and model are mine. The links “discard the original” and “where are the proofs, Billy”, do not ask :)

Also popular now: