Before starting this cry of despair, caused by the madness of this world, I would like to briefly say about myself - software programmer, programmer’s leader (hired and hired), significant development experience only in Perl.
Perl is once a popular, but dying language for the web. Dying rightly, so I would like to get off him on something massively popular (Java).
Problem
Changing the technology stack is not such an easy task, the problem is that if you don’t have a specific programming language or a specific framework / library in your work experience, then you are considered an inappropriate candidate.
No matter what your experience in quality and quantity, there is no difference can you solve problems -
the main thing is that your resume should indicate experience with the tools described in the vacancy.
')
Since IT sphere is quite new, it is not clear to everyone why this is utter idiocy. For an understandable illustration, let's look at carpentry as an example. If you need a carpenter to make a wooden table, then you will not write something like “experience with iron handles with plastic handles in the vacancy” in the vacancy. I do not exclude the possibility that you will write: “experience in the manufacture of tables is required”, it can be somehow understood, but this is not necessary.
Does anyone have any doubts that a good carpenter can make a table?Those. the main task is to find a
good joiner, not a joiner who owns a specific tool and not necessarily a joiner who performs similar projects. Although the second one can be valuable, but in the application to the IT sphere there are certain difficulties - usually it is required to make something so rare that it is almost impossible to find a person with such experience.
An example with a carpenter is of course just an analogy, it facilitates understanding, but does not give a complete picture. For example, it is even more stupid for programmers to make use of tools than for joiners, because for joiners a set of tools changes extremely slowly, and for programmers, tools change with space speed. Programming involves constantly learning new things -
today you hire a person to work with some technologies, and tomorrow he will have to use others . Although I’m not a client-side developer, I remember well that in 2007 jQuery and ExtJS were popular libraries on the client side (like ReactJS and Angular today), and in 2017, when I spoke at The Rolling Scopes # 37 conference. Gomel found out that in the big hall only a few people remember such names. And so everywhere -
everyone constantly introduces new technologies and for some reason does not bother anyone that current employees do not have experience with these technologies (and if the technology is new enough, it may be that there are no people with experience with them all over the world). In addition, we can say that programmers, in contrast to joiners, are engaged in complex tasks in a fairly new sphere of human activity; there is almost no accumulated and replicated industry experience. This carpenter can take a textbook or reference book with a huge number of drawings of various tables or consult a more experienced specialist, and there is no such thing in the IT field - even in typical tasks like site development there are no ready-made solutions, for example, popular and long-standing CMS often change their architecture in search of a good and universal solution. And if you take a slightly less typical project, it will be very sad.
Based on the above, it can be understood that experience in similar projects (as opposed to experience with the same tools) is valuable. This is understandable - if a person worked in the same sphere, he knows the subject area (she has a model in her head), has stuffed some lumps and can already do better than he did the first time. If I'm not mistaken, Frederick Brooks had a statement that the program becomes good only after it has been rewritten three times, and so, if you hire a person who has already written once, then you have only two. However, as already mentioned, finding a person with experience in the same project is very difficult and expensive. Think about how many people in the world created task managers (like Redmine)? Writing hosting billing? Who created the messengers? Their experience is very valuable if you develop a similar project, but here it is extremely difficult to find and hire them for a variety of reasons.
Who is guilty?
I don’t know, definitely not HRs, they play as they say. Maybe in fact everything is fine in this world, and I am crazy.
What to do?
Think carefully before you formulate the requirements for the candidate. After all, a good programmer must be able to learn, and therefore is able to master any technologies you need. And if it's not about technology, then what? Obviously, he should be able to program, solve algorithmic problems and this should be checked by giving a test task. But it is necessary to make this test task close to real work - if you hire a system programmer, then it is perfectly possible to give him a task requiring knowledge of algorithms, etc., to test not only the ability to program, but also knowledge of accumulated practices (in system programming just There is some accumulated experience, this is the oldest part of the industry, and it is also rooted in older mathematics). And if you take an application programmer, then you need to test the ability to write a simple, clear, readable code to correctly solve the problem and the ability to learn and with high probability you will get the right person.