Why do Programmers get paid less than Project Managers or Business Analysts?
dodgycoder.net
dodgycoder.net
Otherwise (as MMM notes), the only career advancement available to your engineers is to move into management, and that's a waste of a great engineer, and a good way to wind up with a poor manager.
Speaking from experience: being a CEO is something I've learned to do, being a programmer is something that I just am. The only reason I got into management is that the size of projects I wanted to tackle exceeded what I was capable of doing myself. Unless I wanted to work on other people's projects, it meant I needed to put together my own team.
While I wouldn't want to encourage programmers to move into management as their only career path, I also wouldn't ever hire someone into management who didn't work their way up in the field. Understanding how to manage technical projects is often much easier for someone who actually knows how to implement a technical project. Apple was/is similar -- Bertrand Serlet (SVP of Software Engineering) wrote malloc, Avi Tevanian (SVP of Software Engineering, Chief Software Technology Officer) was one of the primary authors of Mach.
In conclusion: programmers do not always get paid less than project managers or business analysts. If you feel that you're stuck earning less than you deserve, don't treat that as an axiom of the industry -- figure out how to move forward in your career, even if that means finding a company that sufficiently values senior engineering staff, or working to become a senior engineer.
Regarding programming, making 'apps' in .NET for a big corp is considered (and maybe it is) a commodity by the management. So, if you want higher salaries, you may want to move away from that.
What also doesn't help the programmers (generalizing again, but let's do it for the sake of discussion) is this complete misunderstanding they have regarding the 'suits'. It is absolutely true that a lot of 'suits' talk BS, but they do have a feeling of the business that programmers seem not to have, otherwise there wouldn't be so many todo and project management apps out there.
My strong advise would be to actually move away from the technical side for a moment and talk with the 'suits', ask them what problems they have, ask them about the business, etc. Companies have so many problems, but they are totally disregarded and this kind of discussions don't help.
Now, a programmer that cares about the business: that is a skill that is not a commodity...
There's also the option of avoiding working all-together for companies that employ said "suits". Which, and I thank the Creator of the Universe for that, I managed to do for the last 10 years of my employee history.
Management's output has no unit tests, no spec, few stats to hold accountable short of annual revenue. In my experience (30 years) they function through a combination of personal feelings and witchcraft. Those that luck out are considered special for no good reason - statistics shows there are usually outliers, so a dart-throwing monkey may do as well.
Ask the suits what problems they have? Its their job to drive the program. As 'commodities' why on earth should we have to pry vital information out of some overpaid manager? I don't mean to be spiteful here, but managers that don't know intimately the details of their program, tasks, direction and resources are useless drones.
Of course, the suits are mostly unpleasant people that do not respect your work. However, being the programmer generally a smarter guy, he could try to understand what the world vision of the suits really is (mostly: more profits, less cost) and work around that. Have you ever asked yourself why such horrible pieces of software like sharepoint are so common in companies? Because who sells them understands the world vision of the business people and he can put that into a crappy product and make god damn money...
And the stupid commodity programmers shake their heads and turn their backs, because explaining "I said it took longer to do it right, and you chose fast and cheap every time, and now we are where I said we were going, but you made it my fault somehow" makes them sound petulant.
Yes, believe it or not we ARE trying to work around cost and earnings, but you shoot us in the foot every time. Why? Because you are rewarded using financials. And they are recomputed on too short a cycle to reflect quality.
Bottom-line is remote from most folks in a company. Executives may be accountable for P&L but not anybody below that. What does a middle manager do? They optimize for their cost and milestones-complete. Which drives them to maximize their budget and minimize their deliverables. Which, if you think at all about it, are exactly opposite to the company goals.
Down below that, you have programmers. Who mostly care about the quality of what they do. But find their manager cares less than crap about that.
So here we are. Right where your short-sighted financial goal-seeking puts us.
IMHO, one can stop reading at this point because an argument based on a flawed assumption is, well, flawed.
Developer suggestions were generally based on a broader view of the business' overall needs (because of the breadth of discussions we were involved in) than other people at table had, which apparently can be threatening, regardless of how you present things politically.
I realize not everyone as a developer gets in those situations. Sometimes you're chained to one project and set of people for months on end. If you're not, you can have a much better view of the business needs, but that doesn't mean anyone will listen to you as a developer. You need to move out from being perceived as such - either by changing jobs to another company, or occasionally within a company. I've never had the latter option work out for me, but have seen a couple people do that successfully.
You have to see the world like them, think like them and, especially, talk like them. You have to understand their incentives in the company. Etc. If you don't make clear for them why your proposal is beneficial (to them, not to the company), then you lose.
Fair point - basic human nature - but then people need to stop saying "you (developer) don't understand the business needs or the company's needs". I understand them quite well. If "the company" continues to employ people who need constant ego stroking every 5 minutes, then they'll continue to bounce along, and I'll go sell my skills to one of their competitors who is more open to input from all levels (to the extent any of those exist in that industry!) :)
Not recognizing that others may have vantage points that were unknown to me was a tough lesson to learn, but an important one. It's difficult to speculate on what someone else may know or not know.
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.
How is noting a flaw in the argument/question-setup worthy of downvoting?
One problem is that the term "programmer" covers such a wide range, from "code monkey" through "business analyst who codes." The range of productivity in code monkeys varies greatly, but they are still essentially fungible. When you start adding analysis and problem solving skills value goes up and fungibility goes down. In organizations that have formalized the separation of coding from analysis and problem solving, the coding roles will (and should) pay less. I think that's a bad decision, but it's certainly common enough.
You must not be a programmer. :)
Maybe I just took too many logical reasoning / philosophy classes in college...
Edit: This was meant as a response to your comment about being downvoted, sorry.
Programmers have the difficulty of the unforgiving reality of having to make things _work_ - pass tests, compile, perform. This makes their job challenging, but it also makes it rewarding in that you know when you've gotten it right, when that piece of work is done.
Project managers have a task much more like herding cats: a poorly (or non) defined problem, moving goalposts, and a lot of "least worst compromise" kind of decisions. They have to deliver business results while keeping engineers and execs happy, in many cases with much of the responsibility for a projects success and little of the authority (i.e. they can't hire or fire engineers because the engineers don't actually report to them.)
I'm not saying one is actually harder than the other - that's very situation-specific. Just that the "difficult" parts of the project manager's job are less obvious to a programmer. (And, I'd note, often the _exact_ types of discomfort that most programmers would love to avoid dealing with themselves.)
(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.)
The other answer is that the wage is a reflection of market value / cost of labor. I think that's probably a function of supply.
As such, people seem to be downvoting them as noise.
Socratic method works in a student-teacher relation. By using it here on the message board you immediately assert that you know the true answer while the rest of us only know ignorance.
It is mostly a question of making decisions that "scale".
If engineers are mostly deciding "how to build" something, then managers are mostly deciding "what to build".
Assuming managers are not just "schedule keepers", and are actually making decisions, then it makes sense for them to be paid more based on making those decisions correctly.
If the managers decisions on "what to build" are correct, and 12 months down the line a product is more successful because of that decision, their compensation can be much more than that of individual engineers.
Certainly there is much overlap between "what to build" and "how to build it", but in general it is the "business" role to decide what to build, and engineerings role to decide how to build it.
To make the point, let me turn the question around: if management is easier and pays more, why don't more programmers choose management?
The answer is that it's not necessarily easy to land a management job, whereas there's often work for programmers to do (though programmers may need to do consulting and travel around or something).
What happens is that business types get comfortable communicating with specific managers, and then they don't want to spend time building rapport with new managers. Great if you're that one manager, but not necessarily good for the 5 that are stuck trying to apply as a manager while unemployed.
(I'm sure it's more complex than this, but I believe the above describes a significant factor.)
Witchcraft exists on the business side and its mysteries remain the domain of tall, handsome people. It really gets to me that even smart engineers will fall for it, too. Having been on both sides of the table I can tell you that engineers who take the stance that they shouldn't be making up the business rules are doing themselves a disservice. Most business types are sitting around waiting to be prompted by the engineers and have no clue of how something is supposed to work until the actual work is done. /End rant.
Um...they are completely different skill sets.
The problem is that most finance people have no clue about the underlying cost dynamics of software development. Most finance analysts learned from textbook examples based on manufacturing. Many big company finance systems are still set up using software designed for manufacturing.
Guess what that means? You're basically an assembly line worker. BA's and PM's are viewed as either managers or "management track" assets.
This must change. Both for the sake of profitability and fairness to top programmers.
My recommendation, if you know anyone in the finance department try to educate them a little about the cost dynamics of software development. The sort of stuff you'd read about in Code Complete or MMM.
They'll probably ignore you. If they do, fine, whatever. If not, you may have taken the first step in getting your company to understand how to manage their most valuable asset: programming talent.
To get the young mathematicians and programmers we needed we had to pay the same rates they would get in industry - but the pay scales were all set by rank. So the only solution was to promote 21 year old maths grads to the heights of the command structure.
There were senior site meetings that had a 'general' rank head of each dept and 20 or 30 'general' rank 20 something maths specialists!
But, given that many good technical managers were at one point good technical developers, it makes sense that they're paid more.
Having done both roles, being the 'lead' senior technical developer is the more difficult of the two. Though technical project management is more difficult than programming.
Even though it doesn't always turn out that way, just appearing to carry the burden of responsibility is often enough to make justifications for being paid more.
In reality, the truth is of course somewhere in between the optimistic first paragraph and the cynical second.
Suits (and yes, I know this is an us-vs-them mentality) understand charts and numbers and projections, etc., but rarely give a damn about what actually has to happen to earn their quarterly profit. Project managers can produce enough of those to warm the cold pits of any executive's heart; programmers can point to lines of code and get a confused, annoyed look and a trip out the door.
It's not that executives are, by nature, evil or bad people (OK, not Hitlerian evil), they just don't worry about the tiny details.
At general equilibrium (assuming open markets), a corporation's "reservation price" will be equal to the employee's "marginal product", so we don't generally use the term "reservation price" in the employer's perspective.
OTOH, an employee will have a "reservation price" that is the minimum they'd accept to force themselves to wake up at 8am everyday and go to work.
If you are the last COBOL programmer on earth, then surely many companies formerly using COBOL have switched to other languages and platforms and, most likely, there is a cross-compiler to COBOL from Python or C or something. Thus, a COBOL programmer's marginal product to any corporation would not really be that high since the company could switch to another language instead of hiring you (especially since they will have to switch eventually (assuming you, the last COBOL programmer on earth, are mortal).
Evidence: http://www.simplyhired.com/a/salary/search/q-analyst/q_1-sof...
I'm surprised few have pointed out that this entire conversation is based on a generalization that could easily be false...
Things might change a bit when they can outsource management or when non-Western competition truly arrives.
(Maybe it helps to read _Getting to Yes_, or something.)
Plus, there's an obvious class component. The further removed you are from working with your hands, the higher value you're perceived to have.
(After all, who hires these project managers and business analysts? Managers. Who naturally value themselves more than underlings, and will transfer that value perception to these managers/analysts. This argument was used in Schmidt's _Disciplined Minds_ to explain some of the higher rank theoretical physicists have over experimental physicists and engineers, even if engineers earn more money.)
It's that, but it's also (perceived) pedigree. A lot of "business analysts" come from big consultancies like McKinsey, or investment banks like Goldman, et al. Managers and MBA-types have a mystical perception of those firms -- almost as if they trained jedi business knights. The truth may be far from it, at least in my experience. But perception usually trumps truth.
The best way to improve bargaining power is to be willing to walk away at a higher offer.
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.
Take for example do-at-home projects. If you can solve them, then you can really hit them out of the ballpark. The first time I reviewed the solutions, I saw that only one or two had neat complete-ish solutions. (Most had significant cut corners; one was written by an insane fellow.) It was easy to see how to go beyond the best ones: make a build file, a readme that's worthy of a good opensource project, etc.
I like this point a lot, and it makes sense, but then I thought, how come it doesn't apply to athletes ?
The classical worker, the kind I believe the GP meant to refer to, is a commodity. It's the kind of workers it might make sense to hire as day labourers and, conversely, for whom collective bargaining is beneficial.
There has been a tendency for some businesses to treat programmers as this kind of workers, often leading to failed off-shoring efforts.
If you're great at operational work, but are no good with tactics or strategy, you won't ever get a huge salary, in the office or in sports.
After all, look at pro-sports salaries and you'll see that the highest paid players are the ones who are put in situations where they have the ability to make potentially critical decisions, and who have a history of being relatively good with those calls.
Read up on the Reserve clause and Curt Flood for more info about how this all changed starting with Major League Baseball in the 1970s.
In some places they get paid more.