About a year ago, Dan McKinley aka McFunley wrote a bit on the technical track. The piece has stuck in the back of my mind for quite a while, and continues to influence certain points I make when discussing career progressions of engineers. Let's get them out.
I think that Dan's take is cynical, but not entirely incorrect. We need managers. As companies grow, at some point, you need people whose job it is to organize other people. I think the idealistic goal of management is to help teams live up to their talent potential. The realistic experience of management is often an abstraction layer between upstream and downstream, to help flow information, each layer helping to make a finer-grained set of decisions and adjustments to keep the overall company moving in the right direction.
Let's talk first about why I personally went into management. I was successfully performing in one of those technical track positions, at a company where I felt pretty confident I would be able to continue to be promoted in the technical track positions up to the highest level if I put the work in and continued to perform well. I was working on interesting things, paid very well, and on paper, everything was perfect. And yet, I quit to move to a smaller company and go into a management position. Why?
I realized pretty clearly that the scope of my ambitions was greater than the scope of my ability to produce things independently. I could not write enough code alone to achieve the kind of impact that I wanted to achieve on the company I was working for. Even with a small team, I felt that my ability to make a difference would be limited. I would have to make extremely good choices as to what to guide the team to do, and my effectiveness would always be limited by what I now realize is actually "product market fit." If I made a great product that no one else in engineering wanted to use (I was working in infrastructure engineering at the time), I would not have much of an impact.
So, instead, I gave up some degree of hands-on technical time in order to have a broader ability to focus people on projects where I felt their impact would make the most difference on the company. Ultimately, that is a core part of any technical leadership job, not doing all of the work yourself, but helping to both see what needs to be done and focus people on getting it done in the right way.
Now, you can imagine a situation where you have an engineering manager who deals with all the "people" side of things, paired with a technical specialist who makes all the decisions about what needs to be done and how it should be done, as per their technical expertise. Why doesn't this situation exist? Well, imagine putting yourself into the shoes of the engineering manager. You are basically a glorified project manager with little decision-making power. Except... all of the people report to you. You have hiring and firing power. You write their reviews. Do you really have no decision-making power? If you disagree with the technical specialist about what needs to be done, why would the technical specialist have final say? It is unrealistic to believe that the person with management authority over the people would have no influence over what they do, even with best intentions assumed.
The technical specialist, with no management authority, is limited. They are limited in what they can produce by the scope of resources (people, time, support from other departments, computers, etc) they have available to them. A people manager may give them a team to focus on their ideas, but that will always be balanced by their ability to produce valuable output as defined by whatever that people manager is being measured on. Miss an alignment with whatever the manager (or THEIR manager more likely) sees as valuable, and you risk losing those resources or having them siphoned off for "more important/pressing" work.
If a company has mostly reluctant/unhappy managers who would truly rather be coding, they have created a culture where code is more valued than management. Think about that. I created a team where the managers, by and large, were happy to be managing, and in the few times when they were not happy to be doing it, they went back to technical focus and we adjusted the teams. I was accused at least once of undervaluing technical contribution, so you should feel free to take this with a grain of salt, but reluctant management is a sign of a broken system, not a necessary an expected outcome of a growing engineering organization.
Dan mentions in his piece that one solution is that we could be promoting people more aggressively on the technical track. I agree with this, if the problem we are solving is giving productive individual contributors more money/bigger titles. Here is the alternate cynical perspective: the technical track exists so that we won't lose people who do good work and have valuable institutional knowledge, but the impact that those people have is often not equivalent to the impact that managers have (for good and for evil). Most companies don't actually need nearly as many people at senior levels of the technical track. We don't want to lose all of them, but there are diminishing returns for people who are possibly just incrementally better at building software. That's why you start to see language about scope of impact in staff engineering job ladders. As leaders, we want to encourage people to actually show results at broader scopes before we promote them. This just takes longer if you have to do it alone or with a small team. At a functional company, people aren't usually promoted as managers until they have shown they can do the next job by managing larger teams and actually doing the work to show the results. Why should the technical track be any different?
What about superpowers that could be given to technical specialists to make up for the authority given to managers? I would personally observe that often, senior technical staff work less hard than senior managers. The superpower of a senior technical staffer is that they get to work on harder intellectual problems and/or more speculative work, they get the luxury of a calendar that is far freer of obligatory meetings and tasks, and they are pressured far less than management for results on tight timelines. In short, by taking the technical path, they have traded off getting to continue to focus on what many engineers consider to be the fun stuff in exchange for a lot less clarity on how to progress and make an outsized meaningful difference. They don't have to work as hard as managers, they often don't work as hard, but on the flip side when they want to work harder to accomplish more it's less clear where to put that effort to gain value.
We all make tradeoffs. Engineering managers are making the tradeoff of getting farther away from the immediate reward (and, I will note, general tech cultural cachet) of day-to-day coding, as well as giving up control of their time, for a clearer career path and possibly more authority. Those who choose to stay technical should expect a likely slower career progression, and they will have to put in the difficult work to learn how to influence without management authority, but they should have more freedom from other people's demands and more control over when they put in the hard work to grow. Make no mistake, growth is hard no matter which way you go. You may have a clearer workout plan as a manager, but you still have to hit the gym and get sore. If you're not a little uncomfortable, what makes you think you're really growing into a new role?
I don't agree that senior managers typically work harder than senior technical staff. Having more meetings on your calendar doesn't equate to working harder; quite the opposite if you're not being effective in those meetings. And while it's true that managers are often under pressure to meet deadlines, they have to pass on some or all of that pressure to the techies who get the work done to meet those deadlines.
ReplyDeleteStumbled upon this interesting blog!
ReplyDeleteI think the biggest problem with a techincal track is that it is very difficult to differentiate yourself from other individual contributors who have much less experience than you. For example, how much additional value an IC with 15 years of experience can give, compared to an IC with 10 years of experience?
The management track, on the other hand, requires different skillset across roles - Engg manager, senior engg manager, director - which you must necessarily learn if you want to get promoted. To put it in another way, if you put a senior software engineer in the position of a principal engineer, it won't be a surprise if the former does a commendable job. But it would be very surprising if a level one engineering manager is thrust upon a director's role and comes out with flying colors.
Great article, Camille. I appreciate you sharing your thoughts and experience. Having tried both the management track and technical track, I decided for me personally that the technical track aligns more with my personality and goals and... skillset?
ReplyDeleteAs Vikram pointed out, there are different skillsets needed in management and just because a person is talented enough to lead a team doesn't mean they have to be the manager (or would be good at it). But, as you point out, when you have a manager and a technical lead trying to both "run the show" that can get confusing. And I agree with you on most of the struggles that staying in the technical track can bring, such as learning to pursuade people when you don't have the formal authority over them.
I'm still on this journey and will continue to evaluate career options and growth for either path...