Mastering the role of a senior software engineer
In recent years I have seen a lot of articles on how to become a senior software engineer quickly. These articles usually provide some advice (very often, a list of steps) that you need to follow to finally become a senior engineer. However, I believe there is something inherently wrong with this type of advice – because I think they are often confusing the title of senior engineer with being one.
While having such a title is certainly fine, keep in mind that the senior software engineer in one company does not translate to a senior engineer in another company. Different companies have different career frameworks with varying number of levels and vast differences between the requirements for each level. What further complicates the issue is title inflation. This is a situation where people are promoted to a new position, but this promotion is usually not followed by adjusting the responsibilities and requirements associated with the new position accordingly. This is especially problematic, because it creates a false sense of career progression. Oh, and let’s not forget that the opposite also exists! People who do not have the title of a senior software engineer but everyone in their organisation recognises them for their contributions.
Obviously, titles do mean something, but they can be misleading for various reasons. Most importantly, titles can be acquired quickly (by promotion or “job hopping”); however, building real experience (in any area) takes time. But if we set titles aside, how do we recognise experienced engineers? Usually, when people describe someone as experienced (regardless of the profession), they often use the following criteria: years of experience and knowledge of the specific subject matter. However, even this can be misleading, and I’ll explain why.
Relevant experience
Years of experience mean little if it’s “one year of experience, repeated 10 times”. This means that the person spent a lot of time doing the same thing(s), without any progression or taking on any new responsibilities. This person has “years of experience” on paper, but true experience is very limited.
Extensive knowledge
When it comes to knowledge, having a lot of knowledge about a specific topic(s) is always good. However, someone being a domain expert does not necessarily mean that you can work with this person. Unfortunately, there are some knowledgeable people who have poor work ethics and toxic behaviour. Working with such people can destabilise the whole team and is usually not worth the risk.
Great maturity
Obviously, while years of experience and knowledge are important, they are still not enough if not backed up by a proper attitude towards work in general. And this brings us to the third component, which often gets left out when seniority is being discussed: maturity. Being mature implies reaching a certain level of mental and emotional development. It is reflected in the way this person deals with various things at work (but also in life). I do not believe that any engineer can be truly senior without this component.
But how do we recognise maturity? Are there any signs, clues or behaviours that we can observe? I believe there are. Below you will find several examples of how a senior software engineer might approach some common situations at work. There are many other examples, but I have tried to focus on the most important ones and describe the impact that the behaviour of the engineer will have on the rest of the team.
Day-to-day work
A senior engineer has an important role when it comes to defining the process and the various procedures. He can help optimise day-to-day work, by identifying or eliminating bottlenecks, time-consuming steps or unnecessary phases. He can also set the guidelines for the code review, runbooks, documentation or design documentation and in general, help the team with organising the internal knowledge base. And on top of that, a senior software engineer should always respect the defined process, reminding other team members to do the same (if that’s not the case). This is very important, because observing how the team works and improving where necessary will result in the team achieving more and people being more satisfied with the work they do.
Unfortunately, there are engineers who use their seniority as an excuse to do things their own way. Sometimes, even work only on things they think are important (or interesting). While you might have to break a few rules in some very specific situation, doing this all the time is damaging. This is because it sends the message that certain people are above the rules, and it defeats the purpose of working in a team in the first place. A good senior software engineer doesn’t just do whatever he pleases. He helps everyone do their job better and understands that every task has its place, no matter how trivial it may look.
Technical discussions
When participating in technical discussions, a senior engineer should always present arguments for his solutions. He should also recognise good ideas from other team members and help improve them further. Doing something only because someone says so is a bad idea – even worse if that someone is the most experienced member of the team who wants things done his way “just because”. By presenting arguments and reasons for which he believes one solution to be better than the other, the senior software engineer will not only explain his line of reasoning, but also provide a good example to other team members on how to assess (or compare) technical solutions objectively, regardless of who proposed them.
Communication style
For a senior engineer, good communication (both verbal and written) is a must. He must be able to break down complex topics and express his thoughts clearly and concisely. He needs to be aware of the differences in communication style between technical and non-technical people. In addition to this, he should be able to change his approach accordingly. Discussing something with the development team or with higher management is not the same. Both groups will focus on different things with different levels of detail.
Understanding of business
For a senior engineer, it is very important to understand the business and its needs (to a certain extent) and not focus only on the technical aspect. To deliver the best solution, you need to understand the context of the problem you are trying to solve. This means you need some level of understanding of the business domain. This will allow you to tailor your solution to the needs of the customers. It will also have an impact on how to build features (and what features to build). If you avoid doing this, you risk building a technically impressive solution that does not solve the customer’s problems at all.
Handling critical situations
From time to time, your team might have to deal with very serious technical issues – for example, production outages or security breaches – that can even result in monetary loss or reputational damage for the company. It is very important to remain as calm as possible in those situations, to avoid spreading panic or making more mistakes.
This is exactly a situation where an experienced engineer, who might have already dealt with similar problems in the past, can have a calming effect on other team members and support them in multiple ways – from conducting investigations, to taking care of communication, all the time following the procedure defined in your incident runbook (or similar document, if your team has one).
Unfortunately, there are engineers who choose not to do this, mainly because it’s stressful and inconvenient. While that is certainly true, such behaviour sends a very bad signal to the rest of the team, because it shows no professional responsibility and lack of care for the team in general (and if your most experienced colleagues are doing that – then it’s even worse).
Conclusion
Being a senior software engineer comes with a great responsibility. The previous sentence might sound like something from a Spiderman comic book, but the truth is that senior software engineers are role models; they are setting an example for the other team members to follow. With their unique combination of knowledge, skills, experience and maturity – they can have a huge impact on the whole team, as well as the overall team culture. They know it’s not about being a rock star or a ninja, it’s about empowering everyone to do their best work.
However, if technical skills and experience are not backed up by a certain level of maturity and professional responsibility, seniors can set up wrong examples and become even damaging for the team (because people will look at them, whether they like it or not). There are no shortcuts to becoming a senior engineer, because while you can traverse a company’s career matrix rather quickly, you cannot quickly build a mature approach to work (and life, in general). There is always some growing up to do – and it takes time.
Author
Miroslav Lazovic is an experienced software engineer from Belgrade. Over the past 15 years, he worked on many different projects of every size – from small applications to mission-critical services that are used by hundreds of thousands of users on a daily basis, both as a consultant or part of the development team.
Since 2016, he is focused on building and managing high-performing teams and helping people do their best work. He likes discussing various important engineering and management topics – and that’s the main reason for this blog. Besides that, Miroslav has quite a few war-stories to tell and probably far too many books and hobbies. There are also rumours of him being a proficient illustrator, but the origin of these rumours remains a mystery.
– Backend TL@Neon and Dev. Advocate @Holycode
Let’s start achieving excellence together
Get in touch with our experts today to turn your ideas into reality and accelerate business growth.