I have a counter/supplementary theory that it is just as disruptive to assume a good developer will be a good leader or manager, too.
Rant time (aimed at no one in particular, especially not parent comment):
Managing is a very different skillset. There needs to be some significant knowledge of the industry at large, the specific domain that is relevant to your biz, and "generic" (for lack of a better phrase) management skills (i.e., communication and management of the squishy bits of your org that show signs of sentience and sometimes speak)
I've lost count the number of times I've heard colleagues say "They are such a bad (technical) manager, they'd never be able to do what I/we do." and have responded with "They don't need to. That's why they pay you."
I get very tired of this "debate" that it is management _versus_ IC/developer/engineer/worker. I also strongly believe a lot of what is perceived as "top-down" management is harbored by a "bottom-up" resentment - or just plain resisting authority.
You are a team, so work together.
I also hold the opinion that if your organisation has this mindset ("versus") within then you have a much bigger problem than what is presented at face value.
As long as the people calling the shots still make more money than I do and I am the one cleaning up the mess that creates, I feel pretty justified in resenting them.
The first thing that comes to my head when talking about bad management are manager positions with the power of taking decisions they they either don't fully grasp the consequences at-large of, or will not be hold accountable of bad results for.
I'm not going to pretend managers are automatically all massive value-adds. A bad manager is a bad manager. But a bad developer is a bad developer. A bad person is a bad person.
My previous rant is mostly about those who perpetuate this nonsensical adversary between managers and workers everywhere they go, often wearing their repertoire of conflict with management like some kind of accolade.
To assume any given manager is bad because of previous experience, or based upon your own misunderstanding of what a manager does? That is ignorance and prejudice, which is your cross to bear.
"Managers" (the collective/stereotype) don't deserve any resentment. An individual manager that is disruptive and/or a drain on the team's productivity then sure, there is a valid grievance.
When I create messes I get fired.
When I fix messes my boss gets promoted.
This has been the case anywhere I've gone. It is the reality most places I think. Companies that operate differently are the exception.
I have no problems with managers dictating things as long as they take the responsibility of delays, failures, outages
We need people who know where we want to end up, can recognize problems, understand dependencies, can remove hurdles, can provide resources, can communicate, make sound and stable decisions, motivate and plan. Some of these skills are mandatory in a developer but there are quite a number of managers who have a surprising lack of ability to recognize dependencies, mentally juggle dependencies, plan and making stable decisions. And when they are coming from a pure "agile master" factory they may even not be able to communicate and focus on a product goal.
> You are a team, so work together.
I agree but there are cases where managers are such a bad fit that exchanging them is the only option. Two days ago I put out feelers to see whether others thought our project manager was in over his head and we needed to escalate it. Working as a team together was not really an option as we as a team would have to do all the managers work, deal with the overhead he was creating and still had key questions undecided. Yesterday I learned the manager is quitting which is good for everyone, clearly he was not comfortable in his role and had looked for alternatives. And no, there was no animosity from the team and he had a lot of help when he started. A nice guy but not a fit.
Imagine a job advertisement:
Position available for (Software Development, but any industry really) Project Manager.
Hard requirements:
• Take ownership • Delegate • Know where we want to end up • Recognise problems • Understand dependencies • Remove hurdles • Provide resources by identify bottlenecks and resource constraints and remove them • Be able to communicate to the team collectively and each member individually to a high level • Make sound and stable decisions • Motivate the team • Do all of these things well above average level • Not just this project and this team, but also the next project and when the team gets shuffled around from time to time
There are approximately zero people who can do all of this on a consistent basis. Maybe one in a million can do some of it well some of the time, perhaps. Maybe.
If you have a manager who is simply a reasonable sort of person, though they may be lacking everything else, I strongly urge you to do everything you can to keep that person where they are. If you don't mind tolerating them, you're on to good thing, because there's a fair chance ousting them will result in your team finding the next person is much much worse.
Consider e.g., https://en.wikipedia.org/wiki/List_of_current_Premier_League... except for one or two, all managers are former players. Why? We all know something about that industry at large.
My theory is that when you are competing on equal terms you cannot afford managers that are not part of the game.
You usually hear in such orgs, that they are like family, and in most cases you don't get hired unless someone knows you.
I think your comment explains at least one aspect of what makes him a good manager.
I hate it when I promote a team lead, and they change what they've been doing. I promoted because they were already doing the job.
The only way around this for devs is to say No to solving their problems and letting management deal with the fallout (loss of customers/revenue)
I think that's part of it, but the bigger reason is that the management talent pool is too small to meet the industry need. The same is true of engineers as well.
There's little apprenticeship, little mentorship, and little experience is gained seeing things done well. Capable people are being shoved aggressively and prematurely into decision-making roles (whether in management or engineering) before they've developed the skills and perspective necessary to do the job well. No question, talent scarcity makes for lucrative pay and easy mobility for the average tech professional. But quality suffers, nonetheless.
So, when a sequence of directors each wants to "refresh" how the planning and prioritization process works, or reintroduce OKRs because they believe that what the org was doing up until that point was an incorrect, or champion some new set of Principles that obligates all existing projects to re-justify their existence in new terms, or move all project management into a new tool, they're creating a narrative of leadership. And they can tell a good story well before the non-impacts become visible, and without having to examine or deeply understand the technical aspects of what it is they're managing.
In some cases, this can be a modest productivity tax to the impacted teams. Some number of weeks from every quarter gets dedicated to servicing the most recent process changes etc. But sometimes it's actively harmful (creating separate silos for functions that really need to be in close coordination, etc).
Part of the reason is that relatively small details have organization-wide impacts. A handful of services might be under-resourced and overdue to drop calls to legacy APIs... That causes ongoing effort to maintain those APIs, the outdated technology they depend on, ad infinitum. Entire migrations can grind to a halt. Engineer productivity could be cut in half. Gaping security holes can be unfixed.
Top-down solutions to those problems ("Here's budget. Fix it!") don't necessarily help as solving the systemic problems can require technical analysis to fully map from strategic needs to particular patches to particular projects.
The people that understand systemic technology impact and the people who understand systemic cost and value need healthy and active lines of communication. Passing status messages up, down, and across the chain of command only gets you so far.
If we could just find the right magic tool then all our problems would be solved! Step 1 is build automation, step 2 is define the process! What we need to fix this broken process is more people. These two teams have different goals/OKRs so they have trouble getting along, let's fix it with technology
Technology and money are great accelerators but if you don't have a process that could be performed manually with enough people then technology is just going to make you do the wrong thing faster.
When you have a hammer, everything looks like a nail.
Apple takes the approach of essentially forcing their best engineers to become managers.
[0] https://hbr.org/2020/11/how-apple-is-organized-for-innovatio...
A lot of stuff I see about what an EM should do, on places like leaddev, in the well known eng. management books, those are all great. They cover most of what I enjoy doing as an engineering manager. But they also means shit for moving up in many (most ?) larger orgs.
Part of the issue is that as the company grows in size, it becomes essentially impossible to correlate company success with certain teams. The complexity becomes such as people above you cannot possibly understand properly what's happening there. At this point, it starts to become all about managing up and lateraly, which takes an awful lot of time. People above you even has less mental space than you on what's happening in your org. So one trick that many senior managers will us, in engineering and otherwise, is to be behind some big salient initiatives. It is kind of a marketing trick. Do something visible that be associated to you.
And then unfortunately the trick often becomes to leave before people can understand the mess that creates. But I think it is important to understand the incentive behind that: it is not because people are evil or stupid. It is just inherent to most large organizations. Very very few large orgs has been able to prevent this behavior.
But most problems aren’t a result of following the correct “science” of management, itself a dubious proposition, but can be traced back to what’s really important. You have to have the right people in the building to start with.
But it's even better than that, as every time communication occurs you are playing a game of telephone with translation errors. The essential complexity might be very easy, but when you need to translate that problem from users to project managers to architect to developer(and I'm sure many teams have many more layers than this) the complexity grows out of control.
I thought about this topic when the StackOverflow blog on Scrum ruining great engineers came out[0].
Imagine you have a chart where the x-axis is trust, and the y-axis is skill. x-axis at the far left is management focused. x-axis all the way to the right is developer focused. x-axis in the middle is mutual trust. bottom y-axis is no skill, top y-axis is extremely skilled.
Now let's look at some of the spaces this chart provides. If we start at the top right, we have Professors. They have a lot of skill and have tenure to be able to do what they want. On the bottom right, I imagine something like Adam Sandler's character from Billy Madison(1995), a son of a billionaire who wasted his life and had no productivity.
On the bottom left side we have government contractors or outsourced developers. They do the work they are told to do. In this spot Scrum can be a reasonable way to filter between the very least skilled workers and someone who is doing decent work. But by applying Scrum, you are naturally holding the management axis to the left.
The Top Left doesn't exist. The developer leaves for some place better.
So now we can talk about the middle. At the top of the middle we have Skunkworks projects. And as we can see, this balance between management and development can yield incredible results, if the developers have the skill to back it up.
So we can see there is a careful balance, most developers are probably somewhere in the middle "strike zone", and by applying Scrum to a developer who is highly skilled you are handi-capping them, and if you apply to much force they leave for better pastures.
When you have developers in this strike zone, give them advice, allow them to learn, but let them make their own decisions.[1]
[0]: https://stackoverflow.blog/2020/06/29/does-scrum-ruin-great-...
[1]: https://jessitron.com/2021/05/26/a-high-resilience-org-chart...
And it’s already biting us. There are at least two issues I’m aware of that are a direct result of this policy which are very bad. When they come to light the company’s reputation (and share price) will very likely be harmed.
A sibling comment talks about trust/skill, and these are factors that are more important than just focusing on autonomy as a stand-alone concept.
Open Source projects show both ends of this spectrum, with absolute autonomy yielding both amazing and mediocre results.
Would you let a painter do surgery on you?
False comparison. It should read "Would you let a painter _manage the surgeons_ who will operate on you?"
Having worked in the healthcare industry - the answer to that might surprise you.
I think there is a variation of Gell-Mann's amnesia effect but for management. Everybody sees how their own manager/boss is mostly wrong and useless. However, when we deal with somebody else, for example as customers, we somehow conveniently forget that fact and we continue to believe that managers need to exist.
The CEO, and the people under the CEO know and understand traditional, top-down management. Let the people with context and decision power make the big decisions, and pass this downwards. Works with finance, works with marketing, works with IT support, and should work with engineering as well... right?
But it actually doesn't work with software engineers as well as it could. Or with designers. UX researchers. PMs... all these people would produce a magnitude more output when given proper context and autonomy.
A few leaders read about this, and try giving autonomy. These results end up even worse than the status quo, as you can't just make it a free-for-all and expect it works overnight.
And to prove this point: look at companies where the founder had worked at a high-performing company before. Before founding Twilio, Jeff Lawson spent years at Amazon (he was one of the first AWS PMs), and in his book Ask Your Developer, he writes about just how much this experience shaped him, and all the practices he adopted from Amazon.
There's this really weird divide between "forward-looking tech companies"[2] who "get it", and everyone else. Which heavily benefits this first group.
[1] https://blog.pragmaticengineer.com/the-developer-culture-tes...
[2] https://news.ycombinator.com/item?id=25717390