When you're starting out, growth is easy: Learn more about your tools, discover adjacent tools, get better at doing.
Then what?
You reach a point in your career when growth stalls.
Your problems stop changing, your code stays the same quality – good enough, ain't nobody got time for perfect – your stack is static and solves company needs. You're spinning wheels solving similar problem after similar problem.
Sometimes an exciting challenge crosses your desk.
5 minutes later you're yanked to a production issue. Or a mentoring question. Or a meeting with stakeholders. Or an urgent project that ain't got time for technology risk.
As the experienced engineer on Product X, you're best suited for those.
Time to ask yourself
Do you want 5 years of experience, or 1 year of experience 5 times?
If you ever worked at an agency, you'll know this deep in your gut. Every project is about the same as every other project. Details change, requirements evolve, the industry moves, but a website is just a website.
You might get faster, you might build tools, you may screen clients better ... but you're building the same thing day in and day out. 🥱
So how do you grow?
Growing senior talent
Nurturing senior talent is a skill. An organizational skill. A skill many organizations lack.
Engineers come in at junior to mid levels. Stick around for a few years. Then leave.
And that's okay.
Not every organization needs senior talent. You wouldn't pay someone an AI researcher salary ($500k+ in SFBA) to build a new landing page every 2 weeks.
So what do you do my friend? There's 3 ways to grow as a senior engineer:
- management
- entrepreneur
- bigger company with bigger problems
- become junior in new thing
Off-by-one errors notwithstanding, if you're happy with 1 year of experience 5 times. Go for it!
That's a very pleasant way to lead your life. Pays well, easy to do, leave work at work, spend time with the wife and kids and hobbies and whatnot.
You do you.
For me that feels like death.
I need a constant supply of new exciting challenges. Especially because coding is also my biggest hobby. You know, Hackers 😇
1) Management
As you become more experienced, start mentoring, and become a force multiplier for others, companies will push you into management.
This is natural.
You're already mentoring and helping out. You're already thinking about others' productivity. Why not manage them too?
From a company perspective this makes the most sense.
Senior talent understands the company, understands the process, and is bored with the problems. The company wants to try more things in parallel, not necessarily harder things.
So the company hires a horde of juniors and mids to do the grunt work that bores the seniors.
Who's gonna manage that horde?
😉
But beware: this is a new career.
2) Entrepreneur
You can always start a company. Consulting is a great option here.
Lots of new challenges, lots of new problems, lots of exciting new things to solve. You're gonna learn a lot.
But it won't be about technology or engineering.
Each new consulting client will teach you a little more about your craft. And a shitload more about consulting.
Each new product will make you a little faster at developing products. And a shitload better at product management, marketing, sales, copywriting ...
Exciting, but a new career.
You might parlay this path into a principal engineer for hire. That can be fun.
Waltz into a company, analyze their problems, tell them what to do, champion some approaches, do some mentoring, then bounce. ✌️
3) bigger company with bigger problems
This path became clear one day in March while watching Formula 1: Drive to Survive on Netflix.
If they're good enough, they swim, they survive. And if they're not ... the pressure builds ... and builds ... and builds ~ Mercedes Team Boss
Mid-season drivers change teams. Negotiate new contracts. Make plans for next year. 2019 was special because almost every driver on the grid was up for re-neg. (documentary looks back 1 year)
And you know what most of them said? What was on their minds? Why they switched?
I want to win. I know I got it in me. The fire is there. But this team can't get me there.
You enter F1 in a starter team. The back of the grid.
You're an F1 driver, the pinnacle of racing, and that makes you elite. But within F1, you're a chump. You have potential. You have talent.
But you need to turn talent into mastery.
Your car can't win. Your team can't win. No matter how good you are.
Prove yourself and you get to upgrade.
One day you reach Mercedes, Ferrari, or Red Bull. Then you're fighting for the championship.
The top 3 change every few years and it's never more than 3. If you're not driving for those, you ain't got a chance.
Something similar happens in technology companies. Startups in particular.
You can grow and grow and grow and then it just stops. You don't grow. You have nothing deeper to solve. No bigger problem. No bigger concern.
Maybe the startup isn't growing, maybe it grows by doing more not deeper, maybe it doesn't want to grow. Whatever it is, you can't grow my friend.
Time to switch.
4) become junior in new thing
So you want 1 year of experience 5 different times? 🤨
Great for diversifying your thinking. Learning Haskell had a huge impact on how I write JavaScript.
But should I jump into iOS? Nah, I'll never catch up.
You should expand, of course. Expand into adjacent fields. Fields where your expertise can help. Fields where you can augment your skills. Don't throw it all away and become junior.
Or do, I'm not your mum.
Cheers,
~Swizec
Continue reading about How to grow as a senior engineer or why I got a new job
Semantically similar articles hand-picked by GPT-4
- Reader question: How to grow 10+ years into your career?
- I'm a different engineer than I was 3 years ago
- Interviewing tips for experienced engineers
- When to join and leave a company, project, or trend
- Why senior engineers get nothing done
Learned something new?
Read more Software Engineering Lessons from Production
I write articles with real insight into the career and skills of a modern software engineer. "Raw and honest from the heart!" as one reader described them. Fueled by lessons learned over 20 years of building production code for side-projects, small businesses, and hyper growth startups. Both successful and not.
Subscribe below 👇
Software Engineering Lessons from Production
Join Swizec's Newsletter and get insightful emails 💌 on mindsets, tactics, and technical skills for your career. Real lessons from building production software. No bullshit.
"Man, love your simple writing! Yours is the only newsletter I open and only blog that I give a fuck to read & scroll till the end. And wow always take away lessons with me. Inspiring! And very relatable. 👌"
Have a burning question that you think I can answer? Hit me up on twitter and I'll do my best.
Who am I and who do I help? I'm Swizec Teller and I turn coders into engineers with "Raw and honest from the heart!" writing. No bullshit. Real insights into the career and skills of a modern software engineer.
Want to become a true senior engineer? Take ownership, have autonomy, and be a force multiplier on your team. The Senior Engineer Mindset ebook can help 👉 swizec.com/senior-mindset. These are the shifts in mindset that unlocked my career.
Curious about Serverless and the modern backend? Check out Serverless Handbook, for frontend engineers 👉 ServerlessHandbook.dev
Want to Stop copy pasting D3 examples and create data visualizations of your own? Learn how to build scalable dataviz React components your whole team can understand with React for Data Visualization
Want to get my best emails on JavaScript, React, Serverless, Fullstack Web, or Indie Hacking? Check out swizec.com/collections
Did someone amazing share this letter with you? Wonderful! You can sign up for my weekly letters for software engineers on their path to greatness, here: swizec.com/blog
Want to brush up on your modern JavaScript syntax? Check out my interactive cheatsheet: es6cheatsheet.com
By the way, just in case no one has told you it yet today: I love and appreciate you for who you are ❤️