A path to excel as a senior software engineer (SSE)

Naren Yellavula
Dev bits
Published in
7 min readFeb 19, 2023

--

I see everything in work as a role. All aspiring engineers who are currently in entry or mid-level roles and want to move into higher roles, this is a guide for them to help. This guide can also help newly graduated senior engineers to keep their game up. There are a few skills that software engineers need to become senior engineers and stay sustainable in that role.

Before you go, are you still using Google Docs to store your favourite ChatGPT prompts ? Then, try, Vidura for free:

I have around eight and half years of software development experience working on different domains and technologies. I got a title of Senior Software Engineer (SSE) when I had 4 years of experience in my career. When given a role, it does not mean that you are already experienced in that role, but you are qualified to get the title. Once you have a title, you start gaining experience by working on assigned tasks based on that tole. It is like you can start spending the card and build credit once you are eligible for a credit card.

If I show software career paths as a diagram, it looks like this:

Software hierarchy

As I already spent four and half years of my time in the senior software engineer role, I want to expose few insights that generally nobody talks about excelling at SSE.

The below are the key factors to excel as a senior software engineer. These tips will make you get ready for your next role, whether it is a staff engineer or a principal engineer.

Build emotional intelligence

You might have seen many brilliant people in your life. Out of them, how many have higher emotional intelligence. Not many. Because research suggests there is no correlation between Intelligent Quotient(IQ) and Emotional Quotient (EQ). I myself have relatively low IQ and very low EQ at the beginning of my career. One cannot change IQ, but can certainly work on EQ by resisting the urge of emotions.

Emotional Intelligence(EI) is the one that controls you when you are angry, sad, decides when to appreciate someone, or when to accept a mistake in front of others. In another way, it is also called emotional maturity.

Start building emotional intelligence. As a beginner software engineer, one do not know how to react to situations, but to be a senior engineer, one should obviously detect when emotions are interfering with work-related decisions.

Some of the examples are:

  1. Appreciate and accept when your peers get promoted
  2. Don’t take anything personal, it means see a praise or blame to your role, but not to you as a person. Remember, you are always bigger than your role.

Develop emotional intelligence by calming down at a tensed time, appreciating where the respect is due, apologizing when there is a mistake

Think before you talk, type, or act

Never jump to conclusions at work. Also, don’t act based on vague assumptions. Some of the mistakes I did in the beginning of my career is to commit to work without estimating the work properly. Poor estimation almost always causes either an under-delivery or over-delivery of work, which doesn’t make you looks professional in front of others.

To avoid such problems, one should think and does a fact-check before replying any question or giving an estimation. Sometimes spelling mistakes in work messages show that you are either not good at English or in a hurry. Why to give away that information to your peers, or managers, when you can take a step back and type slow.

Whenever you are assigned with some work, don’t rush at finishing it. Instead, make a planning task, even it is a simple assignment. These habits can be a godsend when you handle complex tasks.

Always backup data when you do a migration, pause for ten seconds when you stop a server, or do any destructive change

Get out of your comfort zone

Getting out of your comfort zone is the one prime thing you should keep on doing in your senior software engineer role. It is because of the freedom one gets compared to junior engineers. A junior engineer is always engaged in a process to overcome software bugs, understanding stack traces, and writing code. For a senior engineer, writing code and fixing bugs comes naturally with previous experience. Another reason not to worry about experimenting new things is you might discover your passion in the process. You navigate in the paths that haven’t explored before.

Pushing yourself away from comfort is the recipe of growth in every aspect of life (not only software development). And, growth in the context of software development is about gaining experience and being qualified for the next level. Whether giving a presentation before a large audience or switching your regular work timings or teams, it is a good opportunity to forego comfort and grow. Never ignore door-knocking opportunities due to comfort. Lost opportunities will hurt your future if you think they are too challenging to embrace.

Some of the examples of getting out of comfort zone are, moving between teams, working on a different project, letting fellow developers to modify your code and design.

Comfort means stagnation. Worry if you are too comfortable at your current position

Nail what you can control at work

There are two things one can do without least chance of failure at work:

  1. Arriving early to scheduled meetings
  2. Prepare for the meeting (10–15 minutes)

Arriving early to work meetings shows that you can do better at what you can control at work. It makes you look professional when compared to others who arrive late. There are uncontrollable things at work too. Like handling critical incidents or writing bug-free code. People rarely judge your performance in uncontrollable things, but do notice when you can’t nail controllable things.

Now, preparing for a work meeting is as important as attending the meeting. Why? There are many benefits. First, one can understand the context and questions in meeting better by preparation. Second, they can also ask questions by recollecting any recently reviewed facts. Finally, preparation also shows importance towards other’s time by pre-allocating your time.

Who will take you seriously if you can’t take yourself serious ?

Ignorance leads to error

Not having enough information at hand can cause errors in judgement and prediction at work. Some of the examples are :

  1. Somebody placed a rope at the entrance of your room and you don’t know it. The entrance hall is semi-dark, and from distance you thought it is a snake. Being panicked, you raise an alarm. It is an error caused by not knowing there is a rope.
  2. Someone on your team proposes an API of a service. You like the idea, but do not know that other services are dependent on prior service. You could easily break dependent services if that change is not backward compatible. It is another possible error that an engineer can make.

Not working on ignorance is like training an Artificial Intelligence (AI) model on a very small dataset and expect 100% accurate predictions on test data. Whenever you make an error while working, look for gaps in your knowledge those caused the error. Find documentation if possible, otherwise document it yourself.

Errors generally happen due to a combination of ignorance and casualness

Keep working on your ideas

There are two kinds of engineers:

  1. One who constantly shoots new project ideas in team but won’t show dedication to work in long run.
  2. One who raises few ideas but works on them for longer periods of time and makes the team either adopt it or archive it.

As you already know, the second type is important to an organization. Having an idea bucket with many philosophical ideas has less value than one working idea. So be the second kind, pitch fewer ideas, incrementally work on them, show results to your peers and managers, get more support from results, and improve your idea further. Don’t give up when you hit a road block. Just come up with a different approach, or talk to people who can make it happen.

Don’t stop incrementally working on your single idea despite initial setbacks

Balance breadth and depth in skills and knowledge

As you work as a senior software engineer, try to obtain a right balance between breadth and depth in skills and knowledge. We can break down breadth into multiple dimensions. Each dimension can have enough depth in it, like below:

  • Projects you are working (Project A, Project B, Project C)
  • Technologies you are working with (Java, Terraform, Kubernetes, Postgres)
  • Type of work you are doing (Software development, data engineering, platform engineering)
illustration of sample depth and breadth

Don’t focus solely on either breadth or depth. Review your knowledge in regularly to invest future efforts covering skill gaps.

Conclusion

These tips can aid you in gaining experience as a senior software engineer. There could be many others which I am not aware of, if you know some, please feel free to leave a comment.

Note: If you are a parent and looking to train your kid in Python, checkout:
https://happy-pythonist.com

Thanks for reading this article.

References:

--

--