21 Oct 22
Being in leadership is a craft of its own. I’ve been an informal leader, a Tech Lead on a few teams, an Engineering Manager to quite a few teams, and a Director of Engineering a few times. The roles and responsibilities are different in every company I’ve been a part of. I’ve been told I stand out as a manager. I’ve been nominated for awards and recognition. The biggest testimonial I have ever received came from an engineer that said “thank you, I’ve never had a manager that cared”. I'll never forget that.
With that said, I not a manager or leader right now. Why? Because my original craft is writing software. I’ve spent decades learning the craft, and I don’t want to atrophy those skills. I believe this is fundamental. I don’t feel you can be a great manager of software engineers if you yourself don’t understand pretty closely what you are managing. I've worked places where people have asked why the managers weren't more technical, so I don't think I'm alone in my thinking here.
Being able to relate (and have a seat on the on-call rotation) is extremely helpful. Notice, I’m not saying mandatory. I think you can be a damn good manager without having the ability to build everything your teams do yourself, but I prefer it.
When the team, or a team member, says it is going to take 5 days to accomplish something, it helps if you have a good idea how to do it yourself. You don’t have to be the expert. I certainly haven’t been in many cases, including when I was asked to manage a team at Nike that heavily utilized Kinesis and Lambdas. The team were the experts. Ideally, you trust the team members, but if you are familiar you may be able to lend a hand, propose a different approach, take on the mundane paths like permissions, plan iterations and help the team accelerate.
By being familiar, you can gather requirements and write the stories in a way that contain all of the information the team members need when they start. By being familiar, you understand the significance of test coverage. You understand why the team wants to invest in CI/CD.
You get the point. Being an engineer first before you are a manager of a team of engineers is helpful from my perspective. But it's not the only pre-requisite.
Leadership is its own craft and requires practice. Having a past in engineering simply isn’t enough. Similar to how engineers require experience in order to make less risky decisions, the craft of leading requires experience. Some may be born leaders, but experience helps. That is undeniable.
In addition to experience, learning from others is key. Read books. Look at conference talks. Join discussions. All the things engineers do about engineering. As an engineer, I read a lot of books about patterns and programming languages. I've done the same as a manager. I would encourage others to do the same. The more you know, the more you can achieve as a manager. It's a craft that needs to be practiced.
Luckily, I was in a position where I could accept a position working with old friends and colleagues as an engineering peer. That doesn’t mean I don’t ever want to be a manager again, far from it. I miss leading teams and expect to move back into that team role in the future once the right opportunity comes my way. But as Charity Majors said “if management isn't a promotion then engineering is not a demotion”. I think one complements the other. I believe sharpening and expanding my engineering skills will make me a better manager in the near future.