Why am I not getting promoted to Senior Engineer?
The senior engineer is a mindset that can be developed by seeing things differently. This article summarises the perspective of a senior engineer, providing insights to help you get promoted to it.
Having strong technical skills isn't the only thing you need to move up in your career. Often, we try to get promotions without changing the way we deal with problems. There might be important aspects we don't notice. It's crucial to find these aspects before trying to solve the problem.
Being a senior engineer is more about a mindset that lets you see and do things differently. You can develop this mindset if you don't have it yet. Taking responsibility is a key factor that will really help you adopt this mindset.
I've noticed some areas where I would have done things differently before aiming for a promotion. These aspects might not directly relate to your situation, but my aim is to encourage a mindset that looks at things from different angles. I have to admit that these few lines might not be enough to achieve that – I'll let you decide.
Not my work
As a junior or mid-level developer, our main focus is often on gaining in-depth knowledge of technology and completing assigned tasks. This mindset can hinder us from openly helping other team members when they ask for assistance in group chats. If we can't prioritise other’s need over our own, we may not be ready for a promotion to a senior level. Unblocking others is a primary responsibility for a senior engineer.
Shall I Speak?
The human brain prefers easy tasks. We avoid putting ourselves in difficult situations. In meetings and open discussions, we often hesitate to share our opinions. This hesitation stems from our brains doing a lot of processing before we speak, fearing being wrong, getting into heated conversations, or being judged. This fear keeps us quiet, becoming a habit that hinders our growth.
As a senior engineer, you need knowledge and logical reasoning in various areas of the project and the technology used. It doesn't have to be right all the time. You should be willing to be vulnerable, sharing different possibilities and ideas. This openness will make your managers trust you more subconsciously.
It's beneficial to silence our brain's unnecessary background processing. This allows you to focus on the discussion and advocate for your work without fear or hesitation. Ultimately, you won't have to ask yourself, "Should I speak or not?"
Can’t Decide
As a software engineer, we encounter numerous challenges on a daily basis. There are several approaches to address these challenges. As a mid-level or junior developer, you often may not be able to make decisions on how to proceed. Instead, you frequently wait for a senior developer to provide guidance.
There could be various reasons for this dependency. It might be the case that you lack essential knowledge of the business, customers, or technologies being used. If you have insufficient knowledge in any of these areas, you may find yourself unable to move forward.
In such circumstances, you can overcome these obstacles by implementing both long-term and short-term strategies. A long-term plan involves investing time to understand the business and mastering the underlying technologies being utilised. On the other hand, a short-term plan includes seeking assistance from individuals who have a better understanding of the system to make immediate progress. Making a daily effort to comprehend use cases and implementation details, even in small increments, can significantly contribute to your ability to navigate challenges.
Alternatives
One problem can have many solutions. As a mid or junior developer, we often consider a few possibilities that work for the current situation. However, short-term solutions may have various consequences, and while they might be easier to implement, they could have a significant impact in the long run. We often fail to compare different possibilities, making it difficult to decide which solution is the best fit for the context.
Senior engineers analyse several options and identify the one that best fits the project's context. This skill is essential because project contexts can vary from one project to another.
What should I do?
There will be times when you don't have a planned task in the backlog. In this situation, you can either wait for a task to be assigned or proactively find something valuable for the project. Most developers choose the first option.
However, senior developers act differently in such situations. They take note of areas for improvement while achieving milestones. Improvements can relate to code quality, performance optimisation, creating coding guidelines, documentation, improving the onboarding process for new hires, or scaling the application. They plan and execute these improvements, considering the business goals.
You can start small when facing such a situation. Don't plan big, and make sure whatever you do adds value to your project.
Initiative
There are plenty of chances to take charge at your job. You don't have to wait for someone else to do it. It doesn't have to be a big thing; it can be as simple as starting a discussion about bugs or organising a meeting to talk about coding standards.
When you take responsibility for your own work, it makes you more valuable to the team. Taking the lead will contribute to your long-term growth. Once you make a habit of taking initiative, it becomes second nature.
As a result, you'll become more knowledgeable about the product, and it will help you make decisions as a senior developer. When you start taking charge of specific areas in your project, your colleagues will trust and collaborate with you more in those areas.
Acceptance
Mistakes are inevitable when working with a team. When we make a mistake, our initial instinct is to avoid owning it and instead hide to protect ourselves. This is because we fear judgment from our colleagues. This fear prevents us from accepting and admitting our mistakes.
Everyone goes through this process. Owning up to mistakes is a mindset that can be cultivated with practice. However, it may be challenging initially, as taking responsibility for our actions can be painful. Over time, it will become easier.
Taking ownership of mistakes makes you more humble and adds motivation to work harder. So, don't be afraid of judgment from others; instead, openly admitting mistakes can help you grow with the support of your colleagues.
Assumption
Not everything will be clear from the start in software development. It takes several iterations to gather enough information to complete a task. In this situation, junior or mid-level software engineers tend to make more assumptions, which is normal. However, assumptions without data backing can lead to significant business losses. It's better to minimise assumptions. If you can't write or explain your assumption to a colleague, then that assumption may not be necessary.
On the other hand, senior developers gather enough data points by collaborating with key stakeholders to support their assumptions. This makes their assumptions more accurate, although not always perfect. If a senior developer makes a wrong assumption, they will re-evaluate their data points through a continuous improvement process to make it more accurate.
Don’t Rush
We often make decisions without analyzing enough. I remember an incident where I made a decision quickly. At first, I decided based on limited information. Later on, I found out that my initial decision was completely opposite to the one I was about to make. I tried to defend the first decision even though it was wrong and did that for a couple of days. Eventually, I decided to propose the second decision based on more information, but even that decision turned out to be incorrect. I was in a dilemma because I hadn't done deep research on the topic I was working on. My colleagues were confused as I changed my decision every other day, which affected their impression of my work.
This event taught me not to rush into making decisions with the team. It's important to take some time, analyze different cases, and ask for help when you don't know much about the feature you are working on.
Ask For Help
When you have a few years of experience, you might have the tendency to fix any problem by yourself without asking for help from anyone. As you gain more experience, that perspective will change.
Early in my career, I used to try to solve everything by myself. I didn’t ask for help from others because I thought that if I did, I wouldn’t be seen as a competitive developer. However, it's not possible to know everything by yourself. You should not be afraid of seeking help from others, even if you are knowledgeable. People might have different ideas that can provide you with a different perspective and feedback on your work. It's also good to make a habit of learning from others' work.
Don't make the wrong assumption that if you ask for help, people will see you as less competitive.
Summary
Even if you don't take away anything else from this article, I recommend coming back during your performance review and carefully considering the points mentioned. You can use them as a reference to discuss why you deserve a promotion.