1) God help you if you choose 80% coding and 20% management. Your team will be very unhappy. Maybe you'll take care of the HR/Admin work that noone else can, but their career growth will stagnate, and morale will be low.
2) If you do pick 80% management, and 20% engineering, understand that your growth as an engineer will completely plateau. Yes, you can still participate in design reviews, even weigh in on code reviews, and ship the occasional bug fix/perf improvement/nice-to-have feature or some operational tool that will save your team a bunch of time and make your oncall happy.
But without hands on struggle with a new paradigm or scaling challenge, you won't grow. And given the choice between improving as a manager or improving as a hands on techie, you have to make the choice to work to improve as a manager, and start doing all the invisible things you never realized a manager does (least known and most annoying is managing UPwards)
SOURCE: Just spent a year stepping into a vacant engineering manager role on my team, tried to do the 80-20, didn't love the management role, am back to a full time senior engineer, and am frustrated with my skills that appear to have atrophied.
The people who are "managers" are also splitting their time. They only need to spend maybe 20% of their time in actual supervisory work. The rest of their time is spent on tasks that are delegated to them by their higher-ups. These tasks are largely forms of information processing: Gathering, analyzing, and communicating. Excel and PowerPoint. But they are typically one-time tasks that are not worth automating.
I was happy with the 20% supervision, no problem. But the 80% information processing tasks just weren't interesting to me.
When they finally posted an opening for my old job, I went to the boss and asked: "What do you want me to be, a mediocre manager or a great engineer?" Oddly enough, moving me back to engineering resulted in a second promotion on top of the first. Meanwhile, I did enjoy receiving a fair amount of management training and insider understanding about how the business works.
But those "information processing" tasks you mentioned are the ones that nobody who's not a manager knows about and i HATED them.
Boy if that ain't the most true statement about moving from engineering into management, I don't know what is. I was so exceptionally bad and unprepared for this when I tried my hand at management.
How about this instead: a manager is a representative of a team, and vice-versa. Not every senior leader in a company has time to get to know and evaluate every individual member of every team; instead, they evaluate a manager as a proxy for the whole team. You, as a team member, will be evaluated through your manager. It's up to you whether that evaluation is positive.
"Make your boss a hero" isn't a very endearing way to phrase it, but it's a concise way to say that in a traditional corporate hierarchy, your fate is aligned with your boss's fate.
I understand it’s different if you’re older with kids and a mortgage or lot of health bills or whatever but I haven’t really felt like my fate has ever been tied to any of my employees.
I feel like it’s just headgames for your manager to try and convince you that making him look good is essential to your career.
Edit: in case this is relevant the shitty project was actually the best project in our department as far as I was concerned before my former manager ran it into the ground by trying to look good by promising dozens of features for people who didn’t use it instead of building something that worked and was extensible
And as a company owner, your fate is aligned with your customers' and investors' fate.
Hence the importance of sales, marketing and investor relations, i.e. managing OUTwards and UPwards.
Therefore the team works hard on things that will make the manager and the manager's managers look great in the woder scope of the company, and the manager says, correctly, that the team is responsible for the work.
I think this kind of manuevering is fundamental to large human organizations with scarce resources (you know, all of them) so the goal is to make it as healthy as possible.
Why? If my bosses boss is happy with my boss then our department gets a bigger budget, more interesting projects and, most important, we get more autonomy and get left alone more. All of those things directly improve my quality of life. If I can keep my bosses boss off my bosses back, then my boss won't be on my back.
In a smaller company where teams are more cohesive and you have pretty clear objectives, management can be easy. But in larger corps, management becomes this big firestorm of meetings where if you as a manager don't represent your team well enough they will be starved off resources, projects and perhaps more importantly, recognition. Team members will see this and jump ship quickly enough.
This is perhaps the biggest reason I personally prefer smaller companies. Its statistically more likely to have a more effective manager, because a manager doesn't have to be a superstar to get their teams what they need.
- Metrics for the business to understand what our pain points are
- 1:1 Prep and post 1:1 vision planning ("Is everyone aligned?")
- Performance review prep (time of year)
- Chasing down other managers to try and get problems fixed that were surfaced in 1:1s
- a "net" above the team, to filter out any business side bs that would go their way that would be a distraction. (The team has to trust that I have their best interest in mind. That's why a net, I let them know, and they can see)
- Capacity Planning (Do we have enough people for the growth plan? Oh, did the growth plan get updated? Lemme take another look...)
- Hiring
- Reviewing Resumes
- Are our policies up to date?
- Process thinking (usually surfaced by pain points from 1:1s)
It's a lot of meta thinking
Hiring:
- Writing job specs.
- Dealing with recruiters
- Reading CVs/résumés
- Interviews
- Onboarding
- Outreach
- Who do you need to hire next quarter to avoid capacity problems?
People:
- How do you level up your developers? What new responsibilities can you delegate to them so that they can grow without swamping them? Are you available enough to them so you can help them take these new tasks on?
- Evaluating training courses / conferences etc.
- Are there any personal or interpersonal problems that need sorting?
- What can you do to help your team gel better and feel like they are part of a team?
- Where are your team members' careers heading and how can you help them get there?
- Your team has grown too large to manage effectively by yourself. How do you split things up?
Process:
- What is everybody working on? What will everybody work on next?
- What are people blocked on? How do you unblock them? What is likely to block them next?
- Can you do things in a better way? How?
- You've got a lot of bugs in the backlog. Is there a root cause? Are there any patterns?
- You aren't performing as well as you thought you were. Where is the time being spent? What's the cause? Are the estimates wrong or the performance?
- Some people want to shift their hours or work remotely. Can you accommodate this? Do you have to adjust process and if so, how?
Line management:
- Approving invoices
- Approving holidays
- One on ones
- Salary review
- Getting people back to work after sickness / parental leave / sabbaticals
- Disciplinaries / performance problems
- Firing / redundancies
- Exit interviews
Planning:
- How well is your team performing? How do you measure this and how do you improve?
- Do you have enough capacity?
- If not, which features do you bump?
- Are there any bottlenecks in the pipeline?
- What are you telling the shareholders you're delivering next quarter?
Product:
- Does marketing know what you are building next? What information do they need from you to sell it?
- Do CS know how to support your customers with the new features?
- Feedback from the rest of the business about the product and how the tech team works.
- Are the specs precise, correct, complete, and achievable?
- Features have been requested. Are they technically feasible? What's the general size of it and what quarter can we deliver it by?
- A big customer has a major problem with your product. It's not your fault, but it has a disproportionate affect on the customer. How do you prioritise solving this problem?
External:
- A shareholder owns a business with a related product that they want integrated ASAP. How do you deal with that pressure without disrupting your plan?
- One of your suppliers has a data breach that has leaked your data. How do you deal with that? Have you defined processes for reporting security issues?
- A supplier is failing to perform adequately. Can it be fixed? How do you move away? How soon? Where does the work fit into the schedule?
- A supplier has changed their pricing structure. Do you have to move? How soon? Where does the work fit into the schedule?
- New legislation has been passed and you have to make changes to your product. What are the requirements?
- A complaint has been made about the accessibility of your product. Does it have merit? What's the impact of fixing it, and how urgent is it?
- A big prospective customer is on the verge of signing, but they must have one feature that you weren't planning on building until next year. How do you rearrange things to get the customer with minimum impact?
- A service you use is changing their API. What's the risk of staying on the deprecated version until it can be planned in?
I guess if I could summarise the above, it's that there's an awful lot of very ill-defined and irregular things that need deciding about and acting upon, and it's an engineering manager's job to corral that into some sort of order and make sure it all happens. Lots of spinning plates and dealing with things that don't really fit neatly into a job description, especially at smaller companies.
1 phone call with a candidate that accepted an offer
3 scrum team demo sessions
3 standups
1 standing meeting for escalated support case review
2 1:1 meetings
In addition, I will spend a chunk of time reading and sorting resumes, preparing a presentation I'm delivering next week, following up on a few blocking issues that came up last night/this morning, and reviewing the progress of software upgrade that's on-going.
In most companies its hard to dedicate the time to DevEx but as a manager I can rock out a few features for our cli in a couple hours. If i'm delayed it doesn't really hurt the status quo but when I succeed my developers love it because I make their lives easier (the (almost) entire point of being a manager). It scratches the coding itch too although I have lost many evening and weekends getting carried away.
Someone told me: Once you have 10 people on your team, if you spend 100% time coding, you increase amount of coding by 10%.
Instead, either spend time finding that next hire (increase by 10%), or work on other things that improves the team's productivity even more.
For me, the hard part is when the team size is ~5-8 people. Too big for me to be 80% technical, but usually not quite such that managing is 80% either. This is when it's easy to sign up for critical tasks and get interrupted due to manager stuff, and as a result work 160% total. Once the team grows it usually gets easier.
Personally, I think that the sort of code you're talking about here is a big part of the mix of things that a Lead should be working on, or at least championing. You don't actually want these people to have too much code with their name on it for the same reason you don't want Managers to do it: It gets treated as a sacred cow whether you want it to or not.
For myself, I'd estimate it's about a 40-40-20 split between DevEx code, the most safety-critical functions in libraries, and example code respectively. But, I'd aspire to flip the last two numbers (on a high functioning team I should be able to trust other people to do bits I barely trust myself to get right).
And unless you enjoy bottlenecks (some people do because it makes them feel special), you should be trying to get most of the code written by people of average skill (the peak of your employee bell curve). So if I'm writing even half as much code as they are, things aren't going well at all. You want a light touch.
I am trying to understand the meaning of this word through context and/or through Google but I only get some social media platform. What is DevEx.
I have worked in an early web dev team that sort of worked like that at BT I was the backup/toolsmith.
I don’t know if I’m crazy or living in the future, but it’s definitely frustrating and a little alienating.
We call this the '@companynamespace' layer, includes wrappers for internal APIs, and additional sugar we use everywhere (AWS, status, metrics)
> make their lives easier (the (almost) entire point of being a manager)
I am glad I am not alone in this, and sadly, I feel that way most of the time.
One pattern that seems to work is to write the code if it's easier to explain it in code (& tests!) than in words.
That's a good rule of thumb too – haven't heard that before.
We are a developer focused company so your mileage may vary.
Totally agree. What I've seen work is when engineering managers work on non-critical (but high impact) improvements, on initial prototypes (so that they can have a good idea of challenges when they allocate resources), bug fixes, getting involved in outage remediation, etc.
I think a lot of developers who become more senior also really struggle with delegation. We're that used to dealing with every tiny detail that taking our hands off the wheel feels unnatural. We're that used to solving technical problems, that when somebody has a technical problem, our instinct is to solve the problem for them instead of pointing them in the right direction so they can solve it for themselves. But that doesn't scale and doesn't help more junior developers grow. Teach a man to fish and all that.
As someone who had a manager who was very hands on... it was frustrating. The code he wrote was brilliant, but it was hard to review against him. Furthermore, when bugs came up, it was always "hey guys I don't have time for it, please fix it."
Especially since I've been working as a solo freelance dev and moving into managing teams feels like I'm leaving my main monetizable skill behind.
As soon as you start taking on managerial work, your development productivity starts to fall rapidly. I've never found a happy medium, nor have I seen others achieve it. People who try to do both quickly settle on ~80% of one and ~20% of the other. Which is fine if you acknowledge that you can only do ~20% of the other, and that the shape of it is likely to look very different to when you were spending 100% of your time on it.
As others have mentioned, if you are an engineering manager and you still want to dedicate some of your working time to development, you have to take yourself out of the critical path. Nobody wants to hold up a release because you were working on an important part of it and you've been constantly interrupted all week with managerial work and meetings.
Instead, pick things that are either tiny or decoupled from the release process. Things like refactoring, non-critical bug fixes, documentation, tests, spikes. These are the kinds of things that won't fall apart if your development productivity is unpredictable and the kinds of things that are easy to put down and pick up again. As an engineering manager, you're interrupt-driven which is incredibly disruptive for focus. If you do write code, then it has to be the code that works within those constraints, or you'll end up being a blocker for the rest of the team and your managerial work will suffer as well.