Career Ladders / Promotions
How can I tell when I’m ready for the next level / promotion as a software engineer? And what can I do when I feel stuck at the current level?
Hey friends 👋 A big welcome to our 3048 newest readers since our last issue 🎉 It’s an honor that you choose to spend your time with me learning together. I hope these articles provide massive value as you look to level up in your software engineering skills and career – Caleb Mellas, Level up Software Engineering 🚀
Before we dive right in, I just want to say: the level of engineer you are has nothing to do with your worth as a human. 💙
It also has nothing to do with how many lines of code you crank out. Sometimes, mid-level engineers are writing more code than senior level engineers. 😅
It’s not even directly tied to years of experience. 🤯
It’s more to do with:
mindset
responsibility
technical expertise and communication
how you approach problems
leadership skills
scope of your influence
And yes, senior engineers do make a lot more than junior engineers. And yes, it’s actually totally ok to optimize for money in your career.
Just make sure you go in eyes wide open and realize that going to senior+ roles doesn’t always mean more coding. They are more about influencing others and expanded scope, than writing the most/best code on the team.
Alright, let’s jump in 👇
Junior engineer
What is a junior engineer?
Junior engineers have 0-3 years of development experience. They are usually fresh out of college, newly self-taught, or coming from a boot camp.
They should be proficient in one or two languages/frameworks and be able to build small to medium-sized features with direction.
At this level, engineers focus mostly on leveling up in their coding capabilities and get up to speed with engineering best practices.
They might do things like:
Improve an existing codebase by adding missing tests to legacy code
Migrate an old feature to a new framework or components
Add to existing apis
Work with senior engineers on pieces of larger projects
Junior engineers will require mentorship from other seniors on the team to ensure they are successful, and continue to level up 🤝
Every team should have a junior or two. 🎉
Mid-Level Engineer
What is a mid-level engineer?
Mid-level engineers usually have 3-5 years of experience.
They should be proficient in 2-3 languages/frameworks and be able to build a new feature with some direction needed from other engineers.
At this level, engineers focus mostly on increasing their depth of knowledge in languages, frameworks and coding patterns as well as starting to contribute and own pieces of larger projects.
They might do things like:
Build out a new set of apis, services, and db tables for a new feature
Contribute quality components to the team’s style guide
Refactor and optimize old queries, legacy code, or fix complex bugs
They will still require mentorship from senior engineers on the team, but they will be able to tackle many more things on their own, and even provide support to juniors. 💪
Senior Engineer
Alright, now the question I asked myself for yrs while working towards it:
What is a senior engineer? And how do I become one?
Senior engineers usually have 5+ years of experience. They have proven their depth of knowledge and proficiency on several larger projects. They’ve mastered several languages, and if they need to learn a new technology or framework they are able to do so quickly.
They’ve developed deep problem-solving skills and cross-language engineering knowledge and experience.
They stand out in their communication, project management, systems design and architecture experience, documentation initiatives, and mentorship to help the team level up. 🧠
At this level, engineers tend to focus on being “an owner of a feature or system” with an expert end-to-end understanding of it. They are the “go to” engineer for this area.
They should be able to:
Plan, research, breakdown, and successfully complete a large project
Identify and fix issues in complex systems
Lead a project with multiple contributors including writing technical specs, helping with sprint prioritization and planning, outlining a testing plan, etc.
Give through, helpful, and timely code reviews
Provide mentoring, technical interviews, onboarding, documentation - things that help the team level up
Successfully juggle multiple priorities or projects
Emerge as force multiplier for their product area
They are also helping to set design standards and model good engineering culture and practices.
Staff Engineer
What is a staff engineer?
Staff engineers are much more rare than senior engineers.
They are the engineers you hear about that are L6 level and above at Meta or Netflix that are making $400,000+. 😅🤯
Why don’t we all just become staff engineers then?
Haha, well if it was just as easy as being a software engineer for 8-15 years - we’d probably all be that level - but it’s not that easy.
It takes extreme focus, mentoring, training, and real drive to continue leveling up all the way to a staff level.
Alright… So what does a staff engineer look like? Glad you asked. 🙋♀️🙋♂️
Keep reading with a 7-day free trial
Subscribe to Level Up Software Engineering 🚀 to keep reading this post and get 7 days of free access to the full post archives.