The Best Software Engineering Career Paths

To be happy at work, understand yourself

Gui Carvalho
Better Programming

--

First, a little bit about me:

I am a software engineer who graduated in computer science 20 years ago and since then have been building software in one way or another. I have worked in all sorts of environments, like small startups, consultancy companies, big companies, launched a few startups over the years, and everything in between. Among many places, I worked for Upstart, Airbnb, and Stripe.

I have seen a lot, and done a lot, and am here to share what I learned with you.

Everyone, at some point, has had to deal with the question: What should I do with my career? What should I aim to achieve?

There are many possible paths, and you can be successful in many of them, but you’ll only be happy at work if you understand yourself.

Know Thyself is a wise, but underrated advice. Different people thrive in different environments, so the first advice is for you to keep examining yourself. Find what makes you tick, what puts you off, and what you’re missing. Chances are, this quest will take you a decade or more, but it’s the only way to get to the promised land.

Also, be aware luck is always present. You can play a perfect strategy to achieve what you want and still come short, and you can sometimes make many mistakes and surpass all your goals. You can’t count on luck, and you must make peace with the risk of it going against you.

Your end-game role

First, you need to figure out what role you want to get. The available options are:

High-level IC (individual contributor) — Staff / Principal / Distinguished engineer.

These positions require strong technical skills and the ability to work well and influence others. If you become one, expect to spend your time collaborating on design docs, mentoring less senior team members, and having meetings with other teams to ensure your projects succeed.

If you succeed, you’ll get a lot of street cred with engineers, large compensation packages, and room to impact the company’s success. High ICs either drive company-wide priorities or create their own projects to improve things.

The downside is the career ladder. After the Staff level, progression is not well defined, and often times it doesn’t exist.

High-level manager —Manager, Director, or VP of engineering

These positions require the whole playbook of soft skills, from working well with others, coaching, managing expectations, building trust, and proactively fixing anything that prevents the team from functioning well. The work is basically just meetings, 1-on-1s, and emails.

If you succeed, you will get a lot of respect and credit for your team’s success, fat compensation packages, and a much longer ladder to climb.

The downside is that each level you climb will be another layer of distance from execution, while you’ll still be responsible for its success. When a large org is not delivering as expected, the leader’s head is one of the first to roll.

Transition to product manager — PM or Senior PM

You might want to consider this if you start finding more enjoyment in thinking about features, customers, and markets than you have to deal with technical details. The work is basically just meetings and emails, but it also includes management work, design discussions, and user research.

If you succeed, people will attribute the products you launch as your creation.

The downsides include you will not make as much money as the previous careers, and that the ladder is also poorly defined after a certain point.

Entrepreneur — CEO or CTO

Launching a startup is a high-risk, high-reward move. You might end up rich, but more likely than not will be poorer than if you stayed in a high-paying job. It is not for the faint of heart, but you might have a calling to do it that won’t stop until you try.

On the positive side, you will learn a lot, and get comfortable doing uncomfortable things, and any high-pressure environment after that will feel like a walk in the park.

On the negative side, it might impact your health, finances, and relationships.

Company Type

Next, let's look into the types of places you can pick from:

Startups

Startups are fast-paced, unpredictable places. Their compensation is considerably lower than in a big tech company, and you get a lottery ticket that might make you rich but often is just a raffle ticket.

There’s not a lot of structure or processes in them. Fewer rules and fewer stakeholders have to approve new ideas. Teams are smaller, there are fewer meetings, and everything moves faster. Often you get to pick and choose which technologies to use.

There’s also a lot of uncertainty. A thriving company can do a big round of layoffs within six months out of the blue. The company might fail to raise the next round of funding and shut down.

You get more exposure to other parts of the business, you get to wear more hats, and the friendships you create there tend to be long-lasting as you realize you have a lot in common for taking the same crazy bet and then enduring a multi-year roller-coaster together.

Hours can be crazy, it might be stressful, and there’s no HR.

But also, it is much easier to get promoted, jump into management, or transition to a PM role in a growing startup.

It might make sense for you if you want to up-level fast if you eventually want to launch your own startup, or if you get overly frustrated with red tape.

Big Tech companies

Big tech companies are highly structured, and slower moving, with the best compensation packages.

There is a lot of red tape. Projects have to be approved by many stakeholders to see the light of day. Teams are bigger. Politics is everywhere. People spend their time thinking about optics and trying to get promoted. Promotions become the Hunger Games. It’s harder to make friends.

There is more stability. With a few exceptions (AMZN, NFLX), it is harder to get fired and hours are lighter. You might gain deep knowledge in a very narrow field, and if that happens and another company needs that, they’ll pay your weight in gold.

You rarely get to pick the technology. You wear a single hat. You get no exposure to other parts of the business. You learn a lot about internal tools that will not be available in your next job.

Jumping into management or transitioning to PM are much harder to pull off.

Having them on your resume opens many doors for future jobs.

Tech org in a nontech company that is not trying to modernize itself

“Non-tech company” is a large umbrella, so there are a lot of variances here and YMMV. However, there are some common patterns.

Tech is a “cost center” instead of a moat. Salaries are low, and there’s little to no stock compensation.

The tech stack is old and outdated. You spend your time working on legacy systems with poor documentation that nobody knows how it works. There’s little appetite for upgrades that can cause breaking changes. Career progress is slow, and annual raises are small.

It’s hard to get fired. People are risk-averse and highly hierarchical. You are the nerd.

Tech org in a non-tech company that is seriously trying to modernize itself

You can tell these from the ones not trying by looking at their website. If it uses jQuery instead of React or Vue, they are not trying.

Think of these companies as a middle ground between startups and companies that are not trying.

Tech is an investment for them, and the org has the freedom to innovate. Things move faster. New ideas are welcome, and employees have a voice and respect.

Management understands they are competing for talent. Compensation is more competitive, but stock incentives are usually not there.

Work is part of maintaining legacy systems, part of building and improving new things. You can “move fast and break things” in the new pro, but don’t touch the mainframe code.

Consultancy companies

In consultancy companies, you are the commoditized product the company is renting out. It’s fast-paced, and salaries are low.

Projects are always at risk of being canceled. Teams shift constantly.
There’s always urgency. There’s always pressure.

Employees are replaceable. Customers are kings. You build whatever the customer wants, even if it doesn’t make sense.

People get trained to deliver fast. Quality is an afterthought, and best practices are not a thing.

There’s no career progression.

They stain your resume as recruiters and hiring managers think you got a sweatshop job because you had no other choice.

Government

Similar to the tech department in a nontech company with a few differences.
Stability is the highest, the pace is the slowest, and the tech is even more outdated.

Military

Similar to the government, whatever you do will be classified. That means you won’t be able to say what you learned next time you interview.

There is a chance you will work with some cool new technology, but realistically most of the time, you will be handling mundane things in ancient hardware.

Other things to consider

It is best to become friends with your manager. They hold enormous power over your career progression, and you need them to have your best interest at heart. Conversely, if your manager doesn’t like you, leave ASAP.

Learn how to take feedback well, even if it is not constructive. Treat any feedback as a gift. To progress, you’ll need to be more popular with decision-makers than you can imagine.

Beware of too much job hopping. Realistically if you change jobs every 12–18 months you won’t have much time to be successful anywhere. Your resume will start getting rejected because of it.

Beware of becoming too comfortable. Staying for too long in the same place might signal complacency.

It pays to work on your weaknesses, but invest most of your time honing your best skills. Those are the ones that people will remember.

Finally, never stop learning!

*Thanks to Felipe Melo for the contributions to “Tech org in a non-tech company that is seriously trying to modernize itself”

--

--