The questions are not a boy, but a juna. 22 questions to the employer at the interview for the position of "Middle Python-developer"
For 2 years, I was lucky to visit more than forty interviews as a candidate for the position of "Middle Python-developer". In the last fifteen interviews, I realized the need to ask questions to the employer in order not to encounter surprises in the future. In addition to the basic questions that candidates usually ask employers, I decided to form my own questions. When I asked these questions at the interviews, I received a variety of reactions from the interviewees. Someone said that I was meticulous, someone thought these questions were too trivial, and someone even began to get nervous (blush) and immediately interrupt the interview with the absurd excuse that he had a meeting. In this article, I would like to talk about the general ideas of attending such events, as well as bring my 22 questions that I ask to the employer during the interview.
An interview at a middle-developer often looks the same as a junior interview.
It really is. This is due to the fact that many tmlid / technical directors do not know what exactly they want to see in the middle developer. Therefore, these interviews are usually asked to "write a decorator" or "write a bubble sort in any language . "
Also, few people understand how a junior developer differs from a middle developer. Someone says that middle is a developer with experience from one and a half years, and someone - from three. In my understanding, the middle developer is the developer who can safely give up a small project or any part of a large project and that he is responsible for it. Also an important criterion for a middle developer is the ability to be a mentor for someone, or simply the ability to help a new employee enter the project.
An interview is not an exam, but an opportunity to determine how the company and the candidate are suited to each other.
This important rule is often not understood by employers themselves. Once I was at an interview where I was forced to pull a ticket and answer to the interviewer on a piece of paper. In this case, throughout this interview, we talked for ten minutes. The same behavior is often traced by the candidate. Often the candidate wants to answer everything and behaves like an excellent student from the first grade. But here it is also important to understand that the employer is not particularly interested in how well you know “the difference between Python2 and Python3” . It is much more important for an employer to understand in general how you hold on to an interview, how you reason, how you react to failures, etc.
Middle-developer can not be without experience.
Of course, it is possible, but after a while it will cause huge troubles both for the manager of this developer and for the project. For too gifted candidates without experience, HR specialists have their own term - “strong junior-developer”. Most likely, such developers will be offered a good monetary compensation, but they will have responsibilities like a junior developer. Returning to middle-developers, I would like to note that middle is the one who has worked at least for a while in development and understands what processes it consists of. The middle also knows how to work with various tools (monitoring, deployment, profiling, testing) with which a person with no experience is unlikely to encounter for educational purposes.
To the position of a middle developer, soft skills are becoming an important factor.
The higher the position, the more people have to interact. Therefore, very often when accepting to the position of a middle developer, additional interviews with an HR specialist are created to compile a psychological portrait of a future employee. This interview should be treated as seriously as the technical one. We must understand that you continue to work with these people. And if you feel that your future colleagues are not very suitable for you, it is better to immediately refuse further cooperation.
At the position of a middle developer rarely give test items.
This statement is quite subjective. Personally, I really faced this fact. I associate this with the fact that the employer is more interested in your resume. If the summary is not important, then most likely you should wait for the test task.
This section will present the main list of questions that I ask the employer at the interview. Perhaps over time this list will expand or contract. It should be noted that these questions should be asked precisely at technical interviews and preferably to the person with whom you then interact.
1. How are things with testing? What tests are you writing? What libraries do you use for testing? ( factories , moki , etc.)
Testing is a very important part of any development. In my understanding, tests should be written by all developers, at least in some form. The only thing you can forgive the absence of tests for is startups. Startups often change coursebecause of what old projects are usually not needed by anyone. So the quality assurance of such projects was wasted time. For all other companies mercy in this matter should not be. It is necessary to understand that the introduction of a new employee into the project at first will lead to various errors in the code. And the tests in this case is his personal reinsurance and the reinsurance of the one who will pour out his decisions in production.
When the employer answers the second part of the question, you can understand how well the team provides the quality of its product and also the possible responsibilities of the developer which were not covered in the vacancy.
It is worth noting that on this issue, technical experts often begin to get lost. Someone sometimes says that the team has just started writing tests and is not yet familiar with all the subtleties of this craft. But sometimes I heard the following answer: "Testers should be engaged in tests, and the developer should create." This is absolutely wrong.
The developer must write the necessary minimum of tests, because it is he who knows how the functionality that he has created should work. No one talks about the uselessness of testers. But it is important to understand that developers should also be responsible for the quality of their code.
2. What does the developer do with the code before sending it to the repository?
This question refers to the local verification of your code by various parameters. Here is a small list of what the code usually checks before sending it to the repository:
- Flake8 - code analysis for compliance with PEP8 ,
- Pylint - static code analysis,
- Coverage - code analysis for test coverage,
- Tox - checking code for compatibility with different versions of individual packages and with different versions of Python.
The absence of this case in the development is not critical. Also, in many companies, this case is used directly in CI, and the developer does not run anything locally. Even if it is not used in development, it would be nice if the people who interview you have a basic understanding of these tools.
3. Is there a CI / CD project? Is there a DevOps engineer?
This question has no pitfalls and I ask it to get a better understanding of the company's structure. If there is no CI / CD in the projects and there is no DevOps engineer either, then there is a probability that you will be engaged in it. Therefore, this point is also better to discuss at the interview.
4. Is there a code review? How does it go?
The first part of the question can be left without comment, because everyone understands the importance of this event. But it is worth noting that personally I was interested in exactly how it goes. It often happens that each of the developer review team of the developer who made the Merge Request. But sometimes it happens that there is a mentor / mentor over any developer, and it is he who reviews the developer. I consider the first approach more correct, since the more people review the code, the better for the project and for the team. Here, aspects such as teamwork, collective responsibility, increase in the bus factor are immediately affected .
5. What version control system do you use?
At present, there are quite a few companies in Russia that still use hg , svnand other ancient version control systems. This is especially true for companies that have been on the market for more than 10 years. This question more checks how old the company is susceptible to new technologies. It is also worth noting that for a short period of time I took part in the development using hg and this did not give me much pleasure.
6. Do you use git / hg-flow or any specific methodology when working with git / hg?
This question follows from the previous question about version control systems. Therefore, if the command does not use git / hg , then there is no point in setting it. If the company uses git / hg , then this question will be able to show you how well the development process has been debugged.
7. Do you use development methodology (scrum, kanban, etc.)?
In developing it is important to adhere to a particular approach (methodology). The most popular approach to development is iterative. This approach allows you to determine your contribution to the project. In my understanding, if a methodology is used in a team, it is definitely good. This allows you to determine your effectiveness. It also helps you understand the deadlines for tasks. This is the same as schoolchildren have 4 quarters of the year where they are given marks so that they can then determine the final grade for the year.
8. Are monitoring systems used in projects (Sentry, NewRelic, etc.)?
The presence of monitoring systems in a project is just as important as the presence of tests. It is the monitoring systems that make it possible to objectively evaluate the performance of the whole system based on the actions that the end user performs. If there are no monitoring systems, then it is worth thinking about the quality of the product being produced. It is like a cook who cooks food, but never anyone asks if she is tasty. 10. What databases are used in the project? Why precisely such?
9. Is the system used for storing logs and working with them (ELK technology, etc.)?
For me, this is also an important indicator. If the ELK is missing, it is very difficult to determine the cause of the occurrence of a complex error in the system. This question is not as important as question number 8, but it is also worth asking to understand how rich the team’s experience is in profiling complex errors.
This question is aimed at assessing the competence of the interviewer. Very often, when using old databases, I hear something like "historically it happened." I consider such an answer inappropriate. The technician must understand the cons / pros of the database he uses. This question should be asked only if you yourself are well versed in various databases and their differences. This question, as well as the previous one, is aimed at assessing the competence of the interviewee, as well as at assessing his reasoning. It should be understood that employers are very illiterate and such questions allow us to reveal this already at the interview stage. Before asking such questions, I strongly recommend that you go into them yourself.
11. What version of Python is used in projects? If a version of Python2.x is being used, is it planned to switch to Python3.x? And how will you migrate from one version to another?
12. Is the company looking for a fullstack developer or backend developer?
I ask this question only if the company itself did not clarify this before the interview. Jobs fullstack-developer in the labor market can be found quite often. Many companies find it beneficial for themselves. My personal experience tells me that fullstack developers do not exist, since the frontend and backend have become too different directions since the Web appeared. In other words, "You will not sit on two chairs."
In most cases, the company is satisfied that you do not know the frontend and expects you to learn it directly in battle. I’ll clarify that a fullstack developer job is unacceptable for me personally. Many people find in this a great opportunity to plunge into the richest world of the frontend, while not paying a single ruble.
13. Is containerization technology used in projects?
This question is an addition to question number 3.
14. Ask the interviewee a little about what he did before this project and whether he has been in the project for a long time.
This question is very important. The richer the experience of your interviewer, the more it will affect your skills and abilities over time. It is especially good to ask such a question in a small company where there is a slow turnover of personnel.
15. Does the company have an annual / quarterly assessment of employees and how does it occur?
It is helpful for any employee to receive feedback from their colleagues. If there are special events for the company, then that's fine. If not, then there is nothing terrible about it. In any case, no one forbids to request feedback from colleagues in the free form.
16. Do u have a recycling company? If so, are they compensated and how often do they occur?
Few people like to recycle, especially if you are a student or a nursing father. There are a huge number of companies that put recycling to the fore. To understand that the company has no processing or is but rarely, you need to ask this kind of questions. If the company rarely happens processing, then there is nothing critical. If processing has become more frequent, then it is worth thinking about the purposefulness of a further stay in the company.
17. How strong is the bureaucracy in the company? (Rate from 1 to 10)
Many developers do not even realize the presence of bureaucracy in the IT sphere, but, unfortunately, it exists. This especially applies to large old companies or to companies that work with state. orders. The degree of bureaucracy in the company depends only on the imagination of the management. Typically, bureaucracy consists of various formal applications, sights, accesses, conflicts of interest between several departments of a company and writing boring raw documentation in Word. The main problem of such a bureaucracy is a very strong inhibition of the development process. The fact that in a normal company is done in one working day, then it will take weeks. Simply put, the stronger the bureaucracy in the company, the slower the development of the product and your development as a specialist.
18. What is the situation with knocking out resources?
Resources are new computers for employees, servers, domains, licenses, etc. This question can also be attributed to the previous question of bureaucracy.
19. How does the interviewer feel about new implementations in the project?
This question allows to evaluate the democracy within the team. And also this question will allow you to understand how much the voice of an ordinary developer has weight for the team and the mentor.
20. Is the company a participant of any IT conferences and does the company have publications on IT topics?
The conference is a great opportunity for the developer and for the company to express themselves and their achievements. If a company is published and is a participant in conferences, then at some point you will also be able to use this opportunity. If you are not interested, then it makes no sense to ask about it.
21. Are there mitapas inside the company?
Here we will talk about the meetings with the developers within the team or between the teams. Mitapas are very important. They allow you to find out who and what exactly is doing at a given time. If you have problems with public speaking, it will also contribute to the development of your soft skills .
22. Are there interns in the company and is the mentoring system developed?
Interns are a potential future for the company. If there are interns in the company, then maybe you can be a mentor for them and share your personal experience. Mentoring is also one of the areas where you can develop.
All of the above is my thoughts based on personal experience and is not 100% correct information. The main moral of the article is that it is necessary to check not only the candidate, but also the employer. Also, do not be nervous before the interviews or at the interviews. It should be understood that the interviewers are the same people as you, who are also mistaken or do not know something or do not understand.