It is worth noting that, despite the fact that IT has developed a scale for evaluating programmers (Trainee, Junior, Middle, Senior, Lead), with which more or less everyone agrees, there is not yet a precise definition of each level of general opinion among companies. Therefore, each company sets internal requirements for skills at each level.
Nevertheless, there is a basic set of knowledge and skills that can be used as a whole to guide in evaluating yourself. Many experts argue that today the requirements for Middles are somewhat overestimated.
The position of a Middle-developer presupposes not only a confident knowledge of the programming language but also the broadest knowledge in related technologies. The Middle position imposes on a specialist the responsibility not only to program “anything”, but also to teach, optimize the code, disassemble, and maintain someone else’s code as if it were native. In fact, nowadays there are requirements for Middle-developer vacancies, as a few years ago for Senior.
We found out what a middle programmer should know in 2020, and collected general interview questions, according to the answers to which employers determine whether a candidate has “matured” to middle or not.
⚙ Hard skills
1️⃣ What is your level of proficiency in the programming language and related tools?
A Junior programmer is expected to know all the constructs of the language, knowledge of most of the standard library. Familiarity with frameworks (at least one), tools for collective development (version control systems, task and bug trackers, of course, IDE, etc.). Requirements for the Middle game are much higher. As a rule, a thorough knowledge of the base (including the syntax of the languages used), work experience, and confident theoretical knowledge of standard libraries, necessary frameworks, and tools is expected.
2️⃣ What projects have you participated in? How many of them were driven by themselves?
Do not be surprised: experienced juniors can already manage their projects. Not without the support of more experienced colleagues, but this does not negate the independence of the junior developer. So if you are moving up the career ladder, your projects should already settle in your portfolio.
Show solutions that best demonstrate your knowledge and skills. Choose the most difficult and complex tasks, tell us how you performed them and how you planned them.
3️⃣ What is your database skill?
Do you work with a backend? In this case, you should freely access databases, have skills in working with one or several DBMS.
Know and be able to build an optimal database architecture. The database is often the bottleneck of a project’s performance. Changing the database architecture on a live project is very problematic and expensive.
This is the main thing that a middle developer should know. Do not forget about the normalization, denormalization, and characteristics of each normal form.
4️⃣ Tell us about your level of proficiency in the chosen IDE
You need to be able to easily connect libraries to the project, know the main advantages and disadvantages of the environment, freely configure and use hotkeys. This is what a middle developer at the IDE level should know.
5️⃣ Other technical skills
It all depends on the specific specialty, but experts agree that knowledge should be advanced: more than one library and a couple of hints.
- know one of the popular JS frameworks (React and Vue);
- know SASS / SCSS / Less / PostCSS;
- be able to independently configure the build system of the Grunt / Gulp / Webpack project, work with bare JS (ES5, ES6, ES7);
- know and understand RESTful interfaces;
- be able to use code sharing tools (Git + GitFlow).
There are also additional skills that provide benefits. A big plus in the work will be:
- experience in developing server code for Node.js, TypeScript;
- understanding of SOLID, Dependency Injection, knowledge of Linux (Debian-like);
- experience with TDD / BDD, test frameworks (Mocha, Should, Chai, Jest);
- knowledge of Docker (Kubernetes / Docker Swarm will be a big plus);
- experience in PostgreSQL / MySQL etc.
The most important thing for a Middle is to know how the technology you use, your framework, works from the inside. Not how he renders (using VDOM, etc.), but how the code is written, how the magic happens. Open GitHub, see the React source, for example, this.setState makes the component render.
6️⃣ What development methodologies do you know? Which of them did you work on?
Theory alone is not enough. You should have already participated in turnkey projects and understood how this or that methodology works. It’s good if you’ve had experience with multiple methodologies: if so, be sure to compare the pros and cons based on practice.
7️⃣What else a middle developer should know?
- Know and be able to write optimal data selection queries (DML queries).
- Know a little about ACID, understand what it is and why you need it.
- Know the three pillars of OOP (inheritance, polymorphism, and encapsulation).
- Know what design patterns are and why they are needed. Understand the differences between them.
- Understand what SOLID is and when it is appropriate.
- Know and understand what code testing is and how it is implemented.
- Experience in writing tests is desirable. This forces the developer’s brain to generate completely different code. I specifically put this item below SOLID and design patterns: first SOLID and patterns, and only then tests. Then the code will be obtained, which will be more easily covered by tests.
🤝 Soft skills
1️⃣ How sociable are you?
If in the case of a Junior programmer, communication skills are simply important, then for a Middle developer they are mandatory.
I think that a Middle-Programmer should not make decisions on the architecture of a project, coordinate requirements with a customer and resolve issues with blockers, since this is the responsibility of the Analyst, PM and Senior.
Despite this, in many companies, the middle is often tasked with figuring out what the customer wants, how to solve his problem, and what architecture to build. On the basis of this information, a full-fledged technical specification is formed, which is then transferred to the development team.
2️⃣ Your teamwork skills
From the point of view of soft skills, a Middle-developer, of course, needs to master the following competencies: negotiating, communicating with a team, having an idea of managing a team. These skills will come in handy in further career growth
3️⃣ Do you know how to resolve conflicts?
This skill is also part of communication. Disagreements can arise both with the customer and within the team. If you have been assigned the role of a mentor over junior specialists in a project, conflict resolution will also be in charge.
Despite the fact that we, developers, are more often on our own and in ourselves — we need to develop communications and other soft skills. Not all companies have a manager who plays the role of a mediator between departments — in order to be understood and to just be able to talk about your work normally, you need empathy, the ability to negotiate, flexibility in processes/
4️⃣ What is your level of English?
The level of English proficiency in the Middle-programmer must be at least Upper-Intermediate, since this specialist constantly participates in calls, conferences, must read and write technical documentation fluently.
5️⃣ Are you able to communicate your ideas in an accessible way, to convince them of their correctness?
Softskills are required to fulfill multiple roles within a team — developer, mentor, speaker, team lead, and others. What does a specialist need for this? Convince colleagues and clients. Sometimes even selling — ideas, solutions, benefits. Present your ideas. Teach. Plan your activities, set tasks for subordinates, monitor their implementation. For this and much more, you need to develop the appropriate skills.
6️⃣ Can you be described as an attentive person?
A very good quality that a developer needs to develop is attentiveness. She will allow you to notice in time that something is wrong with the “canary”. A competent Middle-developer should continuously monitor the “vital indicators” of the project in order to understand in time that he is “chirping” after a recent commit, he is no longer so cheerful
If there is a problem, how will you solve it?
A mid-level developer is faced with the task of independently finding, processing and using information, and only in the most difficult situations contact fellow seniors.
In the first place is the ability to seek information. Before the interview, remember the main sources of information that you turn to first (after the documentation, of course).
7️⃣ Can you estimate the time to complete the task?
This is what a Middle-developer should be able to do, especially when it comes to working in a team: in this case, it is necessary to estimate the time based on the knowledge and skills of each project participant. You should learn to correctly determine the timing of the work .
Middle already has sufficient experience, which allows him to decompose tasks more or less correctly. Middle knows how to decompose, which means he can more accurately evaluate tasks. He must be able to meet deadlines. This skill cannot be overestimated.
8️⃣ Are you planning to grow to Senior or Team Lead?
A bad soldier is that he doesn’t dream of becoming a general. Let’s paraphrase: the Middle is bad if he doesn’t dream of becoming a Senior / Team Lead. Middle must always want to develop. The thirst for self-development will pull the Middle out of his routine (and he will have a routine) and send him to develop further.
So, are the requirements for middles overstated today? Opinions differ on this point, but almost all experts agree that each company dictates its own rules, and what a Middle-developer should know will directly depend, among other things, on the position for which he is applying.
Are the requirements for middles too high? Perhaps one of the IT specialists has come across the fact that, having been a middle man for several years, he is assessed as a junior at an interview in a company. This is due, as a rule, to two factors: first, different requirements in different companies. Second — often the skill level, in addition to the above hard and soft skills, also include the employee’s immersion in the subject area, knowledge of the specifics of the business. This knowledge makes the employee valuable to the current organization, but may mean less in the new organization.
Summing up, a Middle-developer should be fluent in theory, know the required technology stack well and have rich experience in it, not just communicate, but also estimate labor costs, time frames, train and manage the development progress. Database experience, Git and fluency in English are required by default.
If you found this article helpful, click the💚 or 👏 button below or share the article on Facebook so your friends can benefit from it too.
What else can be edited?