How to become a senior software engineer

Let’s talk about what a senior software engineer actually is, and how you can actually become one. This is all based on my own perspective from experience in the industry and what I’ve seen at companies as they hire and the kind of engineers they deem to be senior.

It’s about years of experience, but not the way you think

So first of all, yes, seniority means more experience. Which means more time in the industry. That is the obvious answer to what defines a senior software engineer. Cool, video done, thanks for watching!

All right, so it’s not as simple as that. The time in itself is really just a measurement and it’s what can increase the probability of someone being senior. However, if someone has simply built the same kind of website, over and over again, for years, then they will be really good at building that kind of website. But that doesn’t make them, in my eyes, a senior web developer.

Seniority, in itself, means not just a certain level of depth, but a certain level or breadth as well. And what then defines whether if you are senior or not, is not as simple as the number of projects done, the number technologies you’ve used or the number of languages you know. To me, you can say that you are senior when you have the experience enough to make you comfortable in working in pretty much any kind of project in your field.

It’s not just a general definition, it’s contextual

Now that might be a little biased towards software engineering compared to any other kind of field. But to me, that is the most general definition. But that’s just it, that is a general definition, but seniority is also contextual, and it doesn’t have to carry over into other areas of the same industry.

For example, take web development for example. You might have worked on hundreds of website projects, built in both PHP and Node based setups using some CSS preprocessors and even TypeScript. That will make you a senior web developer, because you can jump into pretty much any website project and be comfortable contributing and working in it. But throw that same person into a complicated distributed payments system with 10s of services that manages concurrent writes and is distributed on multiple data centers across the globe, and that person isn’t as senior anymore.

But, if that person were to learn backend programming and the basics of distributed systems. Maybe the person then learns the CI/CD setup they have in the project as well as how they use Docker together with Kubernetes. Maybe even learn how they’ve got the PostgreSQL database distributed on multiple data centers and are still able to provide full ACID properties (not super easy). Then that person has gained a lot of breadth as well as new depth within those new areas, and can now have a role of Senior Software Engineer because of that new experience.

Does the role really matter?

So, now that we know this, does this really matter? Why do you care whether you have a senior role or not? Most of you will probably say because of the salary, because yes, you will have a higher salary if you are a senior compared to a junior, obviously. But what does that actually mean for the company that hires you?

It means that they have higher expectations of you compared to someone with a junior role. Those expectations will definitely differ depending on the company and the role itself, but the biggest difference between the roles is responsibility. You are expected, as someone with more breadth and depth in your experience, to take more responsibility. What that means for a software engineer usually is to take part in the decision making process more, and involve yourself in discussions.

So for example, as part of a team, you are expected to deliver features based on a certain demand from business. Those features might be defined in terms of how they should work, but most likely not which technology to use, or which frameworks or specific implementation details to think about. That’s where the senior role comes in. With the experience of working in these kinds of projects, you are the one that can help the team decide just how to implement a feature in the best way possible.

So, this is important to keep in mind as you strive towards a more senior role in general in your career. That pay raise is not just for the name of the role, or for your fancy technical skills. The pay raise means, just like in most other industries, more responsibilities and higher expectations on you.

So, how do you become a senior software engineer?

As we’ve concluded, it’s not just about years of experience, it’s about what you’ve done in the time you’ve worked. Have you achieved not just depth in one area, but in more than one area? Have you taken responsibilities through making decisions for a project, maybe built a crucial service that makes a product run just as business wish it would? If not, these are some great things to do in order to become a senior software engineer.

Start by getting really good in one area, and if possible, combine that with other areas in order to not just reach depth, but breadth as well. For example, get really good att frontend and building kick-ass UI’s, and combine that by learning how to build API’s and work with databases and how to deploy web applications to the cloud. Now, not only can you build a nice web UI, but you know how to integrate that with data and how to deploy it so that users can use it.

Continue learning new versions of build web UI’s through new technologies, learn new API design standards, learn a new database format and maybe learn how to deploy to an on-premises setup using Circle CI and Kubernetes.

This is in the end, how you not just grow, but how you can truly become a senior software engineer. By gaining both depth, and breadth. Giving you more tools in your toolbelt to use in the next project you are assigned, helping you make better decisions and ultimately, building a better product.

And that’s how I see the senior role, especially in software engineering. In essence, it’s about experience both through depth, and breadth, and taking more responsibility over the work you and your team does.