Karl Hughes

Becoming a Senior Software Engineer

Becoming a Senior Software Engineer

I used to speak regularly at many of the Chicago-area coding bootcamps and one of the common questions that students posed to me was, “How can I become a ‘senior software engineer’?”

I’ve seen versions of this question countless times on forums and Reddit threads as well, and I suspect it’s because many readers think their careers will just get easier if they have had “senior engineer” in their title.

On the other hand, companies give out this title somewhat arbitrarily.

A few years ago, I caught up with a former student who had just graduated from a bootcamp 3 years ago and had just received his first “senior software engineer” position. While I’m sure he was a standout employee, three years seems like an extremely short road to a title like that.

The truth is that there’s no accepted definition or benchmark that universally makes you a senior engineer-it might take you 3 years at some companies and 15 at others-but I do have some thoughts on this question.

In this piece, I’ll explore the four paths I’ve seen most engineers take to become senior engineers. Along the way, I’ll share some of the skills and benchmarks you might need to hit to get there yourself.

Path 1: Job-Hopping

By far, the most common way engineers get a senior engineer title the fastest is by job-hopping. Whether you do this by perfecting the art of leetcode or networking your way in, the sad truth of our industry is that by jumping ship every two to three years, you will maximize your salary and job titles the quickest.

Early in your career, this hopping around is also good for perspective. You’ll get to see a lot of different code bases, management styles, and team compositions while moving up the ladder every couple of years. Some recruiters (mostly the ones with your employers’ interest in mind) will tell you to be careful that you don’t develop a reputation, but in the first 5-6 years of your career, these short stints are normal.

With some experience and a variety of cultures under your belt, you can start to slow these hops down at some point. I tend to see the most senior engineering leaders staying for 5-10 years, which gives them enough time to run several big projects, get a promotion or two, and decide if they want to stay put or move on again.

Job-hopping can help you get the senior software engineer title faster

Path 2: Grind it Out

Job-hopping isn’t for everyone and truthfully, if you find a really great boss and fair employer, you don’t need to move just because you’ve been there for a couple years. Many companies have career ladders that will give you a direct path to become a senior engineer without needing to look outside.

Unfortunately, companies tend to take advantage of long-time employees who don’t push for promotions, so you might get stuck in a situation where you’re doing bigger jobs than your title (or paycheck) would imply. If this happens to you, talk to your boss. Figure out what the roadmap is like to get you to your next role and if the company really wants to keep you, they’ll make a path clear.

There are plenty of examples of engineers who spend 5-10 years in a single company to earn a senior engineer title. That said, this path is usually a bit slower.

It's possible to spend 5-10 years somewhere to get a senior software engineer title

Path 3: Startups or Self-Employment

I’ve met many senior engineers who gave themselves a promotion by being self-employed first. Whether as a consultant, agency owner, early employee, or startup founder, you can become a senior engineer by taking your own journey into entrepreneurship.

I’ll admit, this isn’t extremely common, but in the entrepreneurial circles I run with, close to half my friends have joined or co-founded a startup at some point in their career, so I know this path exists.

Joining a startup can be a great boost to your engineering career, but you also have to consider the downsides. It’s not likely to make you wealthy quickly and the broad experience you get might not transfer to the narrow job specs that large employers want. Still, I found being a startup engineer a great way to quickly progress and many of my coworkers did too.

Startups or self-employment can boost your career

Path 4: Education

A graduate degree in computer science, computer engineering, or something similar could help get you closer to a senior engineering position, but it comes at a cost.

This seems like the least common path these days, likely because of the cost of college (both in raw numbers and opportunity cost) and the speed at which the industry moves. Graduate computer science degrees might prepare you to be the best at a very narrow part of the field, but if that niche falls out of favor, you might find yourself in an awkward position career-wise.

A coding bootcamp, on the other hand, will not help you get closer to a senior software engineering role. Coding bootcamps are now seen as a sign of a junior engineer, so if you’re self-taught and looking to level up, skip the bootcamp. It’s not going to make your resume look any better.

Grad school can help you become a senior engineer, but it comes at a cost

The Skills You Need to Become a Senior Engineer

Regardless of the path you take, there are some skills I’ve found all senior software engineers possess. It’s hard to say where the correlation/causation line is, but I suspect that most companies look for some degree of all these things when considering senior engineering promotions.

1. Communication

As a senior engineer, you’ll be expected to communicate more with early-career engineers, managers, and stakeholders than you did in previous roles. Because you’ll have more knowledge about the system and technology than many of your peers, you’ll be able to speak to the important considerations that decision-makers need to weigh.

Likely, this will require some combination of writing and speaking skills.

2. Multiple Programming Languages/Frameworks

I don’t know if senior software engineers tend to know more languages or if this is really a requisite skill, but I do think that knowing multiple programming languages gives you a broader base of experience and a more dynamic skillset. I’ve learned a lot by trying new languages and taking the patterns they use back to my codebase.

The good news is that learning new programming languages gets easier after your first two. I found that after learning PHP and JavaScript, Python and Ruby were relatively easy to understand.

3. Debugging Skills

Senior engineers tend to be the go-to debuggers.

While they can be important for building new features, they’re also usually the developers with the best debugging skills and most complete understanding of the entire system. This allows senior engineers to add value by helping other engineers get “unstuck.”

If you want to get good at debugging, read more code, learn to use observability tools, and don’t shy away from fixing bugs. This is an essential skill for senior engineers to have.

4. Time Management

Most people are terrible at long-term estimates, but senior engineers tend to at least be better at understanding their short-term capacity. They also tend to expect the unexpected better than early-career engineers.

I’ve met some senior engineers who weren’t great with time management, but it often held them back at a certain point. Because they’re senior, they have more visibility and are a larger line item in the team’s budget. This means more eyes watching their performance and productivity.

5. Understanding Tradeoffs

A lot of engineers early in their careers are too dogmatic. They believe things like:

  • “microservices are always a good choice”
  • “100% test coverage is essential”
  • “MongoDB scales better than PostgreSQL”

A senior engineer will almost always understand that every tech decision is about tradeoffs. There are very few answers that are always right, but senior engineers will know when to pick one path over another.

Learn to make both sides of important arguments and pay attention to the business needs instead of just the technical needs of each project.

Create Your Own Path

Regardless of your background, the paths I’ve seen, or the skills above, there are a lot of ways to earn a senior software engineer title. Take your own path, but find mentors, read books, and be proactive in your career. No matter how great your boss is, it’s ultimately your responsibility to keep your career moving forward.

Finally, let me know if you have questions. I’m always happy to share my experience if it can help.

Read more like this in Software Engineering