What software engineering management is like.

2978530454_9356c3352d_z

As of February of 2017, I’ve been an engineering manager for a year. I’ve been doing it for long enough to get a feel for it, and now I can start to talk about how being a manager is different from a normal software developer.

Over the last year, my team fluctuated between 7 and 9 people. I have two tech leads who handle a lot of the day to day technical decision making, but the general people management falls on me.

I still try to code a couple of days a week.

I’ve read arguments about how you should stop coding completely, and focus only on the team. I’ve read others saying you shouldn’t stop coding because then your technical ability will atrophy, and you’ll lose respect.

I believe in the latter. I think it’s important to not let your skills atrophy, not only because of respect, but also if you ever need to look for a job as a regular programmer again.

In general, I think companies should have “technical” managers when dealing with software. Someone who used to do programming professionally can call bullshit. If a task is taking way longer than it should, only a technical manager can spot that something is wrong.

Software is unpredictable, and sometimes a project takes 3X as long as you think it will. Only a trained eye can see if that delay is acceptable, or if it’s the result of someone not doing their job or making the wrong decisions.

Let’s go over some of the advantages and challenges of the job of a manager.

Advantages

Bigger Impact

As a manager, your impact at your company just increased several fold. Instead of only contributing your own code, you now get to take credit for an entire team, even if you’re not coding every day.

Better pay

This one is a no-brainer. I got paid more to become a manager.

In general, if you accept more responsibility, your employer should offer you more money. If they don’t offer you more money, you should try to negotiate for it. If they say no, you should reconsider accepting the position.

I’ve said before that if you’re offered more responsibility, you should take it. Generally leadership is good and leads to more money. But if you’ve had more responsibility for more than a year, and your company still isn’t paying you more, then sorry, they’re taking advantage of you.

Management is also one way to avoid the salary ceiling most software developers experience. You have what is essentially an unlimited ceiling when you move into management. You could theoretically rise all the way to CEO, although I realize this is unlikely.

Increased prestige

If you’re in charge of people, you automatically have prestige within your group. You’ve been recognized as competent and you got a promotion. Congratulations.

Prestige probably matters more to most people than money. It’s a form of public recognition.

Personally, I don’t think I need the publicity. If I was recognized privately in the form of a higher salary that nobody knew about, I’d probably be just as happy.

Growth Opportunity

There are many challenges listed below which might make you wonder why you would ever become a manager. Personally, I like to grow, and going through challenges is a good way to do that.

Challenges

Increased Meetings

This is probably the biggest challenge of programmers turned managers.

Before becoming a manager I had 2-5 hours of meetings per week. As a manager I have anywhere from 10-20 hours, depending on the week, and depending on what I count as a “meeting”. I get pulled into lots of random conversations, and I do a lot of recruiting that aren’t technically “meetings”.

A good software developer enjoys the job of writing code. They’re good at it because they have a passion for it.

When you become a manager, your job is different. Instead of being measured on the features you produce, you’re now measured on the productivity of the team. A lot less depends on you physically producing code. You’re paid to resolve conflicts, recruit new members, and to set a technical direction for your product.

The book The E Myth Revisted talks about this dilemma.

Technically a book about entrepreneurship, it describes how most people who become entrepreneurs like the job of the “technician”, but they don’t necessarily like the job of either management or entrepreneurialism.

In established companies, many managers are lured by the increase in prestige and compensation without realizing they’ll have to sacrifice aspects of the job they loved.

Fortunately I enjoy socializing, and I like the increased impact I have as a manager, so I think I’m adapting to the new role well.

Confrontation

If someone is doing something you don’t agree with, it’s your job to confront them and tell them to change course. The disagreement can be anything from someone wearing an offensive shirt, to a major design decision in the product.

Confrontation is hard because you worry about hurting peoples’ feelings. In the U.S. we generally have a polite culture where everyone tries to be friendly. Telling someone they’re doing something wrong violates this social contract.

Failure to confront leads to two problems. First, for you as a manager, the disagreement will fester. You’ll be thinking about how you don’t agree with whatever is happening, but you’ll feel powerless because you haven’t done anything to remedy the situation. Powerlessness is not a good feeling to have, and I think it’s one of the biggest reasons people quit management in less than a year. They can’t handle the uncomfortableness of confrontation, and then they wind up consumed with frustration.

Second, the team can get way off track. By promoting you to management, the company entrusted you with the larger context of the product. You’re expected to understand the business behind the product, and that knowledge colors all your decisions. You weigh options differently than your employees because of the context that you have and they don’t.

So, if you’re failing to confront people when you disagree, you’re not bringing your context to the table, so you’re failing at your job.

Being “comfortable being in charge”

One of the most intimidating things about being in charge is having to make decisions that might cost hundreds of thousands of dollars in bad services or lost productivity.

I agonized over various choices over the last year, and I cringe whenever I think about how I probably took us in the wrong direction.

One of the advantages to management is that your value has a multiplier. All of your direct reports multiply whatever you could have coded on your own. The disadvantage is when you send the team in the wrong direction. If it had just been you, it would have only cost one developer’s lost productivity. When you’re leading the team, the cost is 5-10 developers worth of lost productivity. And it’s all on you.

Yikes.

Fortunately, forgiving yourself and realizing everyone makes mistakes is a good way to avoid feeling too guilty about this one.


Well that’s it. I’ll let you know in another year if I’m still liking the job.

Photo Credit: hundredthmonkeymagazine

blog comments powered by Disqus