I (programmer and team leader) get requests from the king (management and project manager) and pass them to the peasants (code monkeys), clean after their shit (QA and code review). I get peanuts in return while the king keep most of the loot.
It all depends on the project and the team. On some, you work with and along the PM and all is good, and other times you get dictated unconnected requests that you need to fight or ignore.
Lucky, my first 2 dev jobs had PMs that were right out of college business majors with zero web development experience. They were just direct unfiltered conduits between the clients and devs, but with a layer of telephone game and almost no ability to day no to the clients.
It was a fucking nightmare. By the time I did get a good PM, I was pretty much burned out and started my own consultancy (since I’d been managing a small team and doing both dev and PM’s job by then anyway).