5 mistakes that can have you stuck at mid senior level as a software engineer
And how to fix them
Every promotion as a software engineer comes with its own challenges, but the promotion from mid-senior to senior engineer is especially hard.
There is a totally different skill set to learn apart from technical skills to bag this promotion, including but not limited to communication skills. You need to rise above just contributing to the code, and start contributing to the team, and in some cases, the organization as a whole.
In this article, I write about 5 mistakes that can prevent you from getting that promotion to senior. I also discuss how you can fix each mistake. Let’s get started.
The mistakes and how to fix them
1. Not being assertive / Never disagreeing with others
A senior engineer is expected to have informed opinions and make critical decisions on technology choices and problem-solving priorities. They are also responsible for defining and upholding standards of engineering excellence.
Doing this requires the courage to hold and express opinions that are contrary to your teammates, and often your manager and senior leadership. If you are uncomfortable disagreeing with others and standing up for your opinions in a group setting, you will never be viewed as a leader.
How to fix this:
If you have a point to make, always speak up at every meeting. Don’t be a silent observer just because you’re uncomfortable speaking up.
Read my article about authentic communication - I suggest several ways to overcome the fear of direct, honest communication here.
Prepare notes before a meeting with your opinion/stance on an issue, so that you aren’t swayed by others’ opinions.
2. Not helping build consensus, bonus: not knowing how to disagree respectfully
Software engineering is a game of decision-making. We make decisions on a daily basis about what problems to solve, what technologies to use, how to use them etc. And to make matters worse, many software engineers have strong opinions. Left unchecked, discussions/arguments between team members can go around in circles with no decision in sight even after they’ve gone on for a long time.
It is a senior engineer’s role to provide structure to these discussions and help the team arrive at a decision based on relevant criteria. Not proactively doing this will hurt your chances of being promoted to senior. It is even worse if you are disrespectful or uncivil to people you don’t agree with.
How to fix this:
To help drive consensus in meetings:
remind everyone of the goal - the problem we’re trying to solve (this sounds obvious but sometimes we genuinely lose sight of the reason we’re arguing)
help others summarize the pros and cons of their opinions
facilitate the conversation so that everyone has a chance to make their point
keep track of all the proposed options and help the team arrive at the best decision based on the relevant constraints / criteria / requirements
Maintain a holistic view of the discussion rather than focusing only on your perspective.
Read my article about disagreeing respectfully.
3. Being too stuck in a corner
It is easy to get stuck in the details of your day-to-day coding work and lose focus of what the team is doing as a whole. But a senior engineer is expected to know what is happening at a high-level with the team’s project so that they can guide the team and the leadership if anything needs to be changed - like technology choices, team process etc.
How to fix this:
Ideally you should be reviewing most, if not all code changes. This is an excellent way of keeping in touch with other people’s work.
Ask to be included in relevant team meetings even if they don’t directly concern your work.
4. Not understanding business context
A senior engineer is expected to advise the team and management on what problems to solve, and how to solve them. How does one make these calls? Based on what matters to the business/customer.
Being stuck in technical details and not understanding the larger business context of your work can seriously limit your ability to make the right calls.
How to fix this:
Always ask “why” when you’re given any work to do. For example, you’re asked to fix the performance of a database query:
Why? - to fix the load time of a webpage that calls it.
Why? - to decrease the bounce rate of the page.
Why? - to increase the chances of making a sale on that page. (This is the business value of the work you’re doing)
Ask to be included in meetings with business stakeholders (e.g customers/clients, colleagues from the business team etc). If this is not possible, spend a lot of time with your PM/TPM understanding the business/customer.
Read my article about communicating efficiently with nontechnical users.
5. Not helping your team grow
Contributing to the growth of other software engineers in your team is not just the responsibility of an engineering manager. Think of it as a partnership between the senior engineer and the manager.
You are ignoring an important aspect of being a senior engineer if you’re not actively working on growing your grow engineers.
How to fix this:
Teach everything you know. Whether it is the larger business context, technical skills or soft skills, teach your team you know via knowledge sessions, writing documents/wikis, or 1/1 mentoring.
You should be catching up 1/1 with other engineers on your team regularly to understand what they’re enjoying vs struggling with. Help wherever you can.
What would you add to this list?
❤️ My favorite things this week
Shameless plug: I made a YouTube video summarizing the productivity book Make Time. I promise it is worth the 8 minutes you will spend watching it!
Super cool you did a Make Time book summary! Thanks for the lessons and looking forward to checking the summary