Long story short, PMs are closer to the money. When you're managing a project, you know you have a budget of X dollars to get it done. If you get it done in X-P dollars, you can take that to your boss and immediately show that you made, or saved, the company P dollars.
As a programmer or engineer, you may not even be directly aware of what the project's budget is, so it's harder for you to demonstrate how much value you're providing.
100% agree. It's always about how close you are to the money. The more direct value you provide, the more you get paid. This is why lawyers get paid so much, because firms know that for every hour they bill the firm makes $X dollars.
Programmers provide indirect value. If you architect a system that saves months and months of time later down the line, how do you value that?
with hugely inflated numbers that assume the best case scenario for time-savings, fancy charts and graphs, and perhaps even a buzzword laden powerpoint presentation during your annual review.
As a programmer or engineer, you may not even be directly aware of what the project's budget is, so it's harder for you to demonstrate how much value you're providing.