How to reach the Senior Software Engineer level

This time I want to share my view about the Senior Software Engineer path.

What is Software Engineering?

According to wikipedia: Software Engineering is an engineering-based approach to software development. A software Engineer is a person who applies the engineering design process to design, develop, test, maintain, and evaluate computer software.

And by engineering design process: It is a decision-making process (often iterative) in which the basic sciences, mathematics, and engineering sciences are applied to convert resources optimally to meet a stated objective.

What is a Senior?

According to the Cambridge Dictionary. Senior adjective in English means: high or higher in rank or older.

What is a Senior Engineer according to the Tech industry?

It’s not a standard in the industry. So, it depends on the company consensus about what a Senior Engineer is. For example, between job offers we can see very different concepts:

  • A person with, at least, 3,4,5, 8, or 10 years of working experience. The older the better, like the wines.
  • Expert in some tools, for example, Senior Android Developer.
  • Expert in some domain, for example, Senior Fintech Engineer.
  • An autonomous worker who can complete alone tasks or projects, without requiring much guidance.
  • A person who can mentor junior developers.
  • A person who supervises others work reviewing pull requests.
  • A person with superior ability to search on Stack Overflow.
  • A magic level 100 wizard who can control the space and time of the industry and can fill every single requirement in the 1000 list of requirements of the ChatGPT-generated job offer.

A more accurate definition of Seniority:

There are many different definitions on the internet, but a very interesting definition was made by Felix Lopez, which includes topics like:

  • Rise the hand up when there is a problem and take accountability that a solution is going to be done, even when it will not be completed by yourself.
  • Daily work does not sacrifice the quality standards, the focus, etc.
  • Mentor people with less knowledge and help them to grow.
  • Understand why we do what we do.
  • Understand the impact of actions in the short and long term.
  • The ability to make tradeoffs among decisions, understanding the consequences, not taking decisions because something is fashionable.
  • Solve conflicts without a Manager’s intervention.
  • Deal with problems in a constructive way. Knowing when to give the wrong feedback will not contribute to improve things, it will only create more friction.
  • Asking why we do what we do. (Critical thinking)
  • Do not think only about the technical aspect of making decisions, also take into account the business strategy of the company.
  • Defend your opinions with arguments if you think it is the correct one, but take into account that you can be wrong. Giving space to others’ opinions or even, understanding that the company’s needs and decisions can say something different from what you think. The importance of expressing your ideas, even if they are against the CTO/CEO etc.
  • Build relations with other teams.
  • “Seniority and impact on a company are not about how much work depends on you; they’re about how productive and effective you can make the people that work with you.” “some people tend to centralize knowledge and ownership.”

My current definition of Senior Engineer:

My current definition: “The Engineer who can lead a project by making the team take the best decisions based on lessons learned through experience and knowledge.”.

Core abilities:

  • Alignment with company and team business strategy and goals.
  • Alignment with company and team technical strategy and goals.
  • Ability to prioritize core actions, based on impact and urgency.
  • Ability to deal with the uncertainty of a project, explore and design solutions, compare the solutions, and produce a detailed action plan. For the team, you should be the “icebreaker”.
  • Profesional maturity and empathy when interacting with different actors. (Other teams, stakeholders, clients, newcomer developers, third parties. etc).
  • Ability to empower the team, by boosting the team’s productivity, professional and personal development. This includes mentorship to other developers, and give feedback, in all directions.
  • Ability to roll up your sleeves and fix the problem that no one can fix. (printers are not included here)
  • Ability to select the right fights, instead of trying to change everything at the same time.
  • Ability to apply “the experience bullet” to not repeat the same errors. Not only in code but also at project’s level.
  • Ability to split the problem from the solution.
  • Ability to have the courage to say that something or someone is not aligned in the same direction as the rest.
  • High sensitivity for the quality code.
  • Ability to deliver, efficient and secure solutions.
  • Ability to be time-efficient, using effective communication and avoiding unnecessary meetings.
  • Ability to transmit clear opinions and arguments with confidence.
  • Ability to be pragmatic, and detection of over-engineering approaches.
  • High user empathy.
  • Ability to ask powerful questions.
  • Enough brain tools to be competent in a new technology in a short period.
  • No fear of change.
  • Ability to have determination and high proactivity during critical situations like production fires.

And when we talk about expertise level:

  • Proven track record in a certain domain.
  • Proven track record of working with a certain technology.

I add to the lists all the important skills that seem cool relevant to me and update them over time.

When can I be considered a Senior Engineer?

As you probably noticed, this is not like the Pokémon journey, where you get recognition by defeating gym leaders one by one, getting badges, and then becoming the Pokémon League Champion. It will depend on many factors and individual-specific circumstances like your personal track record or the company career structure.

  • You could be considered Senior for some companies, but not for others with a different career path and requirements.

  • You could be considered Senior for some part of the industry in a specific area, but not in others, like frontend Senior Engineer instead of backend Senior Engineer.

The process can be split it into 4 phases:

Phase 1: The Transition to Senior

Do you want to be a Senior? Do you think you can be a Senior? In general, promotion is the natural way an Engineer becomes Senior.

Assuming you are an established Engineer, to reach a Senior title, you should meet all the company’s requirements. The fastest path to do this is to try to “be the best Engineer in the company“. Being among the best will give you more chances of being promoted.

  • Professional experience is not equal to time worked. It is the product of a set of situations to which you have been exposed, the decisions you have been able to make, the impact you have been able to measure, and the lessons you have been able to learn.
  • There are no magic formulas or methods that allow you to skip steps.

But, you can optimize your time and effort if you combine knowledge, learning, hard work and strategy. My advices to boost this are:

  • Ask for feedback from leads or other Engineers of higher ranks, not necessarily in the same company.

  • Build your first Senior Engineer definition, taking into account the company’s definition of Senior in the career path, if exists. This is the best way to meet expectations.

  • Use a work-log and evidence your work.

  • You need an ally. Work and collaborate with your manager on your career path. He can help you take specific actions to progress.

What to do if I do not get promoted

To be promoted some things need to match: The company needs a Senior and you demonstrated the right potential to become a Senior. This phase can be tricky, and frustration may appear here if there is no bidirectional intention to promote an Engineer:

  • The company needs a Senior and promotes an Engineer, but the candidate is not ready to assume the Senior role, or just does not want more responsibilities.
  • The Engineer is ready and motivated to start the Senior path, but the company cannot promote the Engineer. Maybe because the budget is not enough or because the organization structure quota does not allow more Seniors on the same team.

On the other hand, once you have demonstrated all the required skills as an Engineer by evidencing your contributions and skills in several projects, and also demonstrated your potential as a Senior, promotion should take place, and the coronation ceremony BIG DAY will come. Congratulations 🎉. Good luck.

But, if despite your efforts, and even if you explicitly reported this concern to the team Managers and there is no intention from the company to promote, maybe you are missing something.

Maybe you are not using the same metrics to measure your progress and impact as the company. Or maybe, some reasons are out of your manager’s control. Remember that ranks and job titles are based on consideration of the companies and individuals.

💡 Many times in life we let others decide how is our level, for example in programming or in football. Notice that feedback can also be influenced or contextualized, and the conception of your own skills could be biased. See the Impostor syndrome. But if you value your effort, you should make the tradeoff between the feedback you receive and what honestly you believe your value is.

If you shoot all your bullets, consider if the current team/project/company is the right context where this transition may take place. Sometimes, the problem is just being in the wrong context:

💡 Have the courage to change places and go to a place where you are given the value you deserve. The value of a bottle of water

Phase 2: The Senior Realization

Became Senior implies a few things:

Expectations

The expectations of your work change. Notice that the company now will pay for a different kind of service, and expects a different kind of results. It’s important to understand these expectations.

This has a direct impact on your daily work. If you feel that your daily work hasn’t changed and you do the same but now you have the Senior title, I’m sorry to inform you that you are still at phase 1.

Understand why the team needs a Senior. And how your work impacts the team’s productivity, the product, and in the company.

To start your journey as a Senior you should “be the Senior that the team needs“.

Reponsability

The reponsability increases. Maybe you did not sign any new clause in your contract, but now you are the Senior of a team.

When you interact with stakeholders, now you respond as a Senior in the name of the team, and certain confidence is expected. Also, less experienced Engineers and Managers expect certain guidance when dealing with problems, especially in critical situations. You have to be there.

💡 Do not confuse this with assuming all the individual failures are under your shoulders: The Recipe for Successful Leadership: Take all the Blame and Give the Credit to Others

Salary

Your salary will be increased. Now your time has more value, from the software economics perspective.

Believe it

If you do not visualize yourself as a Senior, and you do not believe in yourself. You will continue working as an Engineer. Start by changing your email signature title :).

Phase 3: The Senior Consolidation

To reach consolidation you need to Progress in your Seniority skills.

  • A Senior Engineer acts more as a team booster rather than an individual contributor.

  • Seniority is more about situational skills or soft skills than technical knowledge. Technical excellence and quality code are assumed.

  • Technical expertise can be archived alone, but soft skills not. You can practice Katas, pet projects, complete certifications, or whatever else and improve your technical expertise in any technology alone. But soft skills need people and situations to be grown.

  • Treat projects as opportunities to grow skills, only some of them, not all. And to treat the team members as aliases to boost using Seniority skills.

💡 This could be helpful for some skills: Fake it till you Make it

If you think you completed this phase, take a moment to rebuild your definition of Senior Engineer, and fill your gaps.

How to measure Seniority?

Notice that everyone’s daily behavior is variant, cause we all have more things in life than work that affect our state and energy like family, responsibilities, worries, sleep, etc. We all have good and bad days, even good and bad periods. So it’s not trivial to measure Seniority and progress by one single action in one single day.

You cannot demonstrate or use all the mentioned skills of a Senior every day or in every project.

It’s important to detect the opportunities in the day-by-day work. To measure progress is important to track the situations and the actions to evidence your work and capabilities. I recommend to use a work-log.

Phase 4: Ok, I’m a Senior, What’s next?

At this point, you should explore what is next in an Engineering career. You should open your scope and not only see the current company but also explore at the industry level.

Like in phase 1, I will suggest trying to “Be the best Senior in the company“ to continue progressing.

Many Senior Engineers end up as Managers, others are promoted as Tech Leads, Staff Engineers, CTOs and others just stay on the Senior path. The decision is very personal, but once you have decided on the path, go for it.

Some ussefull content: