Career progression is high on the agenda for most employees. Software Engineers are no different and becoming a ‘Senior’ is the natural first step for many. To do this effectively, companies need to offer a clear, structured guide to enable them to improve and achieve their personal goals.
From the company’s perspective, it’s vital for engineering teams to be constantly striving to improve and evolve; therefore, it’s important for the managers to set out what’s expected and work with individuals to get to that level. More companies than ever are implementing formal Career Frameworks, setting out in black and white clear expectations and responsibilities from which individual plans can be made to guide engineers in their career growth.
Senior as a title is ambiguous, highly nuanced, and only quantifiable within the sphere of its immediate surroundings. It needs context to make it more meaningful and useful in a wider setting.
There are many different factors that determine what a Senior Software Engineer looks like in the modern technology landscape and, whilst every tech business will have an idea of what Senior means for them, there are a number of qualities that are largely universal and that’s what this article will explore…
Whilst years of experience may seem like a clear indicator of seniority, there is much more to a Senior Software Engineer than how long they have spent coding. Those looking to make a hire will agree it is the impact that an Engineer has made. “Impact” is a common buzzword used by hiring managers and an interview process should provide Engineers with an opportunity for them to demonstrate this. Impact can be made in many ways – Leading the design/architecture on complex problems; owning a project from end-to-end; introducing new processes or technologies; mentoring and sharing knowledge or working outside of their immediate team/discipline on wider organizational initiatives. All of these indicate the necessary depth and breadth of knowledge to be considered a Senior.
Owning Projects & Problem Solving 🧩
A Senior Software Engineer will often be expected to have taken ownership over a project or projects. This will likely involve scoping out work and prioritising this in line with team/company goals. They would also be expected to own the project from end-to-end, leading discussions during sprint planning. A significant degree of autonomy comes with being a Senior and they would be expected to work with minimal supervision from their Manager, potentially only checking in during bi-weekly sprint planning meetings.
There is an expectation that they will lead on solutions to the most complex, real-world problems satisfying not only technical requirements but aligning them with business goals and overall company strategy. This is where a Mid-Level engineer may struggle during the interview process when compared to a Senior, as they will perhaps lack exposure to complex systems, and will have had less opportunity to take ownership over projects. We are seeing more tech companies adopting formal career frameworks to clearly benchmark what’s expected at the different levels Mid-level and Senior hires. This is often reflected in the interview process where the systems design element is key when assessing the depth of expertise of a Senior but deemed to lack value/relevance for a Mid-Level due to their relative lack of experience.
Product Mindset 💭
“Product Mindset” is another buzzword but what does that really mean? A Senior needs to be comfortable working with peers in other disciplines, especially Product who will help them shape a technical solution in line with the product strategy. A product-engineering mindset necessitates putting the customer first in the decision-making process, so a Senior will have the experience to identify issues and provide solutions that will directly impact the customer in a positive manner.
Experience working cross-functionally will certainly help and a Senior will likely have worked in a ‘T-shape’ environment, collaborating outside of their direct team with other disciplines, especially Product, to improve all aspects of the product. There is likely to be a Product Owner or Manager working with most engineering teams and a Senior will play a big part in effectively translating the product strategy into clear ideas for the engineering function.
Guiding and Mentoring 🤝
A Senior Software Engineer may be an individual contributor; however, they play a very important role mentoring other engineers. Whether through pairing, code reviews, working on solutions together, discussing technical decisions or ways of working, this knowledge sharing is a vital part of a Senior’s role as they have responsibility to coach and develop the other Engineers in the team and, therefore, the team as a whole.
Proactivity and Leadership 💡
Irrespective of the years of experience in their chosen field, a Senior will be expected to demonstrate Leadership qualities. This includes being proactive and not simply waiting to be given tasks to complete. A Senior should be constantly looking to improve the systems they’re working on and even other parts of the platform that they interact with. This could be making technical improvements which improve scalability and performance or usability and reliability or it could be introducing new processes which improve how the team(s) deliver quality products in good time.
Communication is a vital skill for a Senior as they will be expected to lead within their team, clearly outlining what their goals are and working through any issues in achieving that. They will need to influence outside of their immediate team to suggest initiatives that can improve things at a wider organizational level, getting buy in from different teams/disciplines to achieve consensus on delivering something truly impactful.
Technical Decisions 🛠
Technical decision-making is a vital part of a Senior’s remit. They are likely to be responsible for the day-to-day decisions of how to solve the problems at hand and they need to have the breadth of knowledge to consider aspects beyond software (here’s the ‘T-shape’ again) and to ensure that they are aligned to the overall business goals. It’s vital that a Senior is able to juggle the pros and cons of each decision and has the business understanding to consider the trade-offs.
This last point is particularly important in systems design interviews – Not only what decisions did they make but why? A Senior should have the confidence (backed by research and knowledge!) to introduce new technologies that they believe will improve the systems they are working on. Finding the time to build proof of concepts and being able to present these to the appropriate decision-makers, is a clear indication that they have the right mindset to be considered a Senior.
There is no one skill that makes a Senior Software Engineer. As discussed at the outset, the impact an Engineer has on their team and the wider organization is probably the key factor is assessing whether they will be considered a Senior in the market. This impact can be achieved in a number of ways; however, a Senior is likely to be able to demonstrate why they are a Senior in more than one way and once they are able to exhibit experience across a multitude of these areas, especially working across more than one team, then they’re ready to step into a Staff or Principal Engineer role… but that’s another article!