Software Management in Crisis

I recently made the transition from an individual contributor software engineer to a Manager and this was a long, deliberate process for me. A lot of people fall in to a management role. Their company needs a manager and they seem to be the most qualified candidate so they are plucked from the ranks and put in charge. But this did not happen to me. My decision to go into management was intentional and it was made because what became clear to me as an individual contributor was that most of my peers were actually really good at their jobs. The same could not be said, however, for a disturbingly large percentage of the managers I’ve had in my career and I wanted to fix that.

Let’s think about what it takes to rise to the level of Senior Engineer in our industry. It usually starts with having a degree in engineering or a related field. Although this usually isn’t a requirement for most jobs, there are still a fair number of companies, especially the more prestigious ones like Google, Facebook, Amazon, etc., that list that as a requirement. Most of the engineers I’ve worked with did start out with a college degree because it is the easiest path to success. Next you need a at least 3–5 years of practical experience. You need to be taught the skills of working in a team. You need to be familiar with process. If it’s scrum you need to know how standups work. You are going to need to become familiar with how ticketing systems are used to track work. You need to know about work estimation. You have to be fluent in git and branching methodologies. You need to be familiar with code reviews, IDE’s or a command line interface, architectures and design patterns, industry trends and evolutions, and you need to know all of this on day one.

All of these things amount to a tremendous level of rigor that is required of every individual contributor in our industry and it has been one of the driving reasons that the technology sector has made so much progress. Why, then, don’t we demand the same level of rigor from our managers?

During their daily standups, every engineer has to stand up in front of their team, their manager, and whoever else is interested, and tell them what they did yesterday and what they are doing today. It is rarely aknowledged how much accountability, trust, and transparency it takes to do this. There is nowhere for a failing engineer to hide. It’s obvious, then, why it’s pretty rare to run across a truly bad engineer, and when you do, that person is usually not participating in daily standups, and not accountable for their work. So why shouldn’t we expect the same level of rigor from everybody in the organization, especially managers?

I’m not saying that managers need to justify their time to everybody, but why shouldn’t we expect, at the bare minimum, a commitment to taking an interest in the job and trying to get better at it? There are an alarming number of managers in our industry who don’t seem to want to be managers. They are easy to spot because they usually still spend a good percentage of their time coding and they find any excuse to do it. Oh, they will say that they have to code because they are the only ones who know all of the inner workings of the business, or that if they gave the job to someone else, it would take too long, or that they want to keep the architecture intact and if they weren’t there, keeping an eye on what everybody was doing, the whole system would fall apart.

All of these are poor excuses for the fact that they really have no interest in management because management requires empowering others, not exerting control. They probaby love the fact that, because they aren’t really accountable to their direct reports for the work they produce, they are able to throw in some high mined pull requests with a bunch of architecture changes that the rest of the team is forced to deal with. Not being aware that, lacking the accountability and transparency that keeps a good engineer sharp, the manager will start to cause more and more harm to the team over time.

I’m not saying that Managers should never touch code. The realities of software teams being chronically understaffed are that sometimes the best thing a Manager can do for their team is fix a bug or two. What I am saying, though, is that a Manager should always seek to do what impacts the team’s success the most, and if you think that thing is coding, then why are you a Manager?

The role of a manager is very different from the role of an engineer and being aware of this fact should be a requirement for entering into that role. I’ve had great managers as well. Probably not so coincidentally, none of the great managers I’ve had were the kinds of people who had to be the smartest person in the room. They were great because they cared about making me great. They took an interest in the role and wanted to get better at it. When you step back and take a look at what made them great managers, sure you can point to good people skills or high emotional intelligence or an ability to communicate but above all else, they wanted the job. Not the title, not the pay, not the authority, the job.

We definitely have a systemic career development problem in our industry. There is really no way to grow your engineering career beyond Senior level without going into a leadership role and that’s a real problem. There are, understandably, a lot of people who don’t want to be managers and for everybody's sake, it would make a lot more sense if there were a way to grow your career (and salary) without taking a job that you shouldn’t. The Distinguished Engineer program at a lot of companies is just another step down the path of the non-accountable “Architect” that becomes just as isolated and ineffective as the manager who wants to code. I have no good answer for this problem but I believe we need an answer.

The role of engineering manager should not be something that people end up falling into because they are just a warm body that can fill the role. It should also not be the default next step for somebody who is really not interested but who has no other options. We, as an industry, need to recognize the need to apply as much rigor and high expectations as we apply to engineering. And is should start with one minimum expectation: In order for you to have the role of Manager, you must want to do the job.