Why business analysts and project managers get higher salaries than programmers?
Because programmers don't ask for more money often enough.Seriously.Here's the three minute version of doing it:1. Work hard on tangible stuff, document and claim credit for doing it, and notify people with what benefit the work provides. This sounds maybe stupidly obvious, but a lot of non-technical people don't understand the value in something. So, "Upgraded XYZ so our website loads faster, which is proven to make customers more likely to buy according to ZYX paper" - I know, what a waste of time, right? Wrong! It's going to make you a lot of money. Tell people what you did.2. Before you go to ask for more money, prepare a BATNA (Best Alternative to Negotiated Agreement) - if they say no, what will you do? You need to know this. Having other offers is obviously good. Savings are good. You don't even have to mention your BATNA, but you need a Plan B. Most people don't make one of these, so if their first attempt doesn't go swimmingly, they're in trouble.3. Go in and stress how much more you'd like to do going forwards. This is huge. Do not mention what you've done in the past, except in the context of how it proves how much more you can do going forwards. So go in and say, "Hi boss, as I mentioned in all my various weekly reports, I've been learning new stuff and kicking massive ass. [that was step one] Recently I've picked up some new skills, and I've been getting recruited for a bunch of projects [step 2], but I really like working here. Actually, I think I can deliver even more value here, if I take on new responsibilities. I'd  like to train a successor to gradually take over my current role, while I do ABC-stimulating-enjoyable-task that will bring the business new money. I don't even want to be compensated much more for it - I'm going to be bringing in lots more value/assets/sales/cash/whatever, but a moderately small raise is enough for me because I like working here so much." Then lay out what you're asking for.Business people learn how to do this. You're leaving lots of money on the table and not getting a chance to work on cooler stuff that you'd like to do if you don't do this.1. Regularly update with the work you completed, and the benefit it provides.2. Decide what you want, and what you'll do as Plan B if your current company won't give it to you.3. Go stress that you'd be able to produce more value if you transition your role to a more highly paid and enjoyable one. Be friendly and complimentary. Whenever possible, try not to ask for more money for the same role from the same company - people hate price increases, so it's better to expand your role to something that's also more enjoyable and produces more in their eyes. If you want a raise for doing the same exact work, it's probably good to start looking outside the current company as well for other offers.