> My answer is that you have middle management who is made responsible for the output of the high performers, but they don't and can't truly control them - other than via micromanaging.
Agree. This is all anecdotal:
IMO - the people who get promoted to management in technical roles often don't have the people skills to perform the job well. I have had leadership thrust upon me multiple times in my career and it's very difficult. You're constantly balancing autonomy vs. active management for each person, in each role, for each unique situation. You're sussing out people's strengths and weaknesses working to help highly competent/technical people progress in their career. You're actively working to keep people on the same page, and sometimes you're working against your own contentious team members.
I rail hard against non-technical management managing a technical role - it just doesn't work. So, typically, technical people get thrown into management roles and I think we often suck at it. We don't take the time to work on ourselves to have the people skills required to be a positive leader of people. Then we compensate like any other crappy manager: we micromanage (crack the whip), we keep people in the dark ("mushroom management"), we DARVO, we have angry emotional outbursts, we pick favorites, etc.
What we see in software (and other technical roles) is that most people picked for management never put the work in to be an effective leader of people. And, I think the very nature of our work precludes many of us from developing the social skills it takes.