The career path of a Software Engineer
Regardless of your software engineering discipline, they all follow similar career trajectories. This article aims to demystify the path of the Software Engineer so that you can make a more informed decision about where you want to take your career.
Maybe you're a Front End Developer crafting engaging user interfaces for customers, or a Back End Developer building highly performant services that power your applications, or a Site Reliability Engineer ensuring that your apps are always available and resilient as traffic scales up, or a Quality Engineer ensuring that each release is thoroughly tested before it reaches the end user. Regardless of your software engineering discipline, they all follow similar career trajectories. When looking for software engineering jobs, you may find yourself wondering what all of those different titles like "Principle Engineer" or "Staff Engineer" actually mean, and which one is more senior than the other. This article aims to demystify the path of the Software Engineer so that you can make a more informed decision about where you want to take your career.
Depending on the size and makeup of the company you work for, there may be many steps in the Software Engineering ladder, or very few, but there are really only two core paths to take as a developer:
- The Individual Contributor (IC) Path
- The Management Path
While those two paths are simple on the surface, one company might have a wildly different definition of what a Tech Lead is compared to another, or some companies might make use of engineering "levels" (Software Engineer level 1, 2, 3, etc) while others may not. This article won't be an exhaustive explanation of all of the different titles out there, but it will hopefully serve as a guide to help you navigate the various roles and what to expect from each path so that you can make a more informed decision about where to take your career. Every Software Engineer starts off as an individual contributor, so that's where we'll begin.
The Individual Contributor Path
Early on, Individual Contributors are typically focused on depth of knowledge (as opposed to breadth of knowledge). However, the more senior you are in your discipline, the greater your breadth of knowledge will naturally become, and the more specialized your technical accumen should be. You can be an expert in Java, for example, or an expert in performance optimization, but whatever your specialization may be, the further up the ladder you climb, the more you will be relied on for your specialized technical skill set and broad general knowledge.
The Individual Contributor ranks:
- Co-op / Intern / Associate Software Engineer
- This is the typical title for a student who is completing a paid co-op term at a company (placed through their university), but has not yet graduated.
- No professional experience is required, but you will need demonstrable knowledge of your domain.
- As an intern, your entire objective is to gain valuable experience that you can add to your resume, and professional connections that can help you land a future Junior Engineering position.
- Junior Engineer
- Entry level position at most companies. An engineer will typically be in this role for the first couple years of their career, with only 0-2 years of experience required.
- Junior Engineers are not expected to do much more than complete the tasks that they are assigned within the timeframe that they have committed to. However, there are always opportunities to shine and show your manager how valuable you can be.
- Intermediate Engineer
- Typically requires 2-4 years of experience.
- Most software engineers tend to be at this level, simply because it takes less time to move from Junior to Intermediate than it takes to move from Intermediate to Senior.
- Intermediate engineers don't often have much more responsibility than Junior Engineers, they're simply paid more for their greater level of experience and impact to the team.
- Senior Engineer / Tech Lead
- Typically requires 5-8 years of experience.
- Once engineers reach this level of seniority, the career path options tend to branch significantly. This is generally the point when an engineer starts to make the decision to either stay on the IC track, or make the switch to the management path.
- You can continue as a Senior Engineer making significant contributions without taking a leadership role; or you can become a Tech Lead where you will gain experience as a Development Lead, mentor more junior engineers, and make technical decisions for a scrum team; or you can switch paths and become an Engineering Manager to grow, mentor, and manage the careers of a team of engineers.
- If a Senior Engineer decides to move into management, this is when they would become an Engineering Manager. The responsibilities of a Tech Lead and an Engineering Manager can often be very similar, with the former focused more on building the product, with the latter focused more on building the team and its people.
- Staff Engineer / Software Architect
- Typically requires 8-12 years of experience.
- This is the next step after Senior Engineer if you decide to remain on the individual contributor path.
- At this point, you should have multiple technical specializations that make you a highly valuable employee for solving complex problems that more junior engineers would struggle with. You should be an expert in at least one specialization.
- Software Architects are a less common title these days, as most senior-level engineers (and engineering managers) should be well-versed in systems design and application architecture, so a dedicated Architect role is not as common in modern tech companies.
- The key difference between a Staff Engineer and a Software Architect is that a Staff Engineer spends more time coding than creating and maintaining diagrams and documentation, whereas an Architect is the opposite -- spending more time with diagrams and documentation than writing actual code.
- Some companies might have a Senior Staff Engineer before moving up to Principle Engineer.
- Principle Engineer
- Typically requires 12+ years of experience.
- This is the pinnacle of the Individual Contributor path and the highest position realistically attainable without switching to the management path. Some companies may offer multiple levels for a Principle Engineer to allow for a greater sense of career growth, but generally, once you've attained this level, this is usually as far as you go up the ladder as an IC (though it is not the highest rank in the IC track). You are the go-to expert in your specialization.
- Depending on the company, there may be additional ranks within, such as Distinguished Engineer.
- Engineering Fellow
- This is the highest attainable rank as an Individual Contributor. It is the equivalent of a VP of Engineering in the IC path and is reserved for those individuals who have attained remarkable achievements and are typically industry leaders. Very few Software Engineers achieve this rank, as most companies don't have a need for this type of role, and don't even offer it as an attainable rank.
- Few Software Engineering companies utilize this rank, as it is more typical in the sciences and in more traditional engineering firms (such as Mechanical Engineering).
The Management Path
Software Engineers often believe that moving into management is an inevitable part of every engineer's career path, and that being an engineering manager is the only way to progress in your career after a certain point. However, it's important to understand that transitioning from an Individual Contributor to Management is not necessarily a promotion and you won't always make more money doing so. In fact, moving from a Senior Engineer role into an Engineering Manager role is more of a lateral move than a promotion. Moving into management should be treated as a career change, not as a path to promotion, as it requires an entirely different set of skills than that of an individual contributor, and being a highly skilled Software Engineer won't necessarily translate into being a great manager. In management, especially as you move up the ranks, your problems become less about engineering, and more about people and processes.
An important thing to remember is that Engineering Managers often stop coding altogether, and the more time spent as a manager, the harder it becomes to switch back to being an Individual Contributor, so you should be sure that it's right for you before taking the plunge. That being said, you can safely move into an Engineering Manager role for a year or two and switch back to being an individual contributor if you feel management isn't right for you, but don't wait too much longer than that. The longer you're not coding, the harder it becomes to switch back to the IC track, especially as you move up the management ladder. That said, without further ado...
The Management ranks:
-
Engineering Manager / Tech Lead
- Typically requires at least 5-7 years of experience as a software engineer.
- Engineering Managers and Tech Leads are team leaders, leading a team of about 4-8 engineers.
- Credibility is critically important at this level. As a team lead, your engineers need to be able to trust that you know what you're doing. If you can't speak with credible authority on technical subjects, or recognize your gaps in knowledge and defer to to those who do know, you will struggle to gain the respect of your team.
- Unlike individual contributors at the same level, Engineering Managers and Tech Leads tend to have broader skillsets. The focus is less on depth of knowledge and more on breadth of knowledge. If your experience is primarily in Front End Development, you'll be expected to be an expert in Front End technologies, but also to have a decent amount of knowledge in other domains (such as test automation, systems design, different types of API development, CI/CD development processes, and so forth). You will need to be a well-rounded engineer.
- Tech Leads and Engineering Managers are often interchangeable roles. They have different focus areas, but an Engineering Manager is often required to take on the responsibilities of a Tech Lead and vice versa. The key difference between the two roles is that a Tech Lead is "technology first" while an Engineering Manager is "people first".
- At this level, your contributions to code will significantly reduce, but by how much will depend entirely on the company. Tech Leads will spend anywhere from 25-75% of their time coding, while an Engineering Manager will spend 0-50% of their time coding. At many large technology companies, like Amazon or Microsoft, Engineering Managers aren't expected to code at all (the role is entirely about people management and leadership).
-
Senior Engineering Manager / Director of Technology
- Typically requires 7-10 years of experience, with at least 3 years of people management experience.
- At this level, you are a manager of managers. You will be responsible for a combination of at least two Engineering Managers (or two teams), Tech Leads, and higher level individual contributors (such as Staff Engineers or Software Architects).
- You should still have a solid understanding of the products you are responsible for, as well as what your engineers are working on, and when they're expected to deliver, but you will not be contributing directly to the projects. Your job is to make sure your Engineering Managers and their teams have what they need in order to succeed.
- If you were coding as an Engineering Manager, you definitely won't be at this level. Your scope of influence increases significantly at this point. Not only are you managing more than one scrum team, you are influencing and coordinating development efforts across the organization and often working with Directors in order to set goals and KPIs, help define the organization's culture and ensuring your teams are delivering on time and at high quality bar.
- Where a Senior Engineering Manager is the next step up for an Engineering Manager, a Director of Technology is the next step up from a Tech Lead. A Senior EM focuses on people management, while a Director of Technology is focused on technical direction and systems management. Depending on the company you work for, these roles might often be filled by the same person.
-
Director of Engineering
- Typically requires 10-15 years of experience, with at least 5 years of management experience.
- While Senior Engineering Managers continue to manage from the "inside", a Director of Engineering is too far removed from the daily operations of the teams they're responsible for and operates from the "outside".
- At this level you will be responsible not just for multiple teams, but likely multiple projects as well. You will be responsible for too many things to be able to understand them in detail, so you will need to understand them by talking to your managers, setting and measuring KPIs, defining business objectives for teams and tracking their progress.
- You will also be responsible for some key aspects of the engineering culture, including hiring standards, professional development opportunities for engineers, what teams do for fun (team building), team swag, and how the organization fosters and rewards individual and group excellence.
-
VP of Engineering
- Typically requires 15-20 years of experience, with at least 10 years of management experience.
- At this level, you are responsible for the entire engineering department. You will define the department's vision, mission, organization-wide goals, and engineering culture and values (with the help of your directors).
- The VPE's involvement in engineering is much more strategic at this level, and more about business goals than it is about people and engineering. You will be working heavily with C-level executives and Directors of Engineering in order to execute on company goals and the CTO's long term technical vision. If the CTO is the General, the VP of Engineering is the Colonel responsible for executing on the CTO's vision.
- The key responsibility of the VPE is to make sure that the engineering department is successful, along with everything that goes along with that goal. That means constantly balancing engineering execution speed with product quality, optimizing engineering processes, unblocking the development teams so they can achieve their goals, and everything else that goes into setting up the engineering department for success.
- To be successful as a VPE, you need to be a highly effective communicator, an excellent people manager that understands what motivates teams of people, and you should certainly have past experience as an engineer as well.
-
Chief Technology Officer (CTO)
- This is where experience level can become tricky. In a brand new startup, the CTO is most likely a founding member and could have as little as a 3-5 years of experience. However, with no management experience, the likelihood of the startup succeeding may be quite low. On the other end of the spectrum, such as in Fortune 500 companies, a CTO will typically have 20+ years of experience, with 10-15 years of management experience (including several years in upper management).
- The CTO is the technology visionary, responsible for defining the technology goals and objectives for the entire company that may span multiple years.
- As the CTO, you will be heavily involved in market research and keeping abreast of the latest technology trends and what competitors are doing that could impact the success of the company's products.
Closing Thoughts
Regardless of the path you decide to take, my only advice is to know yourself and understand your true career motivations before choosing a path. Don't take the manager track if what you really want is to write code, but if you really want to be a Director of Engineering, learn everything you can about being a great people manager. Don't choose management because you think it pays more or you desire the authority that comes with it. Do it because you love to lead and want to help other engineers grow in their careers. The best managers are those who genuinely care about their people and put them first. Happy employees make for happy customers. A bad job can still be a great place to work when you have a great manager, and there are too many awful ones out there who have no place leading people, so don't be one of them.
Your path is ultimately your own, though, so choose wisely and good luck on your journey!