You've never witnessed an underperforming developer? Who among a group of peers is going to deal with that?
What about conflicts and disputes? Adults can become quite childish over the smallest issues and sometimes an impartial mediator needs to step in.
And when budgets constrict, do you just draw short straws to decide who quits for the greater good or do you all volunteer to take equal pay cuts? You all openly share your salaries right? When budgets increase, do you all slice the pie equitably?
And what about a good developer not realizing their potential? Who will nudge them to take the next step and sign up to a training session or apply for a promotion in another group, or even look for new jobs because you know they've hit a ceiling here? Your teammates who rely on you are very unlikely to send you packing for your own good.
And when someone has a personal crisis, does a peer or product manager get consulted about their private issues? Bob from the API team just had their teenage son overdose on fentanyl, do you think he's going to be super talkative about needing a couple weeks off on short notice and in a state of mind to perform some transition planning?
I do not know how a team of peers can deal with a bad team member; this is a good point. But on the other hand, I've seen teams that do have underperforming developers despite also having a manager. So a manager is no protection against underperformers on a team. Getting rid of people is hard.
As for conflicts or personal crises, what _does_ a manager do? If Bob from the api team doesn't tell the team he needs a couple of weeks off, and the team does not collectively plan for what to do in his absence, then how does a manager help? I've been on a team that had a developer whose contract was running out and could not be renewed because of the max number of years a person can be employed by that organisation. This was known years ahead. No transition for the ownership of the library he was developing had been planned, despite the crucial nature of that library, and despite a manager being around. Two, in fact.
As for a good developer who has hit the ceiling in an organisation, I find it hard to believe that a manager who relies on that developer to move the project forward will be any more likely to advise him to look for a better place elsewhere than his teammates would be. I think it's up to the developer to appreciate his situation and how happy he is where he is (and to start looking if he isn't).
And, since you offered different scenarios when things go sideways, how does a team of developers deal with a manager that is underperforming?
In unexpected absences a manager may have options you as a dev do not, like asking another department to temporarily reassign someone or using contracting budgets or the ability to negotiate project delivery expectations differently. Likewise Bob in distress may be more comfortable confiding in a single person to relay information to than trying to meet the demands of an entire team, while someone else might not want any time off at all because they need the mental distraction. It all depends, and if you're a dev focused on developing a product you may not be correctly focusing on supporting a person who may not even realize what they really need from you for support.
In the events of an underperforming manager, CYA. Put stuff into writing, document failures or consequences of inaction, note who was present and how decisions were made, email it to yourself to build a case to defend yourself from them. If it's a scenario where the manager isn't taking corrective action you eventually will need to escalate or go over their head, so you'll be dealing with two HR problems at once. Ideally you have an open dialog and skip levels with a bad manager's boss to raise concerns with and also ideally you have treated your HR reps with kindness because they are now your ally. If their management is good they'll either get mentored to improve, sidelined into a different scenario they're better fit for, or coached out of the org.
Or you bail and find greener pastures. A bad manager that's tolerated means there's bad upper management too and calls into question the value of trying to stick it out. Even in the current market, software is still in demand. A single exit interview about a bad manager isn't going to get them fired but a few people that lay their departure at their feet will get noticed.
On the other hand, many places will have job performance descriptions or criteria for management just like they do for a developer. It's entirely possible that someone you perceive to be underperforming is actually still meeting expectations for a coaster and you're comparing them to nearby overperformers trying to move up, or maybe you're conflating personality or management approach mismatches you dislike for performance, or that their hands are tied and they're just as frustrated as you are (maybe more) but can't overtly say that to you. Politics can be tricky and people management is a soft skill, it's hard to objectively measure differing scales of underperformance.
FWIW, as a manager I haven't necessarily tried to get rid of my high performers but I've always been transparent and realistic about promotion potential and when someone wants more than what's available I've encouraged them to train or grow in those ways and have been happy for the people who've given me resignations to move on to something bigger and better. Acknowledging the limits of the job or career growth I have to offer someone seemed unavoidable.
Yep. All part of the idealistic “let’s just sit together and do the code” pipe dream. Which I honestly see as part of the developer superiority complex, where somehow we don’t count as…imperfect…people.
I've been there, in small cohesive high functioning teams there is a sense that a manager isn't really needed, and to a degree that's true while things are going well, right up until shit inevitably hits the fan in one of these scenarios.
A medium or larger business also usually wants planning and reporting and analysis that devs usually hate to create, present, or maintain because it eventually takes a big chunk of time away from developing. It doesn't make them bad devs but the management aspect gets neglected and the business suffers as a consequence, leading to eventual layoffs or shuttering. I think the amount of management needed is a wide open discussion, but questioning if it's needed at all is naive.
What about conflicts and disputes? Adults can become quite childish over the smallest issues and sometimes an impartial mediator needs to step in.
And when budgets constrict, do you just draw short straws to decide who quits for the greater good or do you all volunteer to take equal pay cuts? You all openly share your salaries right? When budgets increase, do you all slice the pie equitably?
And what about a good developer not realizing their potential? Who will nudge them to take the next step and sign up to a training session or apply for a promotion in another group, or even look for new jobs because you know they've hit a ceiling here? Your teammates who rely on you are very unlikely to send you packing for your own good.
And when someone has a personal crisis, does a peer or product manager get consulted about their private issues? Bob from the API team just had their teenage son overdose on fentanyl, do you think he's going to be super talkative about needing a couple weeks off on short notice and in a state of mind to perform some transition planning?