You have a team. You have some control, but you’ve quickly discovered that getting people to do something is harder than just telling them to do it. You seem to have given up all control over your own day-to-day. Mostly you spend all day in meetings. You knew this was coming, but it’s not until you live it that you really understand what it means. When you only had a small team you were able to balance things and still write code, but as your team has grown you’ve lost touch with the code. It gnaws at you as something you should be doing, but there’s no time. Every time you snatch a few hours to write code, you realize that it would be irresponsible to check it in and make the team support it, so at best you snatch a script here, debug an issue there. Having the focus to build something big yourself is a distant memory.
You can make decisions — well, some decisions. Realistically, you can maybe narrow down the things that will get decided. You can focus your team on some things, like writing better tests, but they still have a product roadmap to implement, and they have their own ideas for what technical tasks should be prioritized. So, more than making decisions yourself, you’re helping the team make decisions. Your manager gives you goals but then sometimes changes those goals completely, and it’s up to you to explain the changes to the team.
You do set the standards for culture on your team, which is good and bad. It’s good when they take after your best aspects, and it’s bad when you realize that your team is also mirroring your faults.
Your team does not naturally just agree with you, respect you, or even like you. You realize that authority requires more than a title. You find yourself scrambling to motivate them through tough periods when the projects aren’t going well, or when you have to tell individuals that they aren’t ready to be promoted just yet, that they aren’t getting a raise, that there’s no bonus this year. Some of them don’t bother to tell you when they’re unhappy; they just get fed up and quit before you’ve noticed there’s anything wrong. When the company is doing well, and you have lots of money to pay, and there are plenty of exciting projects, life is great; but when things are stressful, you see how little power you have to make people happy. And what’s worse, you can’t even fire people without going through a crazy HR process! Still, you can see that your work matters to some of them, that they are happier and more successful because of your coaching. These little wins sustain you through the tough times.
Other managers are not interested in your feedback. In fact, they find you meddling and get competitive when they think you’re encroaching on their turf. Your own manager does not agree that you’re ready for a bigger team, and can’t really explain why; his coaching skills leave a lot to be desired. Maybe he is just worried that you will outshine him? He definitely does not want you spending all of your time giving talks, though — he gets annoyed when you are out of the office too much, whatever the value the team might get from it. The politics of figuring out how to lead without undermining your peers or your boss are trickier than you expected. But if you can get that bigger team, you know you will get that promotion, so at least your path is clear. When you discovered that the staff engineer who works for you makes more than you do, you almost lost it, so you’d better figure out how to get that bigger team fast. Otherwise, what is the point of all of this stress and nonsense?
My final advice is to remember that you can switch tracks if you want. It is common for people to try out management at some point, realize they don’t enjoy it, and go back to the technical track. Nothing about this choice has to be permanent, but go in with your eyes wide open. Each role has benefits and drawbacks, and it’s up to you to feel out what you enjoy the most.