If you have been working in software for more than a year, you have probably started asking yourself whether or not to pursue taking on [more] management responsibility. It's a natural thing to wonder about, and many companies don't have a formal technical track, which can leave you wondering whether your career is progressing. There are also many misconceptions about power, influence, decision-making, control, and job satisfaction. In my own life, I started off programming at the age of 8, started my own IT company when I was 13, closed the company and swore I would never be a manager, and after a chain of software companies eventually took a series management roles accidentally culminating in my current job where I am beholden to 73 people spread across 3 continents. Too often I've seen people pursue a management path only to become deeply unhappy, and I've had my own fair share of self-inflicted unrest.
- Being a manager means a bigger attack surface. While it's very appealing to think that if you take on more management responsibility you will be able to make more decisions and thus projects will go the way you think they should, reality is considerably darker. Making more decisions means you are more likely to make a wrong decision. Also, your decisions inevitably affect more people, and it is more likely that you will be faced with lose-lose situations where you will make someone upset no matter how you decide. Hope you like conflict! Not only conflict, but the higher up the management chain you are the more likely you are to end up being accountable for something outside your control.
- If you want to influence projects, being a manager is a very indirect way to get influence, and even then the odds are against you. The book Becoming a Technical Leader outlines ways to influence projects and people and becoming a manager is nowhere near the most effective.
- If you manage just one or two other people, suddenly at least 50% of your job is about what other people are doing rather than what you are doing. If you manage more people, this rapidly hits 100%. It takes a long time to get feedback (positive or negative) on software that you build and ship. Imagine how slow, indirect, and vague the feedback you get on manipulating other people is. Remember those days where you had a tremendous sense of accomplishment because you got a feature working, fixed a tough bug, or helped a customer? Try looking back over 6 months where you put in a ton of effort and your only result is that your team is falling apart because the talented folks are leaving to join startups and the not-so-talented folks won't quit.
- As if you don't have enough problems, suddenly you are responsible for listening and caring about other peoples problems, and trying to help solve them. If you have a team of 20 people and they each have one bad day per month, that means you get to listen to someone complaining about their bad day every single day. Hope you like reading pop psychology books!
- If you want to make more money, being a manager is a terrible way to do it. I've always had people working for me who made more money than I do, and I don't expect that to ever change. If you are comfortable with the idea of using other people to generate money for yourself, a much more direct way is to start your own company. Owning your own company has got all the headache and risk, fewer handcuffs and rules, and much more of the financial upside.
- Being a manager means firing people. You aren't truly a manager until you have had to fire someone, and it blackens a part of your soul in a totally irreparable way. Still, it is an inevitable and unavoidable part of the territory. Sooner or later you are going to have someone on your team who is lazy, a liar, hooked on drugs, or just flat out not smart enough to keep up, and it will be your job to remove them no matter how popular they are with the rest of your team. That is going to be a very difficult day.