We have to admit that programming is much more difficult than creating documentation or even creating Gantt chart and asking progress to programmers. So for us that are naives, knowing that programming is generally more difficult, why do business analysts and project managers get higher salary than programmers? What is it that makes their job a high paying job when even at most times programmers are the ones that go home late?

UPDATE

Excuse my ignorance, from some of the response it seems that the reason why BAs and PMs gets higher salary because they are the ones that usually responsible for the mess programmers make. But at the end of the day, it is programmers that get their hands dirty to fix the mess and work harder. So it still does not make sense.

This question exists because it has historical significance, but it is not considered a good, on-topic question for this site, so please do not use it as evidence that you can ask similar questions here. This question and its answers are frozen and cannot be changed. More info: help center.

closed as not constructive by Mark Trapp Sep 26 '11 at 8:16

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
If this question can be reworded to fit the rules in the help center, please edit the question.

Bigger salary in america has absolutely nothing to do with skill. More you are liked, and the more you play the politics game, the more you get paid. Programmers are usually logical, intelligent, individuals, who tell it like it is. Executives hate that.
–
MVCylonFeb 9 '11 at 14:21

29

"...the ones that goes home late..." Not to come across harsh but this sounds like a personal issue you need to address. If putting long hours in is how you define your worth to the company then some serious personal analysis needs to be done.
–
Aaron McIverFeb 9 '11 at 14:26

I will mention that the PM and business analyst on the main project I am working on put in way more hours than I do. There isn't enough money in the universe to pay me to do their jobs.
–
HLGEMFeb 9 '11 at 14:56

52 Answers
52

I've my own little software enterprise and I'm both the programmer and project manager, so I can give you both points of view.

Your initial assumption is not true. Let me write it down:

Project Management & Software Analysis =

Creating
documentation or even creating Gantt
chart and asking progress to
programmers.

If you really think that's all Project Management and Software Analysis is about, it's no wonder that you think that programming is harder.

But that's a ridiculing, unfair and non-realistic way to define those professions. It concentrates on merely visual aspects, as if the they didn't give value.

How would you feel about this other definition?

Programming =

Sitting in front of a computer and punching keys.

If programming is defined like that, PM & SA look much more difficult, even by your definition (which isn't correct).

Those professions are better paid because they are, indeed, more difficult than programming.

They involve dealing with people, not machines. People are vastly more difficult to work with, given their non-deterministic nature. The subset called clients is specially troublesome.

Others have said it, but let me repeat it: responsibility. If a programmer screws up, it's up to the PM to solve the problem. Not just to report it, to solve it. It might involve delaying a launch for 2 weeks. Or skipping one feature.

The amount of multi-tasking one PM has to do is usually staggering. It's a constant exercise in balance between the team, management, the clients, and the budget. It is not easy.

It also involves communication "the other way around" - Not only the programmer must report to the PM on the status; the PM is in charge of properly communicating expectations, risks and goals. If some cases they're also in charge of training.

Have I mentioned dealing with clients?

If the project managers that you work with just do powerpoints, they are not doing their jobs correctly. And that's sad.

I think you will not really understand why project managers earn more than programmers until you meet a good project manager.

Business Analysts and Project Managers have more access to managers up the chain. That's the main reason why they can get paid more. Not all do. There are also organizations that pay really poorly for business analysts but they risk a very high failure rate due to the most expensive form of bug - a requirements bug.

Programmers who demonstrate the capacity to effectively gather business requirements and or manage a project get paid more than all three of the choices you've listed. It's important to remember that technical services are in service of business needs in most organizations and people tend to trust and value people that they feel understand their needs.

You think your language/compiler is finicky? Managers deal with self-aware complex-state compilers called programmers, and the good managers even get them to produce software.

Seriously, I like the widget factory vs film school answer, which I think is probably the best answer in thread, but there's a meta-level discussion it doesn't really address: no matter which kind of organization you're building, you're building an organization from material as capricious as people, and that's work that's often hard to do well. You can make a solid argument that it's weird that these positions often pay better than the programmer's when a significant chunk of analysts and PMs and PHBs are not in fact doing a good job, but the fact is that there is a job out there that involves building organizations that get things done, and it's a skillset that's arguably more difficult to master than building software systems that get things done.

Most companies make the salaries reflect the amount of responsibility you're undertaking, which is a level of risk. In my experience, a good (project) manager is worth their weight in gold, and increases the productivity of everyone working with them.

On the other hand, paying them just based on the position title is silly, as I've tended to run into more poor (project) managers than good ones.

For a programmer, a good manager or PM
is an umbrella that you don't
realize was there until it isn't anymore.
Then you're cold, wet and left
wondering what the heck happened!

Yes, there is value to a good manager or PM, but I'm not sold on that meaning that a rockstar programmer shouldn't be paid what they're worth, even if that means it's more than the manager. There would be nothing to manage, no product to release if a software company didn't have those incredibly special and talented people releasing fantastic code for them.

I'm currently a development manager at a large retailing company in Canada. Our business is retail, not software development. Unfortunately due to the fact that our programmers, though talented, aren't the "product" that also means that I can't pay them salaries that match productivity or value. I have a set of rules and a hierarchy to abide by with levels, much the same as most other large non-software companies. So, I guess what I'm saying is, it all depends on the business you're in as well.

If you're at a software company, a talented developer IS the product. That company should recognize and pay comparatively.

-1: Unfortunately due to the fact that our programmers, though talented, aren't the "product" that also means that I can't pay them salaries that match productivity or value. - While that may be true, that's an accident of your company. And like @Nikita Barsukov said, I think developer salaries will increasingly become a function of supply and demand rather than a function of a company's reporting structure.
–
Jim G.Feb 9 '11 at 14:52

Because less people has skills to be a project manager or business analyst than programmers. Simply, more good programmer exists than good project managers. I estimate the difference about 10-20 times.

I don't think you can say that programming is automatically much harder than being a good business analyst/PM. I personally don't envy that job position and I think that it has to be pretty difficult, not in terms of technical know-how and sheer logical intellect, but because you have to be able to play both sides of the fence so-to-speak. A business analyst has the unenviable duty of trying to please everyone, but is usually liked by nobody. They have to get the project requirements almost as close to perfect as possible (which is impossible) and be able to make management feel warm and fuzzy about what they're doing and also not piss off the programmers too much. Most of these people get to sit in long, horrible meetings, with tedious corporate types that make you want to gauge your eyes out with a fountain pen, only then to get to talk to a bunch of developers that hate their guts almost instantly. I think the sheer stress of the job is probably worth an extra couple of bucks per week!

These days though, at least in my organization, we got rid of these types of people because often they were a drain on productivity. We adopted more agile methods of development and forced developers to get out there and actually interact with users instead of relying on a third-party to act as a go between and try to pin down every single process in the business and reduce it to a series of impressive looking charts and documents that nobody will ever really read. I'm sure there are really excellent business analyst-type people out there that really know how to handle the situation elegantly but the ones I have worked with looked like they were seconds away from hari cari.

I have thought about this very same thing in the past. It drives me nuts, basically. I came to the conclusion that it has to do with incentives and the principal-agent problem. They are being paid more because they are not supervised, it is a form of efficiency wages. You can read more about this in my blog: http://www.climbingthecorporatebladder.com/who-guards-the-guardian/229

Tricky but valid question.
My school of thought is a little different though I'm a programmer myself.
In the IT field, we have many positions ranging from devs to BA's to PM's to QA's.
Each role has a set of tasks to perform in order to deliver the product.
And each role gets paid by virtue of its importance. Yes, they all have to go hand in hand.
BA's role is important since they understand the specifics of the domain and help the customer to come out with detailed requirements.
Programmers convert these requirement into reality.
Managers look at the bigger picture and ensure that we are shielded from the day to day management related activities which are important from the higher management perspective.
QA's ofcourse ensure that a quality product reaches the customer.

In all this, you can see that we cannot debate who is more important or who does more work. Its just roles that different people need to play.

Also remember that as you grow in an organization, you'll slowly transition from a programmer to a lead dev and so on. This will make you almost equally paid or better paid than a manager. A Programmer is considered as an individual contributor where as a dev lead is managing a team of programmers.

Another hypothetical thought (apologize if my data is incorrect): Have we thought why an eye surgeon gets lesser paid than a say ..orthopedic surgeon? All are important parts of the body to us right?

But at the end of the day, we still do what we do coz we love it!!
I love getting to work every day and churning out some whacky lines of code!

In my world (in my country, or the environment I'm used to be working in), a System Architect and a Project Manager is the same person. Once he designed the system, he should plan the development, do charts, monitor what's happening, etc. He shouldn't get involved into programming.

Right now I am playing this exact role, though the system we're making is rather simple. What I observed when I was hiring, is that most developers (of the ones I came across), to my dismay, can't see the big picture. Hell, they can't even comprehend a whole, but separate, small task.

I am being paid more than them, because they constantly ask me about things they don't understand, or bugs they can't find. And because I have to describe the tasks in such a way, that the programmer wouldn't find anything to understand in a wrong way. I write tons of code, in English. My correspondence is about 20% in size of the total project code size.

I am also the bearer of the responsibility on this project. Every time the project is late, I get to be punished. And I also ensure the final quality of the whole system.

And I think it's fair. I see the big picture, they don't. I tell them what to do, in small tasks, so that in the end something good would come out. I solve the most complicated problems that occur.

If you feel you are in no way worse, then it's the company's fault that you still haven't got a promotion to something bigger than a developer.

A simple developer must be that person, that can do small individual tasks, in a way he is asked to do them. A simple developer must not be that person which understands more, and participates in the project at another level.

It's absolutely not fair if a person who just plans and constantly checks for progress, gets paid more, than those who actually do something for that progress. This exact situation is at the heart of the slowly rotting company.

-1: I am being paid more than them, because they constantly ask me about things they don't understand, or bugs they can't find. And because I have to describe the tasks in such a way, that the programmer wouldn't find anything to understand in a wrong way.: I totally believe you, and you should be paid more. Much more in fact. Still, this doesn't speak about most project managers who couldn't do this if their life depended on it.
–
Jim G.Mar 24 '12 at 0:38

A Programmer's job is to write bug-free code that delights customers as quickly and cheaply as possible. A Programmer manages there code (downwards), thus if they do a good job there code is happy. The code does not pay there wages and those that do, do not understand the code.

A Project Manager's job is to predict schedules and help the programmes (e.g. make project run faster)
A Project Manager spends little time doing anything to help the programmers (managing downwards), and if the project is late they blame the programmer. By isolating the programmer from the upper-management/customers they are able to manage the upper-management/ customers, thus influencing these with the money (managing upwards). They may enrage the programmers, but this does not matter as the programmers are not paying them.

I disagree with the premise that programming is more difficult than writing documentation. Programs are read by computers. Documentation is read by people. I think most people here would agree that getting a computer to understand what you are trying to say is often far easier than getting a person to understand what you are trying to say.

While it may be true that on average managers salary is higher than a programmers one, what may be of a personal interest is that some programmer are paid better than some managers. If you want to get a higher salary, you can be a great manager, if you want, but another option can be to become an excellent programmer.

If you really want to understand why managers get more than programmers on average, you should try to understand how economics works, as economics is the science describing prices, money and things like that.

As other replies have already told you, salary (like almost anything in real life economy) is not "fair" in the sense more effort gives you more money, it is a result of free market. If you ask why managers get higher salary then programmers, you should also ask why actors or football players are paid better than scientists or miners.

Simple answer: people who knows how to negotiate a better deal often be able to negotiate a better salaries.

Now tell me who is a better negotiator: business analysts or programmers? (I skip project managers because quite a lot of them were programmers one point)

Or put it this way, if those programmers feel that this is not good and continue to work in a company like that, it would be their own problems since they either couldn't change the situation, or they don't know how to express that to who pay them.
Not to mention if the company itself also makes even more money in some cases.

I think the answer is very simple. Managers have to justify their high salaries by placing greater importance on other managers. If they see to it that the managers below them are earning hefty salaries then that ensures they have an even larger salary.

Try to translate tech language from developers to business language and explain business language to developers and you will see that it's not much about gant diagrams or writing letters, or drinking coffee in meetings.