What’s the difference between junior, mid-level, senior and staff engineers?

How can you tell if you are ready for a promotion? πŸ‘‡πŸΌ

First off, I just want to say: the level of engineer you are has nothing to do with your worth as a human. πŸ’™

It 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

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 minimal 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

What is a senior engineer?

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 also setting design standards and modeling best engineering culture and practices.

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

Staff Engineer

What is a staff engineer?

Staff engineers usually have 8-15 years of experience. πŸ˜…

At startups, staff engineers will influence and be responsible for several teams. In a larger organization, they may be staffed to one larger team.

They closely partner with engineering managers and co-own the success of the engineering culture, technical solutions, and systems across the team(s) and many projects.

Where they differ mainly from a senior engineer is influence and scope. 🀝

At this level, staff engineers work on solutions dealing with large, very complex and important technical and business systems. They set the standard for all other engineers in the organization. βœ”οΈ

They should be able to:

  • Ship and model the highest quality of work

  • Influence the org’s culture around best practices in testing, rollouts, monitoring, scaling, etc.

  • Spot pain points or weakness in technical or organizational systems and propose and lead solutions

  • Lead complex projects with clear deliverables and milestones that may span multiple years

  • Leverage cross-functional leaders in design, product, security, data science, to work towards team goals/projects

  • Give strong technical / business communication both oral and written

Reminder: we all start somewhere

Just a reminder that in my own journey, the more senior I become, the more I realize software engineering is an endless frontier.

Yes, I know more – but I’m also working on more complex problems and projects. πŸ˜…

We all start somewhere, and we are all leveling up in various ways by 1% every day. πŸš€ Keep going wherever you are at. πŸ’ͺπŸ’™

β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”

Where are you at in your engineering journey?

I’d love to hear from you – reply with β€œbreaking into tech” or your β€œjunior/senior/staff level” if you are already working as an engineer.

See you soon! πŸ™‹β€β™€οΈπŸ™‹β€β™‚οΈ

β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”

πŸ‘‰ Follow along on socials throughout the week as I share about leveling up in #softwareengineering, #startups, and your #leadership #softskills πŸ””