I have been both a manager and a software lead. I think either breaks down when you have rotten team members, above, below or alongside you. And it's not cut and dry, that managers are/aren't useful/needed.
As a manager, I had our sole sysadmin that flat refused to do the weekly backups (so I did it myself every week), and elsewhere had a QA team member lie and not do the full weekly tests they were assigned, just faked results. And I wasn't allowed to fire or discipline either of them, I had to "guide" them. Gah!! That really sucked. Also, trying to figure out to believe your developers on their time-to-completion estimations .. also sucks. But upper management really needs those to be accurate to allocate funds and coordinate with the rest of the departments.
As a software lead, I have to code review and guide the junior devs, who do some crazy stuff at times. There's one guy we were loaned from another department that management decided to keep, where every single work item (which passed their QA testing) was still broken and had to be fixed by my team. Asked for that person to be removed, but no.
And as a software developer, those requests for time completion estimates are tough to do. I don't know how long it's going to take, I don't know everything I'm going to have to do to make it work yet!! Also tough.
Being in an organization is tough. Nobody has figure out (at least where I've worked) how to make an efficient productive team without some management. One good thing about having management - Managers spend their lives in meetings, if it weren't for them, the developers would be there. This spares the developer from having to deal with the executive level and sit through their boring boring boring long meetings.
Personally, I think being a manager sucks and is terribly boring and frustrating. I don't envy those people. Now, let me type my code in peace!