After you landed the job
Congrats!
You started your first job as a Software Engineer. Software Engineering is an amazing career discipline. The barrier to entry is low, the potential compensation is high, and the ways you can impact the world are limitless. But now that you’re a junior Software Engineer, how do you progress your career and make more money?
It’s important to understand that most companies map out the career trajectory of their engineers with something called a “career ladder”. Each rung of the ladder is a level, and the level most people start at is Junior Software Engineer. For the purposes of this article, we will map out each level with the following scale:
- Intern
- Junior Software Engineer
- Mid Level Software Engineer
- Senior Software Engineer
- Staff Software Engineer etc.
Software Engineering Competencies
Your place on the ladder reflects where the organization believes you are performing across several different competencies (axes). In general, these axes are:
- Scope of work
- Impact
- Engineering Excellence
- Technical Expertise & Quality
- Collaboration
Scope
Scope is best thought of as the size and complexity of your work. This is a rough approximation of scope expectations for each level:
Software Engineer Intern
- You're working on well defined tasks like
- Bug fixes
- Pieces of a product feature (ex. API endpoints, UI components)
- You learn by doing, and are expected to need a lot of help that you are responsible for seeking out
- At the end of your internship, you hopefully can perform at the level of a Junior Software Engineer
Junior Software Engineer
- You're still working on well defined tasks like
- Bug fixes
- Pieces of a product feature (ex. API endpoints, UI components, etc.)
- Your tasks are defined by project leads but you should need less help now
- You're working towards building bigger, less defined features
Mid Level Software Engineer
- Your scope has expanded to Features & Projects
- Projects might have several features, and features might have several components
- Your work is more ambiguous and less defined
- Despite ambiguity, you are now responsible for setting your pace and unblocking yourself
- You're working towards completing major projects with even more complexity and ambiguity
Senior Software Engineer
- Major projects
- These projects often span multiple projects
- You're responsible for defining these projects
- You're responsible for doing whatever is necessary to reduce ambiguity and drive a major project in your domain to completion
Staff Software Engineer
- Entire product, entire platform
- You’re not just in the code, you find the problem, define the projects, and are leading them to completion. This scope requires you to influence & coordinate people across the company to achieve your team's and org’s goals. You’re roadmapping, collaborating, and ensuring your team delivers the work it owns
Impact
Impact is how you deliver your work, and as you’d expect, the impact of that work.
- Software Engineer Intern
- You complete assigned tasks
- Junior Software Engineer
- You complete assigned tasks
- Mid Level Software Engineer
- You complete features & projects
- Senior Software Engineer
- You complete major projects
- Staff Software Engineer
- You significantly contribute to the success of your team, organization, or platform
Engineering Excellence
The engineering excellence axis spans technical expertise and technical quality expectations, which themselves can vary heavily from company to company. But for the sake of simplification, this is what we’d expect of each level at refer.me
Software Engineer Intern
- You’re learning the fundamentals of programming and computer science
- You’re learning the basics of your software engineering domain (ex. Frontend software engineering, distributed systems, mobile engineering, ML, etc.)
Junior Software Engineer
- You’re learning even more about your domain and understand the fundamentals (ex. If you’re a web engineer you understand the fundamentals of HTML, CSS, JavaScript, and their relationship)
- You can write software to the standards set by your team and project leads
- You can ship high quality code by providing and receiving code reviews
- You demonstrate ownership and are responsible for the impact of your code changes
Mid Level Software Engineer
- You can do everything above, but are confident in making judgment calls in your area of expertise
- You’re efficient at delivering code and can pace yourself to complete all the features you’re responsible for by the project deadline
Senior Software Engineer
- Everything above, but your problems are even more complex.
- You proactively improve the quality of your codebase, your team's processes, and systems
- You can move up and down the stack, and understand relevant knowledge outside your domain of expertise (ex. if you're a frontend engineer, you have some knowledge of backend engineering, and might even be able to stick your head in Figma design mocks if needed)
Staff Software Engineer
-
You have mastery over your domains and can use that mastery to solve novel, open-ended problems
-
Your solutions anticipated potential issues and are maintainable
-
Your decisions consider the trade offs across other disciplines (design, product), not just engineering
People Skills / Collaboration
As you progress in your career, your work becomes less about you, and more about enabling other people to do work.
Software Engineer Intern
- You reach out to your teammates to help you complete your tasks
Junior Software Engineer
- You’ve learned the best practices for collaborating with your teammates to accomplish tasks (ex. Make some attempts, document what you learned, then ask for help!)
Mid Level Software Engineer
- You help your team plan your features and projects and are highlighting potential issues and roadblocks for those features and projects
Senior Software Engineer
- You build relationships across teams, job functions, and domains
- You are the primary driver of project planning and prioritization for your projects
- You mentor engineers on your team who are your juniors
Staff Software Engineer
- You step up as a leader
- You effectively communicate complex ideas and decisions across leadership, teams, organizations, and job functions
- You mentor across your organization
Closing thoughts
These criteria are a reflection of our experience working as Software Engineers and tech leads at various tech companies and unicorn startups. It’s much easier to visualize these axes by reading Engineering Personas for each level, which will be coming soon to refer me!