Greetings.
In the light of recent conversations about the lack of qualified personnel in IT, I publish the first part of my article, written back in late 2006. Over the last situation has not changed much, so everything described is still relevant.
Dear young! We grow our own staff in IT.')
IntroductionIn recent years, in the information technology market, the demand for qualified personnel seriously exceeds supply. This has long been a trend: wages are growing and growing, new jobs are emerging, and there are not enough specialists. For example, in April 2005. The average salary of a .NET programmer in Moscow was about $ 1,200, in January 2006. it began to be $ 1600, and now I often see vacancies with salary offers exceeding $ 2000. If you search for vacancies in Moscow for developers on the .NET platform on the job.ru site with a specified salary of $ 2,500, you may find that 12-15 advertisements that meet the specified criteria appear every day. At the same time, it is much more difficult for an IT specialist with low qualifications to find a job, and the supply exceeds the demand several times. In this article I will tell how to use the current situation with the maximum benefit.
It is not always reasonable to pay a software developer $ 2000 / month, but the market is growing, and as you know, you can’t argue against the market.
Personally, I think that almost every IT company needs to implement a program to grow its own staff. And to raise real specialists from young talented guys, whose eyes are burning, who are ready to program day and night, who want to feel part of a team, want to learn, understand, want to become true professionals, want to get results and see their last name in the “About” created product ... In the end, for the aforementioned, these guys are ready to work for food ... This, of course, is a joke, but you can start with $ 200. And I am ready to prove that with the right approach, real “bison” will grow out of them in just a few months, while the projects are successfully implemented, and the budgets stop melting with the usual speed.
Idyll, dream, fairy tale, nonsense? Something like this was said by the half-team of Atis developers, where I proposed to implement such a program. However, I managed to defend my point of view, and the company gave the go-ahead to expand the team working on the project Password Commander.
A year has passed since then. It is time to look back and take stock. In three parts: in the first I will talk about how to hire talented interns, in the second - how to help talents to open up and become true professionals, and in the third I will summarize and tell you in detail about the results.
Part 1. How to find talented superstar trainees?Baseline conditionsMoscow, a small IT company (20 people).
Working conditions:
- Free schedule from 24 hours a week, the opportunity to work on Saturday and Sunday (for students), for graduate students and students during the holidays - 40-hour work week.
- The first two weeks of training are provided, during this period wages are not paid, but the candidate is provided with free meals. Candidate may not be recruited on the basis of learning outcomes.
- After the training, a probationary period of one month is laid, which is paid at the rate of $ 200.
- Upon successful completion of the probationary period, the intern is assigned a salary of $ 300 / month.
- After each month of work, the employee’s salary can be increased by $ 50, subject to the availability of professional growth. This should be understood as follows: if an employee works normally, his salary will increase by $ 50 every month.
- An employee's salary increase is provided for up to $ 1,200, upon the achievement of which an employment contract is concluded on other conditions with a fixed salary.
- Social package, bonuses, etc. was not provided.
It is worth noting:The salary of an employee under such a scheme requires $ 6250 per year, while the employee reaches the level of $ 800 / month. by the end of the year.
A salary for a programmer working at the rate of $ 1,700 / month requires $ 20,400 per year.
RequirementsWe needed several programmers to develop the Password Commander product. The project was originally created on Delphi 7, so the candidate had to own this development tool. We wanted to find talented and enthusiastic programmers who, alone in the evenings or in the company of other similar amateur students, wrote program programs for various needs. We needed people who know how to think, know the basic concepts and constructions of a language (telling what if, case and for are completely unwilling), and most importantly, approach programming with unprecedented enthusiasm and have a great desire to work and learn new technologies. If the candidate writes code in one line and calls the variables “a1”, “a2”, “xxx” and “yyy”, I do not care, we will teach.
TrainingUnderstanding that candidates for such a position may be “null” in general, which does not suit me at all, it was decided to ask all three control questions, allowing us to approximately determine the level of knowledge of the candidate. Given the specifics of the project (it is necessary to be very well oriented in the PLO, there are a lot of own controls), the following questions were selected:
- What modifiers of access to class members do you know? What is the difference between Public and Private?
- What is the difference between override and overload?
- Why do we need the keywords as and is? Where and how are they commonly used?
Candidates who were interviewed by telephone were given conditions for wages and schedules, and, if they met them, the candidate was invited to the office.
Naturally, I did not want to accept a candidate for a job just because he answered correctly three questions that you can ask the programmer's dad. Therefore, I developed a test task: to create an on-screen keyboard that could be attached to any TEdit object and would allow characters to be entered into it. I made a technical task, after which I completed the test. It took me 40 minutes. I decided to give candidates an hour and a half.
Then the following requirements for the test task were formed:
- A candidate must complete a test task in 1.5 hours or less;
- During the allotted time, a candidate can use the Internet without any limits and any literature that he will bring with him. Almost everything is allowed, except for the direct transfer to the third person of the test task and getting the finished result.
The candidates who successfully completed the test assignment had a personal conversation, a story about the company, an introduction to the management, and, possibly, a job offer.
Search for candidatesThe search for candidates was carried out in four areas:
- Placement of vacancy on sites such as job.ru;
- Placement of vacancies on specialized forums for programmers and on the forums of institutes;
- A survey of employees for the presence of familiar programmers who have the necessary knowledge and are ready to work on the specified conditions;
- Resume search on job.ru type sites.
The most suitable candidates were selected by the resumes published or sent. Man, I myself am very attentive to trifles and I know that each letter in the resume can tell something about a person.
For example, the email address of the candidate.
I don’t like email addresses like this:
lenkagirl@somedomain.com - in the end, childhood is over, we seem to be looking for a job and “lenkagol” - somehow this is not business-like.
zombiekill@somedomain.com - for friends this address may be suitable. But for the employer - is unlikely. Who is behind this address? I do not know, but it seems to me that I will not like it.
But this address immediately hooked me:
soapwithoutcord@somedomain.com - it is immediately obvious that a person can correctly write three words in English, which is also not common. In addition, it turned out some interesting combination. In the end, I decided to invite this candidate to work, and believe me, I was not mistaken.
Of course, I looked not only at the email address, but also at the structure of the resume, I myself noted the literacy of the Russian language (if a person was too lazy to check his own resume in Word, how would he relate to his code?), These skills. You should not invite a candidate who interviewed Delphi instead of Delphi for an interview. Shame and shame - not to be able to write the name of the tool with which you have to work!
As a result of telephone interviews with candidates, I came to a disappointing conclusion: practically no one answered all three questions correctly, so I had to look at the overall responsibility of the candidate and knowledge of the basic constructions of the programming language.
It should be noted that candidates' requests are very uneven and often do not obey any logic: you can find a 4th year student who is ready to work three full days a week, understands programming well and agrees to a salary of $ 200 a month, and you can find a student who knows nothing at all, cannot answer a single question and at the same time has a salary expectation of $ 600 a month for a trial period.As a result, the requirements for candidates during a telephone interview are as follows:
- The candidate can clearly explain the difference between the private and public access modifiers, and also gives examples of the use of these modifiers;
- The candidate answers either the question about override and overload (which is preferable), or about as and is;
- The candidate demonstrates overall responsibility when talking on the phone;
- The candidate agrees to the conditions of work, which are announced to him in the short version.
I invited all candidates meeting these requirements for an interview and warned in advance that they would be offered a test task of approximately 1.5 hours duration.
As experience has shown, it is not necessary to hold long conversations with a candidate before writing a test task. Therefore, the interviews were held as follows: I met a candidate, briefly told him about the scheme of our conversation (no more than 10 minutes), and then offered to perform a test task.
The results of the assignment turned out to be even less comforting: only 20% of candidates at least somehow coped with the task, while 50% of them had to allocate additional time to see at least some result. Ideally, the task is not completed by anyone. Whenever possible, I showed all candidates how to optimize the code, make it more understandable and readable.
The third stage of the interview immediately began with the strongest programmers, where the company management was invited whenever possible. The conversation usually went about life, I asked the insidious and not so questions, and we finally settled the working conditions. It should be noted that at this stage of the interview I first of all asked myself the question: “how comfortable will I work with this person?”, And then I remembered the professional qualities of the candidate.
Bottom line: the search for three people took about three weeks, but such painstakingness manifested itself: I was able to hire really talented employees.
Findings:- Ideal for this position is a student of the last / penultimate course or a recent graduate without work experience, however, having a certain non-commercial experience. Ideally, if a candidate lives in Moscow with his parents and doesn’t need much money, and, most importantly, is motivated to raise his / her professional level and participate in interesting projects. This position is also suitable for students living in hostels. The most important thing, once again, is to emphasize the desire to improve your professional level.
- In my opinion, every project manager should be a bit of a psychologist. Therefore, I believe that when recruiting a team you should not resort to the services of HR managers. You form a new team, you form YOUR team, you choose with whom you will work side by side for a long time. You will be from whom to choose, do not forget that the demand in this segment greatly exceeds supply. And if a person has completed all the test tasks perfectly, but you feel that it will be unpleasant for you to work with him - do not take such a candidate. You should feel 100% sure that you need this person.
- Look not only at the result of the test, but also on what methods and approaches the candidate uses. For example, I hired an intern who coped with the test task by 30%. At the same time, I saw that this candidate was confused in languages, often using constructions from C ++, but the way he worked with the keyboard: quickly, professionally, often used “hot keys”, etc., spoke about his experience with Borland C ++ Builder. This was enough to understand that this candidate will easily improve his knowledge in Delphi. I was not mistaken. Conclusion: be flexible in your assessments. You should not evaluate candidates only by the results of the test task. After all, sometimes there are exceptions.
- At the interview, the candidate should be explained why the proposed initial conditions are somewhat lower than the market. You need to motivate him.
I have seen companies that recruit junior programmers, but there is no special program for working with trainees. Newcomers are offered books, if necessary (at the initiative of the trainee) advice from more experienced colleagues can be obtained. After some time, simple tasks are set for such an employee. If the tasks are performed - the company believes that the intern is successfully trained. Everything is good, but since there is no well-developed training program, the employee learns everything independently. Of course it works. But how…
Somehow I discovered the source code of a module of one large system that needed to be finalized. Externally, the module worked without failures, but as soon as I opened its code, I was horrified. It is not difficult to guess that it was the result of the work of a junior programmer whom no one taught. Total: 3 days spent on refactoring.
“So, we offer a starting salary below the market because we are training a candidate. We work with him a lot and tightly. We are interested in raising his professional level, ”something like this should be a motivational speech.