A big number of technology companies nowadays have integrated the promotion interview process into their career path strategy. The main idea sounds not too bad on paper: before receiving a new position and new responsibilities a person must prove that he or she earned enough experience to be able to handle these new responsibilities. In reality, a lot of my friends, colleagues (and, at some point in time, me) leave the company because they find the this process too resource-consuming, time-consuming, unfair, unprofessional, redundant, or even stupid. I want to share my vision of the problem and provide some ideas on how to improve this process. And maybe you’ll find these ideas worth applying to your company.
Let’s take a look at the process from the standpoint of the experts. The number of experts can vary depending on the size of your company. In big technology companies, it’s quite common to have at least three committee experts to provide a versatile vision of a person’s achievements and expertise.
But let’s talk about these experts. Most of them have their production workload and promotion interviews are just another additional activity they need to participate in. Some companies pay bonuses at the end of the month/quarter/year, some companies provide day-offs depending on the number of interview sessions an expert took part in, some companies consider this extracurricular activity (extra mile) and do not have a direct compensation system.
Anyway, I don’t think that the rewards system is important in this case. Most of my colleagues and friends who are working as senior developers are satisfied with the compensation they have and they just want to keep a healthy work-life balance. They don’t want to participate in any additional activities no matter what the compensation is. They have families and children and for a big number of people, no money in the world can replace the time you spend with your beloved son or daughter. These people are motivated to finish their job as soon as possible and go on with their lives.
As a result, we have experts who have their own production problems that they are trying to solve in the background if possible, sometimes even multitasking during the interview session call. Most of the time they don’t know you, they don’t really care about your achievements and your career. They just want this session to finish to return to their work. Frankly speaking, I can hardly blame them for this, I’m quite the same. I have a wife and son and I love them…
Possible solution: promotion interviews should be a dedicated short-term assignment for the developer. For example, after finishing the current assignment (task, sprint, etc.) and before applying to a new one a person must attend several interview sessions. This time should be dedicated to this process. An expert must collect the information regarding candidates, prepare and discuss with other experts list of questions relevant to the candidate’s experience, etc.
Now take a look at the process from the perspective of the candidate. I understand that this part heavily depends on the company where the process is initiated, so I will only speak about the experience of my friends, colleagues, and my personal experience.
Most of the people I’ve talked to find participation in this process very time-consuming. There are several phases that most of the developers should breakthrough to be able to successfully finish this evaluation:
- Preparation phase. This is a phase that requires a candidate to prepare some documents with his/her achievements, to describe the most important solutions, to collect feedback from the stakeholders or direct management. Depending on the person’s and stakeholders’ workload, developer’s position, and the role this phase can take from two weeks to several months.
- Committee assignment. During this phase, responsible people are trying to find an existing committee (or create a new one if there are none existing) based on the person’s skill set. It’s really hard to give a rough estimation of how much time this phase can take, but I’d say that most of the time it should not take more than a month of waiting.
- Documents review. At this stage, the committee is taking a closer look at the candidate’s documents. The main idea of this stage is to filter out the candidates who did not prepare documents or did submit documents “just in case”. Also, the list of starting questions can be prepared at this stage based on the candidate’s experience. My personal worst experience was two months of waiting.
- Session. From a time standpoint, this is the fastest part. A one and a half or a two hours session and you’re done.
- Response. During this time the head of the promotion process is collecting feedback from the experts and then writing summary feedback with the resolution whether a person is ready for promotion or not. Response time can heavily vary on the committee and can take from a week up to a month.
Now let’s think about a regular developer. He works a significant amount of time in a single company, he’s doing his job well, he often exceeds expectations and he’s pretty sure that he needs a salary raise. But to get it he needs a new job title and his manager is pretty sure that he is ready for it. But instead of raising the salary manager sends a candidate for an interview session. Now our developer needs to wait at least 2 or 3 months to understand whether he’ll get a salary raise or not. Moreover, if the answer is NO he’ll need to get through this process again after some sort of cooldown period.
Taking all this information into account I have no idea why anyone would want to go through this process if it takes less than a month to pass 5-6 interviews on the market, pick up the company to work for, and receive the compensation you want. Time is money, we are not getting younger and it’s quite strange to waste time breaking illusional walls.
Of course, it can be a good idea to at least try if you are already working in a top-tier tech company. But in our country, there are no offices of big tech companies and there is no big difference between one company and the other. I don’t think I know any company in my country which is a big dream for most developers, they all are pretty similar and they provide the same sort of work.
Possible solution: the promotion process should have a tight schedule, the amount of bureaucracy should be minimal. My vision is that it should be quite similar to a market interview: apply, send a CV, schedule an interview, and receive feedback.
Now we return to our experts. Unfortunately, not all the people who are experts are competent enough to be experts, in my opinion. I’m not saying that these people are bad developers, of course not. I’m just saying that conducting an interview (and promotion interview is a special type of job interview) is a skill, you need to train it, you need to invest a lot of time to master this skill. Being a good developer doesn’t make you a good interviewer, unfortunately. The main problem I’ve faced personally and heard a lot from my colleagues was the problem that most of the experts are trying to assess the candidate’s skills and experience based on their personal experience and skills.
Let me explain what I mean. Let’s imagine a situation. We have an expert who was working on a mobile application with a strict set of requirements for boot time, energy, and traffic consumption. On the other hand, we have a candidate, who was focusing on accessibility, writing core application components, system design, and API optimizations. Of course, apart from their focus areas, they both can write front-end applications of any complexity using the framework of a choice. But during the interview, the expert focuses heavily on memory management and performance optimizations. The candidate provides answers based on his experience, but the expert thinks that this is not enough and gives negative feedback, stating that the candidate is not diving deep into the details of the code he produces. This is a quite common situation during the interview session and in my opinion, this is totally wrong. The idea of the interview is to understand the experience and focus areas of the candidate and match them to the title requirements in your company, it’s not about matching the experience of the candidate with an expert’s experience.
Here are a couple of real-life examples from the promotion interview sessions.
The first one. The full-stack developer stated that apart from the daily job activities he is learning functional programming, writing some sort of developer’s diary, where he tries to explain how to use this functional programming language in a full-stack application. This argument was rejected as the irrelevant by the committee with a comment: “it’s very good that you are learning this language, but this experience is not relevant until you apply it to the real production project”. All the arguments that this is an emerging technology, it’s not used in enterprise development right now were ignored as irrelevant: “it’s your job to find the opportunity to use the technologies you are learning”. Experts do not care whether you’re working hard every day to become a better developer or not. It’s irrelevant.
The second one. The candidate is getting promoted to a senior title. The candidate is a strong developer who focuses on back-end development, scaling, cloud, performance optimizations. During the session, experts ask a lot of soft-skill-related questions regarding team management, team task scheduling, and assignment, risk management, etc. As a result, the candidate receives very negative feedback and leaves the company. It is important to understand that in this company there are lead and team lead job titles with the focus on team and people management respectively. Why did experts think that it would be a great idea to deeply dive into team management questions with a person who by design couldn’t have relevant experience?
The third one. The candidate is an Angular expert with a focus on system design and memory management. The entire session was full of questions related to architectural issues and system design improvements. The candidate received mostly positive feedback with a note that his Angular skills are questionable. But the problem is that nobody even tried to ask Angular-related questions.
Possible solution: experts should pass some sort of certification program, they should be trained to do their job properly, and ask good questions based on the candidate’s experience. Some sort of rating system would be helpful and if the expert’s rating is dropping below the threshold he is blocked.
I’ve already mentioned that conducting an interview is a skill that you need to train. It’s not a surprise that passing an interview is a skill too.
Unfortunately during my career, I’ve faced a lot of false-negative and false-positive promotion interview results. Let’s dive deeper into these two categories.
When I’m saying that promotion recommendation is a false-negative I mean that person is a great specialist. The candidate proved it by working in a team on a real project. The candidate has diverse experience and deep expertise in several areas. But the problem is that a lot of developers are not really great at presenting themselves, they have issues properly describing their achievements. Great engineers are very focused on the problem and not really interested in recognition. They can easily crack the technical interview, but promotion interview is not a technical interview, during self-introduction and presentation of your own achievements are very important parts. Consequences for the company, in this case, are the person’s demotivation, the person’s performance degradation (no need to work harder if it’s not recognized), the person leaving the company.
There is the other side of the coin, of course – false-positive results. The person is a mediocre developer but presents himself as an outstanding architect, problem solver, and leader. You can bring down such a person quite easily during the technical interview, but as I said already promotion interview is not a technical interview. As a result, such a person will get promoted, and probably the next team will have problems with that person because he is not able to handle problems required from his new job description. Consequences for the company, in this case, depend on the business. If we are talking about the “service” company then the consequences are reputational mostly. The customer won’t be happy to overpay for mediocre specialists. If we are talking about the “product” company the risks are higher: critical issues in production, exceeded deadlines, etc. Also for both of these cases, there is a chance of team demotivation. People are not really happy when a specialist who doesn’t really deserve it gets a promotion.
Possible improvement: technical part is mandatory for promotion, whether it’s some sort of whiteboarding, designing the system, or an online coding session. This will at least minimize the risks of false-positive feedback. Also, it can reduce the number of false-negative cases because most good engineers will easily pass this part.
I’m not saying that promotion interviews in technology companies should not exist. I’m just saying that implementing the process naively is not the correct way. Most likely the results will not be great: staff turnover, promotion of the wrong people, demotivation, loss of the reputation on the market. Unfortunately, most of the developers I’ve worked with were criticizing the promotion process in their company, saying that they are planning to leave or already left the company. Each process should be improved after every iteration. Today I shared the problems I know about and possible improvements which can be done quite easily.
Thanks a lot for reading! I hope you enjoyed it. If you find this material useful, don’t forget to subscribe and share with your colleagues and friends! Thanks!