In modern tech companies, there’s a dual career ladder structure for software engineers: they can either progress more technologically (as senior and lead engineers) or advance on the management side (as engineering managers and directors). The best companies ensure that the ladders are balanced, and that moves between individual contributing (IC) roles and management (EM) roles are transitional and not promotional.
I’d be lying, though, if I claimed that there isn’t a difference between the amount of authority and decision-making ability between ICs and EMs. It’s not just that managers tend to be more senior to begin with; one of the responsibilities of an EM is to gather enough information to make informed decisions, both affecting technology and people. From an IC’s standpoint, this plays out as if EMs — especially those higher up the hierarchy — often make unintelligent, unilateral decisions while the ICs end up dealing with the fallout of those choices.
So we end up with realizations of programmers regretting their missed opportunities to go into management:
My Biggest Regret As A Programmer
I do hope, first off, that everyone has the chance to think about and act on switching their career direction after a few years of industry experience. From my own journeys through the valley, senior folk are often placed into management roles anyway because the company lacked enough leaders, but most engineers forced into the new job don’t last that long anyway. Not everyone enjoys the role, and ideally the transitions can work bi-directionally.
The post makes a point about how much more authority managers have in deciding personnel and technology choices. That’s a fair observation, but the determinant isn’t whether someone is a manager or an engineer. Rather, it’s their leadership abilities and reputation across the rest of the organization that drives influence, and in the cases cited would have allowed the author to make the changes he wanted to see without devoting his career to a role he didn’t like.
My term for this type of social impact is “sphere of influence.” It’s affected by some combination of leadership ability, executional excellence, connections with others, and technical talent and reputation. It’s a requirement for high-level managers, but I’d argue is equally important and necessary for high-level engineers as well. Having others trust in your decision-making and technical choices is implicit acceptance of your abilities and opinions.