But first, let me talk to you about a situation that may sound familiar to you.
For the past five years, I have struggled a lot. My main goal was to become a "senior" engineer, but I did not know how. I was left searching for the door that leads to the upper levels, with the lights off and the knob nowhere to be found. I stumbled from tutorial to book, trying to find the knowledge missing for that seemingly big jump. A couple of years passed without any improvement to showcase, except for some certificates and a long list of tutorials half finished. My coding skills getting better was not enough to give me the promotion.
What I failed to realize is that being a senior, or put differently, excelling in your career as a software engineer is not about writing better code. It is about adding more value to the company you work for.
You still need to deliver clean, good code to get promoted to higher levels, but more important than your coding skills, is the way you try to solve the business problems. You need to be methodical and pragmatic in your solution. You need to focus on delivering value instead of just delivering lines of code. Your job is not to provide the best function ever written (if you do along the way, great!) but to solve the real-life problem of a user.
Observing the high-level engineers, made me realize my wrong assumptions. I was focusing on the next framework that was released and how to do "cool things" with it, missing the real objective.
This eye-opening realization showed me the path to the next level. And soon enough I was able to extract these 3 mindsets that were common across the top valuable players in any company I worked with.
Learn the product and the value you can add
When you join a new company, focus on learning the product. Try to learn the existing capabilities and be fluent in them. Ask questions and get involved in conversations that shape the features. Spend time to understand who are you building that platform for and do not get lost on the technical side of your job.
In every company I have worked for, it is a prerequisite to know the product if you want to move to the higher levels. You are no longer a task-doer, you are a valuable member of a team that builds a product. Being a key player means you can improve the product in a way that affects the end users. And to do that you need to know the product well.
More code ≠ better solution
Your goal is not to code, your goal is to add value to the end users of the app you build. Sometimes solutions require no code at all. And quite often there is a feature already implemented to offer the solution you are looking for. There will be situations in which you, as a person who knows well the product they work on, can offer an alternative based on the app's current capabilities. You should be able to show the user what need.
I have stopped jumping straight to the code or to the analysis of a new feature when I get product requirements in my hands. Converting the product knowledge into a solution is my goal. Viewing what the user needs in the big picture leads me to suggest a better solution, or at least to stir the ship toward it. Coding alone cannot solve all the problems of a company!
Everything that shines is not gold
Every new framework is not the best thing since sliced bread. They are amazing tools and the people behind them are top. You, as an engineer, are called to use the best tool to solve the problem at hand. Your job is to deliver what is needed and meet the qualities required. You need to hold yourself back from these shiny toys we have in front of us. Maybe you do not need to use async procedures just because they exist. Or maybe a good old relational database is good enough for what you want to achieve.
This is almost obvious in any other profession where shiny toys do not exist in abundance. For a writer, the device they type their work in is not important. The pen they hold is not the goal, but the means to meet the goal. You should be like that, focus on the value you try to add.
To sum up
Trying to make the jump to the higher levels requires you to be a key player. You need to be adding value to the product and make it visible for anyone to see. Be interested in the product and the users, directing your focus on the problem you solve and not the code you write.