editione1.0.1
Updated August 7, 2023In the early stages of your career, youโre probably going to be focused on developing your technical skills first before thinking about any kind of leadership path. While itโs good to have a sense of where your career is heading from a technical perspective, itโs equally important to start thinking about your career from a leadership perspective.
At some point, usually after youโve been in a senior engineering role for a while, youโll reach an inflection point where youโll need to decide if you want to stick with the technical track as an individual contributor (IC) or make the jump to the management track. There are excellent leadership opportunities in both paths, but itโs important to understand what those responsibilities look like as you think about the direction you want to take your career.
Hereโs what the paths look like at a typical tech company.
Source: Holloway Guide to Technical Recruiting and Hiring.
All programmers begin their career on the technical track as individual contributors, because the foundational skills you develop early on are prerequisites for both the technical and management tracks.
The primary responsibility of an individual contributor is to support the organization through the projects and tasks you work on. You wonโt carry any management responsibilities or have anyone report directly to you, so you will only be expected to manage yourself and your own work.
Most programmers enjoy working as an individual contributor because it allows them to do what they loveโprogramming. The majority of your time will be spent reading, reviewing, and writing code. Youโll design and implement feature enhancements and identify and fix bugs. As you start out, you will rely on senior engineers to provide direction and context for the changes you make, but as you gain more experience and autonomy, youโll shift to designing and implementing your own solutions to well-understood medium- and large-sized problems.
Once you reach this inflection point, youโll need to decide if you want to continue down the technical track or shift to the management track.
Letโs look at both tracks in more detail.
After youโve reached a senior engineering role, the most common levels on the technical track are the Staff Engineer, Senior Staff Engineer, and Principal Engineer roles. These deal with increasing job complexity and often require expert knowledge in multiple technologies in addition to development best practices.
In contrast to the junior, mid-level, and senior engineers, the higher roles on the technical track are responsible for exploring different solutions to large and poorly understood problems. They often build proofs of concept to demonstrate the feasibility of different solutions before choosing which direction to pursue.
Staff and principal engineers are expected to perform expert programming tasks and find opportunities for large-scale refactorings in order to reduce technical debt. They think strategically about how the technical systems fit into the rest of the company in order to provide leverage and opportunities for the company to scale.
They may not necessarily sit on just one team. Staff and principal engineers often move across teams to wherever difficult and vague problems exist. They may design a solution for one team and then move to a different team to help them find the best direction for a different problem.
Although theirs are primarily technical roles, most senior programmers on the technical track provide leadership through their technical guidance on projects and through mentoring a handful of individuals. Many engineers continue as individual contributors on the technical track because they incorrectly assume that they wonโt be managing people. While itโs true that staff engineers donโt have direct reports, there is a fair amount of people management involved. They still need to work with other engineers to build consensus and buy-in for the ideas, concepts, and initiatives they believe the company should pursue.
The technical path provides opportunities for those who arenโt necessarily interested in managing people, while still allowing them to practice their technical skills in order to design and build systems that provide value for the organization.
The path toward management is gradual. You donโt suddenly become a manager one day when the title gets assigned to you. Rather, it takes years of experience leading projects from a technical point of view, learning to collaborate with others, and listening to the needs of other programmers. Engineering managers have a knack for helping other programmers achieve their potential, and that isnโt something that can be learned overnight.
โexampleโCommon roles youโll find in the managerial track consist of Lead Engineers, Engineering Managers, Directors of Engineering, VP of Engineering up to the CTO or CIO of the company.
Rather than continuing down the technical path, some programmers may instead find themselves more comfortable leading the direction of projects or the people involved in them. While itโs possible they still contribute code here and there, they enjoy fostering the collaboration and communication between engineers working on a project to get it across the finish line.
While managers are expected to have an intimate understanding of the technologies involved in the companyโs products, they are also required to have an expert knowledge of the products themselves, including how those products are implemented from a technical perspective.
In addition to balancing tactical short-term goals with strategic long-term goals for the company, to be a great leader in the managerial track you need to be able to recruit and retain great engineers. Part of the managerโs job is to build great teams, and in doing so, they need to find ways to foster career growth for the engineers on their team. Above all else, managers support the needs of everyone on their team so that they can all achieve their full potential.
โimportantโ While the leadership path consists of two discrete tracks (technical and managerial), engineering managers almost always start out as individual contributors. Just like how managers need to understand the technical issues at hand, individual contributors need to understand the management issues in order to be effective.
The Secret to Growing Your Engineering Career If You Donโt Want to Manage (effectiveengineer.com)
Why All Engineers Must Understand Management: The View from Both Ladders (hackernoon.com)
Now that weโve looked at what things to consider when thinking about your engineering pathโwhether to generalize or specialize, and options for your leadership pathโit may feel like there are a lot of things to think about. Thereโs a lot that goes into software development, but you donโt need to decide all of these things at once.
It may be overwhelming to think about all of this right now, so itโs important to give yourself a reasonable timeline when it comes to advancing in your career, and to keep things in perspective when setting goals for yourself, because you have a long career ahead of you.
Some skills take years to learn and decades to master, so be patient and take things day by day. Continuous improvement is the best thing you can focus on right now, as that will give you a strong foundation you can build on. Small improvements every day will compound over time, and soon youโll look back and be surprised at how quickly youโre progressing.