The question was, “Why do business analysts and project managers get higher salaries than programmers?”
My reply -
Because programmers don’t ask for more money often enough.
He's right. Not all of what he says afterwards is completely true for salaried employees everywhere, but the basic idea is correct.
What I find fascinating as well is that for a business analyst or a customer-facing consultant, asking for more money is part of the job. So they get a lot of training talking to people and asking for more, while the technical, background-loving people don't.
So, let's all start practising and asking for raises. If you don't get one -- no harm done, you can always go on doing what you already do...