Since 2007, I have been hiring someone all the time (even now). At first they were just designers and technologists for small websites, and now they are testers, front-end and backend developers for busy medical projects. I want to share with the community the typical mistakes of the guys who come to us to work.

1. Curved summary
It is immediately obvious from the summary whether a person is able to think or not. A normal person, when writing a resume, does it from the user's point of view, asking himself the question: “Will my resume help the employer choose me?”. It is clear that the headhunter or the mokrug themselves form the resume framework, but even using these platforms, job seekers manage to make mistakes.
Typical errors in the resume:')
- no contacts (yes, it happens!)
- No cover letter, when necessary (why do you want to visit us specifically for this job). It happens that the letter is not necessary, because everything is already clear: he worked 20 years in the frontend and wants to continue. But if the candidate worked as a plumber and decided to become a programmer, questions arise. It is better to remove them immediately by writing about your motives in a cover letter.
- not specified level of expected income. Sometimes it seems that if you do not specify salary, then you will have more space for maneuver. However, in this way you find yourself outside the employer's filter if he indicated a specific money range when searching.
- CV is not written in the language of the employer. If you want to settle in the Russian Federation, write in Russian. If abroad - in English. It is best to have two versions.
- retarded jokes. Sense of humor is a dangerous and relative thing, do not try to show them in the summary. The text does not convey emotions, so your joke may not understand.
2. No projects and experience
If you get a job as a programmer, you should have experience. Even if you are settling for a junior position, you still need to have some projects behind your back at the level of hobbies or studies. Ideally, if you have a decent github account, where you push something at least once every few months. Personally, I have such an account and I constantly work in it. We often hear that a candidate cannot show the code, because he has an NDA. Personally, I do not believe it. You can always show your code, even if it is closed by NDA, but in isolation from the context: just show some part that makes your coding style clear. If there is absolutely nothing to show, you will have to do a test task, and this is a waste of time, and, first of all, the applicant. So it is in the interest of the applicant to prepare a code for demonstration in advance.
3. Does not respond to calls / letters
This thing happens so often that I wonder how such people generally find work. In my understanding, a decent person calls back on missed calls and answers letters. If I see that the same number is persistently calling me the fourth time in two days, I will definitely call you back. If they write a letter, I will answer with at least one sentence. And some candidates respond to vacancies at HH, send resumes and do not respond to calls and letters. For me personally, this is a sign of irresponsibility and / or inattention. Both are bad, so I write down such candidates in the Anunachi.
4. Curved test task
Often send a poorly done test task. I will give an example of typical mistakes for Java, but this list is perfect for other languages.
- Inattentive reading of the task. For example, using ORM when it is written that it cannot be used;
- Exception muting via e.printStackTrace ();
- No comments;
- Curved OOP: what classes should do;
- Insufficient code separation;
- SQL Injection;
- Lapshekod; Huge methods that can be broken down for clarity into several parts;
- Working with git: extra files in the repository;
- Naming classes, methods, coding style;
- Database settings in the wrong place;
- "My English is very good." If horseradish English, write in Russian
- Lack of tests
- Unclosed resources: files, connections
5. Bad relationships
I live in the small provincial town of Cherepovets and all the programmers know each other. When a candidate comes to me, I almost always know who to ask about him. Almost always they tell me something and I make a decision based on someone else’s opinion. It is not enough to be a good programmer, you also need to be a good person. Even, I would say that human qualities are paramount in the reception.
Once a good programmer named Nikolai came to me to get settled. After talking with him, I realized that he was an asshole and refused him some form. A couple of days later my First Chief Manager calls me and asks:
- Called Nikolai Pupkin and complains that you did not take it. Why did not take?
- Because he is an asshole
- Oh, I understand, well.
Sometimes we take a completely unprepared junior, because "a good man." If we were a good person, we would put knowledge into it on internal courses or send them to study on external ones.
6. Inability to justify their decisions
If you are doing a test task or throwing off an example of your code, you need to be able to tell about this code: why some decisions were made. If you immediately understand that the decision is not obvious, write immediately why you did so and not otherwise.
I had a case when I hired a programmer, and he began to constantly argue with me on some architectural issues. To argue is good, but you need to be able to justify your position, and not to say "because it is necessary." Over time, a strange situation turned out: I say one thing, but he quietly does another. I had to leave. But in this situation, there was also my mistake: it was necessary to clarify right away when applying for a job who was the boss and who made the final decision. When I was looking for a replacement for this guy, I corrected this mistake and we immediately agreed at the entrance who made the final decision. Now no problem.
7. Misunderstanding of income
Often the candidate comes and does not know how much he wants to earn. When I ask a question, I often hear such an answer: “Oh, this is a difficult question, I have not thought about it yet.” Such a candidate always gets the minimum. My tactic:
- How much do you want to earn?
- I do not know
- 10 thousand is enough?
- Not enough
- Well, and 25 thousand is enough?
- Not a little, it's only for a car loan
- OK, then 45?
- Yes, more or less.
With such a dialogue, the candidate always receives less than he could. If he prepared in advance, knows his level and market wages for his level, he himself can realistically assess himself.
8. Laziness in self-development
I ask candidates about books that he would recommend me to read in their industry. I say something like this: “I don’t know Angular 6 very well. What would you recommend reading / watching to learn?” If the candidate is not keen on his business, he will answer something very relative. And if the candidate is used to continuous learning, he will immediately recommend a specific book or specific courses.
These are the errors. Sometimes it seems that my requirements are too high, however, by the result, it turns out that only the coolest people work in the team.
I hope this will help someone find a good job. All happiness and divine love =)