The best engineering manager in my career was not amongst the best developers I knew. (Conversely, the worst engineering manager in my career was one of the best developers I knew).
He had two particular skills that many will never have or take a decade or two to cultivate: he could provide you feedback, empathetically, and make you feel like he is genuinely interested in your success and improvement, and he could read a room like no other, often times being the one to say the right thing to break the tension in the room or ask the right question to get us over a roadblock.
I know you aren't saying be the best or focus on coding, but if I look back and had to pick between the two, I'd pick the engineering manager who has cultivated the soft skills. At a certain scale, all engineering problems become people problems.
You need both. And in my experience it’s rare that an engineer will have strong soft and hard skills. I have known exactly one person with that rare combination, and he has since started his own successful company.
Unfortunately the smartest and most component engineers I have known have nearly always come across as being arrogant. They have a very solid grasp of their domain and a strong skillset, but they also expect everyone around them to be at their level and instantly follow everything they’re saying. These people sometimes even have disciples who follow the philosophy of arrogance and engage in gatekeeping. I have concluded that while this is not ideal, it’s often par for the course.
Conversely, the best engineering leaders I have known (architects, tech leads, product owners, requirements analysts, etc.) have had really strong empathy and encouraged healthy debate while also making everyone’s input and analysis feel welcome and valued. Their technical skillset is not necessarily the strongest but they’ve usually been good generalists who could talk intelligently about something at a high level without having to know the technical details. These people have also been able to take those arrogant engineers and have gotten them to successfully collaborate with everyone from the junior devs up to management. A good tech leader really is just a good mediator.
> Unfortunately the smartest and most component engineers I have known have nearly always come across as being arrogant.
Funny, in my experience these aren't competent engineers so much as dangerous. Engineers who worship at the altar of complexity and get enraged if you point out their mistakes.
The smartest and most competent engineers I have ever known have nearly always been furries.
That's fair but my perspective as a lowly engineer was I wanted a role model to learn from and help upskill my career. My people manager managers never had the skills to provide me with any growth, the only reason I'm at where I am today is because I decided I wanted to level up and taught myself outside of work.
It's my goal as a manager to be that manager that I never had and lead by example for my reports technically in addition to the expected soft skills of a traditional people manager.
The thing is that role model should not be your manager, it should be a senior developer. A good manager is not a role model to teach you, a good manager realizes the importance of lowly engineers having role models and creates a structured mentorship program to make sure that need is being met.
I don't understand why managers cannot fulfill both roles though? The job of management isn't hard (I'm doing it). Outside of the project management responsibilities, there is a lot of time doing nothing. If I wasn't coding, as a manager, 80% of the time I would sit around doing nothing.
I strongly believe that managers should be able to fulfill both roles but maybe it's just because I've been burned by so many managers in the past.
I’d ask a few questions about the bits of management that I think are hard.
How do you get your team aligned on the company’s priorities as they shift?
How do you foster growth?
How do you assess who needs to be promoted/given a raise?
How do you handle feedback for employees that aren’t doing well, or aren’t meeting your expectations (or even harder, employees who think they should be promoted but you think are just solid at their current level)?
And the big/meta one - what do you think the job of a manager is? (Could just be a semantic disconnect on what the job entails).
I have concluded that nothing is easy. Being a manager (at least a good one) is definitely not easy; being a good engineer is definitely not easy. They are both difficult in their own district ways.
The most important skill to have in the workplace, management or not, is humility. This absolutely does not mean that you’re a pushover, but it does mean that you should never deceive yourself with the notion that you’re infallible.
I don’t think I’ve seen it ACTUALLY be anything but B in the real world, but theoretically, to answer your question -
1) that’s interesting! What do you consider the hardest people management issue you’ve run across?
2) what is the people management problem you think most people overrate in difficulty?
It usually will surface if they, for instance, consider people management easy because they have zero emotional affect and hence never bear any emotional load, or if they’ve been bless by ignorance and don’t see the work their peer and senior managers are doing to avoid them setting everything on fire, or never consider coaching or growth of someone to be a problem - because they never do it.
I'm going to pile on here with the others. If you're legitimately a people manager (not a low grade 'team lead'), there is no way, no how, you could have 80% free time.
I've been doing this for some 23 years and had a stint as a proper manager for a year, where I spent about 20% of my time coding, and I was more starved for time than just about any other phase in my career.
I'm currently a principal eng/ arch at a mid-size medical device company, and my principal eng/people manager complement, perhaps one of the strongest devs I've ever encountered (close to a fabled 10x dev), barely has time to code at all. He's just slammed all day every day with general meetings, doing 1-on-1s, presentation prep, working on process improvements, Scrum/product owners for backlog grooming, interfacing with other managers, etc, it just kills his day for anything more than tiny bits of coding here and there, and because he is such a great dev, he does provide meaningful contributions.
I have worked at small startups where things are a bit better, but I can't recall ever seeing a case where a good manager has more than 1/3 of their time to code. 80% dead time would mean hardly managing at all.
> If you're legitimately a people manager (not a low grade 'team lead'), there is no way, no how, you could have 80% free time.
Just because you've never seen this dynamic work successfully doesn't mean that it doesn't. The best manager I've ever had operated like this. She spent most of her time coding and made sure to know what everyone on the team was up to. We were all competent professionals, so we did a perfectly fine job of prioritizing our work and working with others within the team and across teams to get things done. It helped that much of our work could easily be undertaken in parallel with strong ownership of different parts of the code by a single person, but when there were projects that required strong and frequent collaboration she just carved out a sub-team and designated a lead then trusted the lead in the same way she trusted us as individuals. Not only did this mean that we got the benefit of her very impressive technical contributions, but it also meant that we were all able to be more productive because we spent vastly less time in BS meetings.
Afterwards, I moved to a company with a more traditional structure. Ostensibly there were three people in charge of me: my engineering manager, my product manager, and my designer (since we are "design lead"). It was a pretty big culture shock. One difference is that there are a lot more junior people in my new company (the average age was around 50 in the first one), and I think younger engineers may need a firmer hand, but I'm not sure that that explains it all. I joined the first place right out of college and thrived in that environment.
I think most people don't understand just how effective a minimal management strategy can be because they've never experienced one that works well.
I meant specifically things only a manager does. For instance, the presentations he does are for director/vp level, hefty slide deck stuff.
Of course the more senior ICs do more than simply code AFA talk across teams and divisions to scope and define work, present workshops and presentations to the team and cross-departments, contribute to architecture decisions, present as SMEs across various parts of the stack, and mentor juniors. None of the ICs year on my team spend more than 80% of their time simply coding, the more senior staff spend probably more like 60-70%, and I spend about 50%.
I’ve worked at 14 companies over 23 years, from 3 Fortune 500s, to a couple mid-sized, to a bunch of smaller companies, to a handful of early stage startups. Have had probably close to 20 supervisors over this time and interfaced with dozens of other managers on related teams, and been a team lead about 5 or so times and a manager once.
I’ve never seen this dynamic play out. IME you're talking about a team lead not an actual people manager. Even in the most streamlined/simplest environments, I don’t think I’ve ever seen a people manager spend the majority of their time coding, not unless they were pushing 60+ hours doing so. Something as simple as 1-on-1s should be done at least once every week or two, and that can take up to an hour (or more counting prep) for every report.
Your mention of having multiple sups and junior heavy ICs at one place sounds dysfunctional and has little relation to any place I’ve worked at.
Those presentations to the higher levels didn’t really happen because the corporate structure was very flat. Also, I would not expect those to take up all that much time.
You may have worked at a lot of places, but your experience is still only a tiny slice of the different shops out there. My experience is likewise limited, and I acknowledge that such light touch management is probably very rare, but it can and does work.
You said she was a team lead not a real manager, which does have some truth to it, but it’s not like there was someone doing the “real” management work to pick up the slack for her. In the right environment that stuff simply isn’t needed.
> such light touch management is probably very rare
Don't be too certain about that :-) I recognize the things you mention from my first job, I had a manager / CTO who were like her. (This was a 20-30 ppl startup, high trust, not many meetings)
> general meetings, presentation prep, working on process improvements, Scrum/product owners for backlog grooming, interfacing with other managers, etc
You as a manager don't need to do all that. If you can't delegate most of that to reports then you have a problem.
In most companies, once you’ve built or found the people to delegate that too, and handed it off successfully - congrats, you’ve demonstrated you can handle the next level and you get the next round of challenges.
If you’re sitting around with nothing to do, either you’re in a dead end, or no one actually trusts you with more once you’ve ‘succeeded’ because you’ve burned too many bridges or alienated key people - even if the org chart looks good.
Of course if someone is finding themselves in that churn all day for any length of time, you are quite correct - they are busy not succeeding.
You don't delegate everything to a single person, you delegate the parts to the person best fit to do it.
And no, delegating a lot of those tasks doesn't mean that you as a manager have nothing to do. Instead you can spend 20% time doing management tasks and 80% time coding. Each person in the team sharing the "management" burden makes it pretty manageable. (it isn't really management to coordinate with other teams or present to people etc though, no reason you should have a bus factor of 1 for that role)
I literally do this for a living (20+ years now), and have never seen anyone successfully pull this off that was doing what I (or the company) called managing.
I have seen a few people convince themselves this is what they were doing (usually in a line manager/tlm role), while everyone around them was suffering from lack of a proper manager, which their lack of EQ was hiding.
If you somehow found the secret sauce for this, please do share!
Seconding that - managing for ~15 years, with 15 years eng career before that. If you're a manager who spends 80% coding on anything but a small team (<7 people), you're letting your team down.
You might think you're doing a good job, but you really aren't. 20% of your time are only 8 hours. Even if you just spend half an hour with everybody on your team of 8, 4 of those are gone. You haven't spent any time yet coordinating the team as a whole. You haven't spent any time planning. You haven't even answered e-mails yet. Neither did you do any signficant coaching. Nor did you spend time hiring. Or even writing a job description. Or planning compensation. Or helping your two star engineers who are at loggerheads to come to an agreement. Prioritized the backlog? Set up a triage process? Spent way too much time to find out why your junior is super-withdrawn and doesn't ask questions? Set them up with mentorship? How's that design review coming along? Talked UX of the latest "luxe UI" ledge? Got yelled at by them because one of your engineers decided that specs are just suggestions? How's that training program for the new toolkit coming along? Also, the team is kind of nervous because the big project will end in 9 months, and there isn't a new big project yet?
TLM roles are the biggest mistake this industry makes. They work beautifully for 3-5 people, start crumbling for 6-10, soak 100% of your time for 11-14 people just managing while you despair you can't do technical work any more, and become an incredible way to burn out people at 15+ direct reports.
As long as we are throwing out anecdotes, I've been doing this for 3 years and have seen successfully done it on several teams, though they were all at the same company. It absolutely can be done with the right culture.
> Instead you can spend 20% time doing management tasks and 80% time coding.
If you're that good at delegating that you're only using 20% of your time and your team is humming along at a high level... congrats, we've got these other four teams that AREN'T being managed that well, you're now the senior manager in charge of all of them, please get those other managers up to your level too!
Where do you work? Sign me up! I have hardly any time to code after weekly sprint-related ceremonies, 1:1's, cycle planning, and architecture and code reviews.
The job of management, like the job of any developer, varies from company to company, and situation to situation. Thankfully, the people side of my job as a manager is easy right now, but only because the people I manage are reasonable people to work with, and well receptive to feedback. It was very difficult last year when I had to work through more delicate relationships between the employee and employer. As always, it comes down to people.
It also sounds like the place you may be managing at may not be challenging enough for you. Perhaps it's time to make a change?
It all becomes a bunch of soft targets as a manager and that's really hard.
The one big success I had when I was a manager was getting our client teams to unify on the bugs they were having and to be much more cohesive. When I first got there the android and ios and web people never talked and refused to believe they had the same types of issues/bugs. LOL.
I ultimately hated it because really... I don't want to yell at people for being late to standup, so went back to engineering.
I've been a manager for a while and at best I get 20% time to code. With 8+ reports the weeks tends to break down into:
* 20% for 1-on-1s and dealing with management level issues people bring up.
* 20% spent on hiring
* 20% on various status meetings (team, cross-team, with my boss, etc.)
* 20% spent on pro-actively finding or solving issues before the explode. This includes networking with my counterparts in the rest of the org so I get information and build political capital.
I'm an engineering manager and find it hard to relate to this. With 1:1s, ops reviews, planning, retros, design reviews, support syncs, etc., I have ~6-10 hours of meetings per day - then for non-meeting work I'm writing roadmaps, interviewing, managing escalations, doing project management, status reports, etc. How do you have 80% of your time free as a manager after this? I think that makes sense to code if you have that time, but my experience is that having that much time available as a manager would be an outlier.
As an EM, 20% of time spent on project management sounds about right. What you are overlooking is the time spent managing the people on a team. Hiring, recruiting, promotions, coordinating parental leave, working out visas with immigration attorneys, check ins, comp adjustments, etc all take immense time and energy to do properly. It’s a full time job and then some.
There was a post on HN few months back where the author listed atleast 30 tasks that a manager should be doing. The list included planning, mentorship, motivating team, hiring, communicating to higher management etc. It was a long list. I don't thing any person doing those task can also be a competent programmer.
> ... as a lowly engineer was I wanted a role model to learn from and help upskill my career.
There is no reason this has to be your manager. Your managers job was to understand that this was something you needed, and find a way to try and provide it for you; it's unfortunate that didn't happen for you.
> It's my goal as a manager to be that manager
Can I make a suggestion? As a manager it's important that you respond to what your team actually needs, rather than your perception of what you would have needed in their place.
There are a number of ways to do this well, and a much larger number of ways to mess it up.
A manager is only a role model if the promotion structure is Engineer->Manager. At most modern tech companies that is not the main promotion structure. It's Engineer->Senior Engineer->Staff Engineer->Etc. Engineering management is a different path you can choose just like you can become a product manager but it is not the expected path.
Companies like to claim this, but it's not the reality due to an imbalance in power between managers and IC engineers. A manager controls a reports salary, career progression, has more face time with VPs and so on. Software engineering is unique in that ICs can still scale to a similar level of impact as executives, but it is a mistake to think that a Staff engineer and Manager are equal in the eyes of the organization. They aren't.
A title bump without the reporting structure changes to go with it is just a fancy way to dress up a raise, sure, but that's not the only option.
In companies doing this well, the high-level engineer doesn't report to the immediate team lead, but reports to the same director that lead does. Or VP vs director for even-higher-level engineers vs higher-level managers.
That structure, more than the title, is what shows you if you're really on an equivalent track.
There is nothing special about software engineering as a
technical track this way. There is no one way to set up an organization. To a large degree they are how they actually work (i.e. not what's on paper).
This balance has been an issue in managing technical teams for about as long as that has been a thing, which is a lot longer than software has been a thing. There is a fundamental tension though, in that the focus you need to maintain expertise in your field contends with the breadth you need to understand the context well enough to make good decisions.
I suspect the real reason that you don't see more of it in practice is that it's actually really hard to continue to do both well at a very high level, and it's also organizationally hard to do.
There is something special about software engineering because it is fundamentally about automation. As a result, an individual software engineer can create the sort of impact that traditionally would require a team.
I'm trying to make sense of the rest of your post, but it uses a lot of pronouns that don't appear to reference anything.
I agree software has more leverage, sometimes but we are talking here about how decision making power is distributed in a company.
Regardless about how much impact the IC technical output can have that is about how. The skills & information needed to make good decisions about what and when are different.
Unfortunately, being highly effective at both requires spending time and focus in ways that are somewhat mutually exclusive, which makes this quite hard.
Once you start crossing the sr eng -> staff eng rubicon, you start doing more managmentesque things anyway. Maybe less 1:1s with specific reports, but you are definately talking to a lot of people and teams trying to lead the direction & design of what you are working on as a group.
I've seen people go from Engineer to Manager, skipping over, for want of better phrasing, the senior engineering ranks. In both cases it went poorly and a founders child was involved, indirectly at first and then later directly.
One of the founders children was hired on to a low ranking managers team as an entry level Software Engineer. They were hired specifically by the low ranking manager and without the typical interview process. That low ranking manager, inside of a calendar year, became the director of an entirely new division in the engineering org. That division eventually went defunct, having never shipped a single product to production or having accomplished anything else of note.
The other was a founders child being promoted from SE I or SE II into a middle management role. That also did not end well.
Another general comment on this theme. In my experience people making the engineer to manager transition typically need a mentor and guidance in management even more than they ever needed a technical mentor.
I guess you talk about group leaders, not project managers. Group leaders are from developers, with added responsibilities (and that means with added work).
We worked together at what I can only describe as a data collection meat grinder. One of those places that loves to say it's all about people one side of their mouth, and act completely contrary to that in the day to day when it comes to chasing revenue and growth. He was met with heavy resistance from senior level business directors because he actually put what the company said were their principles into practice every day. This burned him out a little bit, so he took a break, and is now looking. You hiring?
Keeping current on coding, while not attempting to be the best coder in the building, is a key soft skill in terms of participating understanding, and evaluating technical decisions and problems. Empathy comes from placing yourself in the other person's shoes.
This is also true for communicating enterprise-wide considerations to coding teams. They have to trust you not to blindly push senior management priorities. If you know the cost of both capital and tech debt, you are more likely to have represented the coding team and influenced decisions, and be able to communicate decisions effectively.
I am having a hard time understanding what you are saying, perhaps you could restate? Coding is not a soft skill, even if that is in a capacity where it's used ancillary to other tasks such as the ones you mentioned.
I am glad you mentioned it, because communication and trust, on the flip side, are soft skills. You can foster trust through excellent communication and understanding Where the engineering manager does not excel in a particular area of expertise, he or she will defer to the ones that do. A good engineering manager knows their weaknesses, and how to ask for help. The good engineering manager will seek to gather understanding of the technical debts and use that to represent the coding team well. Again communicating those decisions effectively are orthogonal to that process (meaning you can communicate a poor decision effectively just as well as communicating a good decision effectively)
He had two particular skills that many will never have or take a decade or two to cultivate: he could provide you feedback, empathetically, and make you feel like he is genuinely interested in your success and improvement, and he could read a room like no other, often times being the one to say the right thing to break the tension in the room or ask the right question to get us over a roadblock.
I know you aren't saying be the best or focus on coding, but if I look back and had to pick between the two, I'd pick the engineering manager who has cultivated the soft skills. At a certain scale, all engineering problems become people problems.