Sunday, November 13, 2011

Why do Programmers get paid less than PMs and BAs

I came across this interesting question over at programmers.stackexchange.com which asked: Given 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?

There were a few great answers, but only one stands out as the truth, and that is the one which is coming from an economic rationalist's viewpoint ...
People get paid less than their employers' "reservation price" (the most they would ever pay), and more than their "marginal product" (the least they would ever work for). Your actual pay on that spectrum is based on your bargaining power, relative to your employer. 
Say your services to your company are worth $1000 a day. Under the gun, he would pay you that if he had no other choice. Say you would work for $100 a day if you had no other options. That's your range. 
Say you're new and independent and unknown, and your boss is Google. Google has more bargaining power, because they can just wait and hire someone else, and lots of people want to work for them. You have less power, because you have to pay rent, so you'll get closer to $100 than $1000 a day. 
Say you're the last COBOL programmer on Earth, and your boss's mainframe runs COBOL. Then you have more bargaining power, and will get closer to $1000 a day. 
SO, either PM/BAs are worth more to the company, OR they have higher bargaining power. I don't think it's the first option, so must be the latter. Good people skills are rare. It's also hard to outsource them, as they have to meet clients. Their relative scarcity gives them more bargaining power, and thus higher pay.
This is a great answer by NRM and although slightly boring compared to the other answers which touch on the political side of things, it definitely has the ring of truth to it. As he mentions, good people skills are rare, and provide a huge benefit in any job, especially in the field of software development.

Follow @dodgy_coder on Twitter

46 comments:

  1. It's not just people skills, it's self management as well. A valuable developer will work on delivering product that is useful to the business. The key words are delivery and useful. This implies a pragmatic approach to how their time is used. Are they making the project late working on a feature that will be used by 1% of the user base? Have technical problems occurred that require assistance from others rather working in the corner on their own?

    Coding skills on their own have limited value. Valuable developers need to be able to communicate with peers or customers and manage their work effectively. This is not new, they were talking about this shit in the early 80's when I was a trainee, and the agile community have been banging on about it as well.

    ReplyDelete
  2. @alecthegeek agreed on that one - the world needs more pragmatic programmers who are well organised and can communicate well ... a bit of diplomacy would go a long way as well in some situations.

    ReplyDelete
  3. What we do is enable people to do their stuff.

    We're also good at saving money (1 person can do the work of 3 with the right automation in place) - and for some reason, management NEVER sees a saving as valuable as winning a contract. It's a line LESS of expenses in a spreadsheet... it's MISSING, invisible.

    A sale shows up on a spreadsheet in big black ink.

    That's why we get paid less, our worth is hidden away.

    Also - for many programmers, it's a hobby - we'd do it no matter what the pay. It took a few years for management to realise this, but they've realised it now, and together with out-sourcing being the enabling way of reducing wages, programming is steadily becoming less of a valuable skill. The thinking being "These geeks will work 70 hour weeks for $30,000 a year because they LIKE what they do! Great."

    Then there's Visual Basic - which is much more engage-able than C++ or other hard languages... many managers will have dabbled in Excels VBA editor to edit a macro, and thought to themselves "This programming malarky isn't hard."

    On top of that, programmers don't often have people working under them... so they're not paid the premium of harassing lazy workers, or dealing with arguments, or inter-departmental bullshit...

    I think that's why programmers get less...

    ReplyDelete
  4. @SarahC great points ... can probably by applied to IT staff as well as developers. Company boards often have a narrow cost/revenue view of the company and developers might be seen just as a necessary cost of doing business, rather than a valuable company asset.

    ReplyDelete
  5. I think NRM had a lot of good points, but just as with all kinds of economic analysis of why CEOs and doctors earn a lot of money, I believe there are profound cultural factors as well.

    E.g. my home country Norway, wage distribution is very different from the US. It is flatter so project managers often don't make more than developers or at least usually not very much more. Flat income distribution is a tradition that goes back many hundreds of years. I think basically if your boss thinks he is worth a lot more than you and you think so as well then he/she is going to make a lot more too. It is a lot about the psychology of expectations.

    But I agree people skills are quite important, although I would perhaps be more specific and say it is communication skills. What I see at work is that most developers are not any good at communicating the structure of their code or their designs. Now that doesn't mean project managers necessarily have good people skills. So I am not sure the theory is solid. Too often managers seems to be people who did a good job at cranking out features and who is well organized, with respect to following all company rules and regulations. It is people who play by the book and get a lot of work done.

    Fortunately you have great exceptions to this: people with vision, great communication skills and initiative.

    ReplyDelete
  6. A good project manager knows how to bring talent together and get people working in harmony to reach an end goal. They are able to work with clients to satisfy their technical needs and thus as a whole, without their help, nothing can be coordinated and a product cannot be released. In essence, think of a project manager as a conductor of each instrament being the programmers. A good conductor will never make more than an amazing programmer especially if he works or knows how to work on very high level products.

    ReplyDelete
  7. If we are talking about psychology, I would like to throw in an anchoring concept. People tend to pay for "stuff" similar to the first amount they relate the "stuff" to. Once the "anchor" is attached, then it won't change without external pressure (where I define external, so supply and demand is part of it).

    Anyway probably there many factors in the matter (like responsibility of a job) and only if you could devise an elaborate experiment, that would test them separately, you would know how much each of them contributes.

    A different matter is how much harder it actually is. Is programming harder then driving? Obviously, you would say and everyone else. How come we don't make more then F1 drivers?
    General skills might be easier, but some (even simple) skills at certain level are so demanded and so scarcely supplied, that they are paid much, much more. Is it possible, that it similar with PMs and BAs? I might be mistaken, but I think there is much more programmers in the world, than PMs or BAs.

    ReplyDelete
  8. @TheFutureMonkey yeah at least in all the development jobs I've had, there has been a lack of 'good' project managers and business analysts ... those who are good at their job and are able to relate to and understand both development issues and specific business domain issues. Also, I don't see many developers looking to move into those roles either, for whatever reason, probably just because they like being developers...

    ReplyDelete
  9. One way to look at this is that the output of one developer can only go so much and for an organization to achieve more it has to have more than a handful of developers. This team of developers needs to have an organizing force which for most companies is provided by the PM or BA. So a team of 10 developers, each getting 100 per day, is costing the company 1000 per day. It is not that much of a stretch for the company to pay 150 per day more for a PM to ensure this 1000 per day expense does not go to waste.

    In other words, he who gets things done through other people and is responsible for the output of other people tend to get compensated more.

    ReplyDelete
  10. "Given that programming is generally more difficult"
    that statement is wrong according to my experience.
    Everyone who have managed humans can tell you that's it's harder.
    You cannot manage your relations with humans with unit testing or test coverage. humans have the ability to react differently to the same rule, and behaviour change as time pass. And you still have to get things done within time and budget.
    if programing is an art, lead a team is a higher art. one very convincing way to observe that is the number of manager and team leader that sucks at doing it, because it's so hard to do it right.
    that's why they get paid more, even if it feels so unfair when they sucks at it....

    ReplyDelete
  11. This comment has been removed by the author.

    ReplyDelete
  12. Having done both jobs, I would say that, programmers have much more mental freedom than BA's.

    BA's are tied to multiple moving components of the project, not just programmers. Its like owning your own company because all the responsibility of the projects success, not just the code, depends on the BA.

    @SarahC is spot on - "On top of that, programmers don't often have people working under them... so they're not paid the premium of harassing lazy workers, or dealing with arguments, or inter-departmental bullshit...
    "

    ReplyDelete
  13. As someone who jumped the wall from Engineer to Project/Operations Manager and hasn't looked back, some of the generalizations in both the SO post and these comments are... interesting.

    There are a number of dimensions that a Project Manager must manage, and if they are doing it well, the engineers never even know they're doing it.

    Taking a quick look at PMBOK, These dimensions are:

    Integration, Scope, Time, Cost, Human Resource, Communication, Quality, Risk, and Procurement. If all 8 of those dimensions are properly managed, then execution becomes almost (emphasis on almost) trivial.

    Another observation: having worked both in IT shops (Cost Center) and Product shops (Revenue Center), there are sufficient differences between the two that they should be discussed separately. Having worked in both kinds of shops, my experience has been that Product shops I'm managing resources and deadlines, IT shops I'm managing politics and constituencies.

    More progressive organizations are coming around to realize that Project Management is a discipline unto itself, as opposed to the last engineer to say "not it", and that many of us have a little more hands on keyboard experience than playing with VBA for 15 minutes. Sit through a code review with me, and you'll see what I mean :-)

    Good programming is an art. Great programming is a discipline.

    ReplyDelete
  14. I've done both and I think it is unfair.

    IMHO, the closer you are to the money, the more you make. CEOs are close to investors and the CEOs / CIOs of premium clients, BizDev people and Management Consultants the same, they make the most money. It's kinda all about taking the biggest cut you can on the way down. Then the CEO wants to pay the VP Bizdev well because it validates his own overcompensation, and on down the chain.

    Programmers could negotiate for more, but it's tough for bosses to evaluate worth since at some level up the chain, they don't know shit about who's doing what.

    At Engineering given companies (like GOOG and Facebook), engineers are actually paid more in most cases than non-technical managers. So it's not unheard of.

    ReplyDelete
    Replies
    1. "the closer you are to the money, the more you make. "

      This is totally true. You take ur part before the others guys that are less closer ...

      Delete
  15. I think pure economics is only part of the answer. Another part is a bias built into our culture, which says that people who look like managers are worth more than people who look like workers. If you make or approve plans, conduct meetings, keep track of status, and essentially coordinate other people's work, you look like a manager and you are inherently on a higher rung than someone who merely performs the work.

    ReplyDelete
  16. "You have less power, because you have to pay rent, so you'll get closer to $100 than $1000 a day."

    Absolutely right. Access rights are power. Rent is what people with no power pay to those with it.

    ReplyDelete
  17. BAs, SBAs are pushing the dev team to get more done in the same or lesser duration, QA will not relax its Build date, the PM wants all the 5 different task/risk/request/what-not trackers up to date on a regular basis and wants the team to attend all meetings (most of which don't have agendas), deployment team calls up at ungodly hours with issues, and then there's Agile (TM) (Yesterday, I spent 1 hr 30 minutes on coding, 45 minutes on documentation, 2 hours helping performance team, 30 minutes helping QA...).

    Everybody's squeezing the developers from all ends, nobody's ready to relent and surprisingly they're all getting paid more and/or working less than the lowly dev team! And on top of that, they're being asked ever so often as to why they're working so late; aren't they managing their time well???

    ReplyDelete
  18. This comment has been removed by the author.

    ReplyDelete
  19. I see it as follows. The PM & BA deal just with bigger numbers. BA will work for the question will they do this project? Is it profitable? That question can make difference in millions of dollars/euros. So they pay these people more to do their work properly and give it all they got. This might affect mostly smaller companies. In bigger companies these questions define will the project get 10 or 1000 workers on it.

    In PMs case they need to coordinate group of different people and get them to do their best. That means he answers for more than his own work input. In smaller companies this might be just a name and PM does same work everyone else does. In bigger companies though PMs attend to meetings to tell client about the project and convince them to keep their money on it, or even pool more of it to the project.

    TL;DR PMs and BA are responsible for way more than coding a block to a project. So they get paid more for their burden/workload.

    ReplyDelete
  20. Saw this comment over at Hacker News ...

    A good project manager is a shit umbrella, a bad one is a shit funnel. If you're in a shitstorm, learn to love your umbrellas. [tomkarlo]

    How true it is ... a good PM can make your life as a developer a lot easier.

    ReplyDelete
  21. Most software project managers I've known used to do the same job as the programmers that worked for them, more or less. They usually did it well.

    Most programmers I've known couldn't do the job of their project managers at all.

    ReplyDelete
  22. i just want to point out the flaw is evident in the question: if you are going home late, you are not managing your time well, and that is why you need to split your income with someone else to manage it for you.

    a lot of engineer types are depressed workaholics and may have been for so long they think nothing of it, but get the book "Chained to the Desk"; it changed my life by revealing how i was attracting other workaholic bosses who were exploiting me. once i learned to manage my own time, and fire the bad bosses, my income went up by several orders of magnitude.

    ReplyDelete
  23. seriously if you think that developers cant do the work of a PM/BA I propose you ponder the following thought exercise: take a company, any company and inverse the roles for a month.

    Let developers try to manage and then let PM/BA try to code. Measure the outcome (with the metric of your choice: monetary value, features completed or any other for that matter) and let's discuss the conclusions you arrive at....

    ReplyDelete
  24. @Dodgy_Coder: The thing about the shitstrom and umbrellas is really spot on BUT my experience says that before you become anywhere at all decent as a PM you have to know what it's like to code.

    You don't have to be an ubber guru with mad skillz BUT You HAVE to be able to recognize code quality and appreciate the fact that developers do what you cannot. The age old excuse: "But I am a PM, I don't need/am not paid to understand coding" is the first sign of an incompetent wanna-be in my book.

    ReplyDelete
  25. @Developer_GR yeah I've worked with some PMs who actually have worked as developers in their past, but once they've started in their new role, basically refuse to get into any "lower level" understanding or discussion regarding code issues. I can sort of see their point in some ways, but you're right, a good PM will be able to relate well to the development team and understand coding issues.

    ReplyDelete
  26. Great comment by Rayiner from over at Hacker News:

    Salaries are a strange combination of supply and demand and superstition and belief. First, fundamentally, it is difficult to evaluate the contribution of either a manager or a programmer. So people fall back to the notion that, well there are fewer of the former and they're higher on the org chart so they should get paid more.

    Second, programming skills are seen as a commodity, while business analysis skills are seen as a rarity. This is mostly self-reinforcing perception. At the hiring stage, because people see programming as a commodity they're willing to recruit widely, while because they see business analysis as a rarity they place disproportionate emphasis on pedigree (hiring ex consultants at McKinsey, etc) which limits supply. Given the Bell Labs study, pedigree is probably vastly overrated, but business types place insane value on it. I'm in the legal field and see big firms perfectly happy to hire someone from the middle of the class at a top 10 school over someone in the top decile of a top 50 school. The difference in standardized entrance exam scores between the two is often quite small, and law firm work takes more work ethic than it does brilliance, but firms hire the folks with the pedigree because it's easier to sell that to a business type.

    Third, without using too broad of a brush, I think business analysis, etc, on average, attracts a more aggressive crowd. Programmers tend to be more mellow in my experience, and that affects people's perception of whether you've got "killer instinct" and whatnot. My law school's parent university has a business school, and frankly those folks are a little strange. They Facebook-friend people indiscriminately, always seem like they're trying to sell you something, and are really dedicated to physical fitness and grooming. Given that a large component of compensation is perception, it's easy to see why these folks would have a leg up.

    ReplyDelete
  27. Excellent comment on negotiating your salary by calibraxis on Hacker News:

    Yeah, being willing to walk away for a better offer is the most encouraging thing to have in your pocket. That's worth working to get.

    Another tip I heard, and tried out, is to start with a price higher than the highest you think they're willing to part with. Even if you cringe to say it. On the logic that the price can easily come down, but it's far harder for you to push it back up. (If they accept your first offer, the reasoning goes, you didn't go nearly high enough. Remember, that first price can affect you for years.) It worked for me, though of course YMMV.

    (For those who cringe in salary negotiations, Graeber's "Debt: The First 500 Years" may give you some perspective on why it makes you feel bad.)

    Definitely helps to get in a position where you interview people. (Not to mention salary negotiations.) Then it'll be clear what employers want, and what other developers do. Based on that, you can present what they truly desire.

    ReplyDelete
  28. Outstanding comment on cost centers vs profit centers by ef4 from reddit:

    In a software company where software is a profit center, developers are paid well and generally respected.

    In any other company where software is a cost center, developers are low on the totem pole.

    If I had to give only one piece of advice to newly minted software engineers, it's this: you'll be much happier if you actually work for a software company.

    One exception to this is the games industry. The game industry has another factor. There is a never-ending supply of young and impressionable developers who think "I love playing games, so therefore I would love writing games." This large supply keeps wages low.

    ReplyDelete
  29. I have worked for a company that actually had as a prerequisite that all managers should actually be able to code their way out of a binary tree and let me tell you I am still regretting the fact that I left for greener pastures:(

    Concerning pedigree, I can testify that while business does place an insane value at it, it is also a sign that its not really a business you wanna be working at, since in programming the old adage hold truer more than anywhere: "Money talks and bull*** walks.".

    You cannot sweet talk your way out of an infinite loop in production code no matter how good you are. And if you consider yourself half a decent programmer then you don't have to. PM/BA are paid to do...

    ReplyDelete
  30. Another thing worth considering is that to many developers, their value to the company is largely unknown and speculative (meaning: easy to dispute for their manager). By contrast, managers, salesmen, marketing, etc all spend time on budget analysis, investments, revenues, pricing, etc. So they are constantly reminded of the value of what they do.

    What made me aware of that was a discussion with an salesperson at my previous employer. He told me he had added X millions to the bottom line, and had gotten a significant bonus as a result. He saw the sales as his personal contribution, his personal value-add. Never mind that I had designed the product and led its development for years (and never received even a quarter of that guy's bonus). At the time I designed it, its value was negative (investment). At the time the salesman was pushing it to customers, it was a money printing machine.

    ReplyDelete
  31. @Christophe de Dinechin: The fact that you left is an indication to your character and your skill, good for you mate

    ReplyDelete
  32. It's a false dichotomy, because you're assuming employers have reliable information about the economic values you discuss. There is a third choice: PM's and BA's are better at projecting (rightly or wrongly) value signals.

    ReplyDelete
  33. @Developer_GR, yeah pedigree is something that luckily, not too many companies I've encountered place much value on; one exception I can remember was a new PM who came with good refs, and seemed to talk the talk when he turned up. Fast forward 3 months and after creating havoc for both the developers and the salespeople he got shoved out the door with a swift kick up the arse.

    ReplyDelete
  34. @Christophe de Dinechin, whatever dim view developers might have about sales and marketing (which you've got good reason to have) noone can escape the fact that the most well crafted piece of software is worthless without someone selling it to the world. That said, in a lot of cases with a decent website and some google keywords you are probably half way to replacing the entire marketing team...

    ReplyDelete
  35. "Given that programming is generally more difficult"

    This is not a given at all. Programming is more difficult in the cerebral dimension, but management is more difficult along the people skills dimension among other things. Most programmers wouldn't make good managers. You might say most managers aren't good managers either, but then again most programmers aren't good programmers either.

    Sometimes I wonder why so many of them get paid at all...

    ReplyDelete
    Replies
    1. That is total BS. People skills.

      What a fucking crock. In big corporations management is basically "do what I tell you, since I have a higher title, and make more money than you"

      People skills success.

      Delete
  36. I've been a COBOL programmer since 1984, 29 years! I've always been paid morwe than I deserve at times, but never appreciated.

    Despite having the best of skills, work ethic, experience, style, and speed, the guy doing all the talking is going to get the lion's share of the money.

    Although money talks and bullshit walks, it doesn't work that way in the business world where we all get our money from the corporate payroll, bull shitter get paid more.

    PM's are nice people, when was the last time you implement something that went according to plan.

    ReplyDelete
  37. what people skills? somebody define people skills.

    Most PMs are dbags. Is shitting on everybody, and making unrealistic demands "people skills" ?

    If I got paid 105,000 as a PM, i would shit on everybody to, and say I had people skills.

    ReplyDelete
  38. The answer seems to be quite simple! This world is full of mobile app developers. In almost every nook and corner you will find developers ready to help you out with your problems. Now when it is the time where people rely completely on smartphones and tablets. It has become now a necessity for every entrepreneur to reach large target audience through a medium they prefer the most. Great article though!

    ReplyDelete
  39. Because unless you're working for ex-engineers in an engineering company, most non-programmers (if they were honest) haven't got a clue what programmers actually do, or aren't really that bothered, and see programmers as a means to an end.

    And it's also because as an industry, we don't have a trade union to argue on people's behalf for equal pay.

    Either grin and bear it; or become useful, helpful and indispensable; or work your way up the ladder into management; or move on somewhere else. Or learn a valuable skill and go contracting.

    ReplyDelete
  40. 'programming is more difficult than managing', ouch! As a manager, I definitely disagree on that statement. I created a blog post on why I prefer managing vs coding here: http://softwaremanagementblog.net/2016/02/24/top-5-reasons-to-choose-managing-over-coding/

    ReplyDelete
  41. I did IT at University... in the labs I could never get the level of concentration required to code well. I was always saying Hi to people that passed me, chewing the fat, gossip etc etc. My skillset became building bridges with other technology streams and making something from nothing. i know it's a sweeping statement but really good coders tend to have a tunnel vision, a lazer focus on the details and structures, something in general that does not make them people persons. I used to have a guy who was top of his field in software design and coding but the thing was you could never put him in front of a client. Different stroke different folks As I said huge generalisation but that's my tenpenneth worth.

    ReplyDelete
  42. I did IT at University... in the labs I could never get the level of concentration required to code well. I was always saying Hi to people that passed me, chewing the fat, gossip etc etc. My skillset became building bridges with other technology streams and making something from nothing. i know it's a sweeping statement but really good coders tend to have a tunnel vision, a lazer focus on the details and structures, something in general that does not make them people persons. I used to have a guy who was top of his field in software design and coding but the thing was you could never put him in front of a client. Different stroke different folks As I said huge generalisation but that's my tenpenneth worth.

    ReplyDelete
    Replies
    1. Thanks Mark, nice comment - yes I think its recognised that many developers have an introverted personality. In the groups of developers I've worked with I've found a pretty wide range of people - just as in any other group, some overconfident, some reserved, some are great in dealing with people. I personally got a lot of benefit working in a retail job while studying - it helps to hone your customer skills and seeing things from a different point of view. In retail there's the saying that the customer is always right, whereas in programming you could probably say the user/client is always right. Even if they're misinformed technically. ;-)

      Delete