If Software Is Eating The World, Why Don't Coders Get Any Respect?
"Hold on", you say, "isn't programming a high-paying job"? Sure, next to the average American worker. But the average American worker is a college dropout. What if you compare programming to jobs for other highly skilled professionals?
Consider a 35-year-old, senior Google engineer. He probably makes about $150,000, which is enough to buy a good house and raise a family. But Google wouldn't hire a random guy to fill that job - this engineer probably has an Ivy League or other elite degree, fifteen years of work experience, a very high IQ, strong drive, and numerous other skills (anyone who's been through the Google hiring process can tell you how hard it is to get in).
As a doctor, however, someone like this - a top professional at the peak of their career - would probably make about $400,000. Partners at big law firms commonly net a million a year. Investment bankers are making several million (post-crash!). Top management consultants easily clear $500,000. Even a top accountant - probably a partner at a big 4 firm - would make two, three, or four times as much.
Of course, life isn't all about money. Is programming a top job from a social perspective? Again, no. Congress includes not a single programmer, and to my knowledge, it never has. Almost all big companies are run by MBAs. Even Microsoft, arguably the canonical software company, is run by a non-programmer from Stanford Business School.
Are programmers top government advisors? Are they national heroes? Do doctors and lawyers and policemen tell their children that, if they work hard and practice, one day they can grow up to be a programmer? No. Obviously not.
When the government wants to bring in more workers from overseas - which obviously lowers salaries, and reduces job security - who do they bring in? Computer programmers. Every single one of the top ten H1-B visa users is a technology company. Politicians justify this by talking about a "shortage" of programmers, but would there really be a "shortage" if programmers were paid $500K, as much as doctors or management consultants? Of course not. Saying there's a "shortage" is economically the same as saying that "we don't want to pay you guys enough to meet the demand for labor".
Now, to wrap off, since this is a startup site, doubtless someone is saying "but programmers can make millions in startups!". This, on the face of it, is true. However, as I'm sure any founder here can tell you, you can't make a successful startup just by being a good programmer. You have to, to quote Paul Graham, also "answer support calls, administer the servers, design the web site, cold-call customers, find the company office space, and go out and get everyone lunch."
Now, if you're willing to do all that, and work the eighty-hour weeks a business requires, why do you need to be a programmer to make it rich? You don't. There are millions of ordinary small businesses - ditch diggers, electrical companies, contractors, roofers, construction firms, and on and on - that, if run well, will make you millions without a single line of code. (For more on these sorts of business, check out, eg., the book The Millionaire Next Door.) What "programmers can get rich in startups" really means is "entrepreneurs can get rich in startups", whether they're programmers or bricklayers.
So, why is this the case, given how important software is to the world? I think the answer is hidden in the rest of my post. Notice how I've been arguing for more pay, job security, etc. for programmers. A majority of the people here are probably programmers. Yet, my tone is pretty argumentative; I expect people to disagree with me, and am trying to answer their objections.
Why is that? On the face of it, it's very strange. If you went to a w...
275 comments
[ 4.9 ms ] story [ 305 ms ] threadUnfortunately, I think starting off with a tl;dr rant, including such howlers as comparing the growth rate of a developing and a developed country isn't the way to get going, not to mention citing Microsoft's current leadership as evidence that programmers can't get anywhere. Erm, I vaguely recall someone else running Microsoft on its way to success... Bill someone?
As an aside, given the vast amount of political crackpottery - plenty of which is in evidence here at HN - among programmers, I have to say that I'm not hugely saddened that congress isn't stuffed with developers.
There's a serious debate to be had here, but not with this wild, ranting start from a throwaway account.
- $150,000 is much less than a top-flight engineer like the one you're describing might make; it's not out of the realm of possibility for what an engineer with a good pedigree might make his first year out of school, if he went to work for a big company.
- The engineer went to school for four/five/six years and then went to work. The doctor who earns $300-400k went through a four-year university degree, four years of medical school, and a residency or fellowship before he started earning money. Some specialists, like neurosurgeons, take at least 11 years after getting their undergraduate degree before they really "get their wings." Not only are their then-substantial salaries offset by the huge delay in getting those salaries (residents make, what, $35k?) but they also have to pay for things like malpractice insurance, which can be in the six-figure range.
The market doesn't care about what you have done to get to where you are. If you spent the better part of a decade to acquire a Ph.D, you are not entitled to earn more money waiting tables at the local restaurant.
The upper bounds of earning is only limited by the value provided by the work. A good doctor or lawyer can provide a lot of value (health and freedom are, to most people, the most important things in life) and they are usually in short supply, thus they can command the high rates.
If programming jobs top out at $150,000, it means that either there is no shortage of people to do the job, or that it is simply no value in having someone do the work for more. In the latter case, if true, means that programming really isn't that important.
It is said there is a real shortage of programmers, so programmer wages will also be moving towards the value ceiling; which appears to be $150,000 (though I think there is room for debate there).
My point is about the relative pay within a profession, rather than a profession relative to other professions.
1. As a general rule, I am very unwilling to put up with crap...life is too short. I also want to be productive with the energy I put into something. If you are hired in a technical job, you can reasonably expect to be around competence (and if you're not, you leave). The biggest reason I would never see myself joining Congress, or upper management at some companies, and similar jobs, is this: I can already see who my co-workers would be, and they're horrible people. I've seen what a lot of these clowns are capable of, and you couldn't pay me enough to be the only smart man in the room. It would be day after day of banging my head against the wall and wasting my breath.
I believe that the only way you'll ever see engineers enter these kinds of jobs is if you can simultaneously replace a huge percentage of an organization with new people: the kind of people that engineers can believe in and work effectively with. It has to be appealing from the outside, and right now it just isn't.
2. I enjoy most work. As long as I'm making cool stuff and I can be proud of what I produce, I'm pretty happy. I am more stressed about things that have technical consequences (e.g. somebody pushing for a change that I know will be a long-term negative), than I am about salary.
In other words, if it wasn't so easy to find enjoyable work doing actual programming and the "important" jobs weren't so maddeningly filled with annoying individuals, you probably would see engineers doing other things.
I understand your sentiments - I personally don't see myself as ever joining upper management - in my life I want to do good, worthwhile things. If the best way to accomplish something will be to manage a team, then fine. But no crap, straight to the point. It's the one reason I find startups more and more appealing.
If you want the life of a rockstar or an investment banker, go do that instead.
Maybe lawyers shouldn't get that much money. Sometimes, they just don't contribute to humankind. Look at the patent war.
Maybe programmers are underpaid, But I think someones else are overpaid.
China was an inferior student of the class, he used to get F for his final exams, but now he has improved to C or may be B, Admittedly he has been improving really fast, but this is because he was so bad that he had a large room to improve. How hard to improve from A to A+?
You mentioned that Chinese leaders are engineers, that's true. But I can tell you why, because 25 years ago, there was no such thing called "finance" in China. Did they have it in the Soviet Union? North Korea? Cuba? Also, in a country without a real legal system, why would people want to be a lawyer?
Those Chinese leaders became leaders, not because they are excellent engineers, but because they have connections. In fact, I seriously doubt how they got their engineering degrees.
I agree with you that engineers should play more role in politics and government. I'm willing to see more presidents with engineering backgrounds.
In China, people have the impression that engineering students are the smartest, whereas in the U.S. people think smartest student go to law school.
You might be able to do that remotely - but it would be pretty difficult to do some things (e.g. how do you attend court?).
random google survey:
http://www.pangea3.com/ http://sqglobalsolutions.com/ http://www.sunlexis.com/ http://legal-process-outsourcing.com/ http://www.legaleasesolutions.com/
Here's a list last updated in 2008: http://www.prismlegal.com/index.php?option=content&task=...
To me, this is indication that there's a flood being held back by legislation.
1. Senior software engineers at Google in Mountain View make over $200k all told.
2. Senior software engineer is in the middle of the Google ladder. The bulk of engineers at Google are senior level, so it's not special. The very best engineers make more.
3. You are vastly overstating the salary and difficulty of other fields.
3a. Doctor - You have to go through medical school and residency. Medical school incurs a ton of debt and residency pays shit. The average salary for a doctor in Silicon Valley is $200k.
3b. Investment banking and management consulting - first of all, in these fields, a few people make a ton of money, but most don't make nearly as much. Both of these fields are known for their horrendous hours. I'd rather work 40 hours at $200k than 80 hours at $500k.
4. There are also big winners in the programmer world. People who went to good startups early (Facebook, Google).
5. Many programmers _enjoy_ their work. How many can say the same about investment banking, lawyering, or management consulting?
Everything is boring when you don't understand its meaning. A good lawyer can easily figure out what is important in a legal document, and make smart decisions based on it.
I don't think legal language is as unpleasant to lawyers as it is to people without legal training and experience.
4. This is pretty key. Most of the top engineers I know at Google aren't paid $150K, they're paid millions via acquisition, stock grants, or insane counter-offer.
I keep reading this again and again. A doctor, lawyer, or management is not necessarily smarter than a programmer. They have to work longer before they can start practicing their profession but that doesn't make them smarter.
3a) - 3b). True, but I was comparing the top bankers/consultants to the top programmers. Remember that Google is the very top, #1 software company to work for - it's only fair to compare Google engineers to, say, mid-level bankers at Goldman Sachs. If you want to compare average people, you'd have to look at, say, programmers at Wells Fargo or something.
4). That's essentially luck. If it isn't luck, please explain why the median VC loses money. Either a). average programmers must be better at picking winners than average VCs, who (if not as smart) have decades of experience and spend hundreds of hours on it rather than ten minutes deciding between job offers, or b). an average programmer shouldn't exercise their startup stock options, because they'll expect to lose money on net.
5). Definitely true, and it's why I'm a programmer myself. But it doesn't address my points.
What % of programmers work at "software" companies? Here, in this space, that realm receives bulk of focus, and even there, most of these positions are of the one-off variety (or very small teams) compared to corporate IT where not so long ago, hundreds, even thousands of programmers worked in departments now staffed (in what I would estimate to be the majority of firms) by an amalgamation of offshore programmers and imported non-immigrant visa workers. Yes, these jobs pay more than lettuce picking, but the mechanism still serves as downward throttle on wages and bill rates.
There is colossal range in low-end to high-end in programmer pay. And jobs at the high end are not as plentiful as those on the low end. And developers in Silicon Valley (or big metro hubs) eclipse the rest of the country where it's not unfathomable for programmers to make less than 50K.
I will agree with the contention that the free agency nature of career field is driving out those who do it because they "_enjoy_ their work" -- in non-software corporate positions, I do not believe that was the norm until the 21st century.
Carrying the world on ones shoulders (if that is indeed what programmers do) is not something that gives respect.
I think the reason we're seeing this is that programming has been commoditized quite successfully by an industry that saw they needed programmers but that did not know how to judge the quality of a programmer. Doctors certainly vary greatly in quality, but doctors are unionized after a fashion by the AMA, and they have managed to put into place artificial supply controls (regulation and licensure) that keep incomes higher.
The software development industry has gone the other way- instead of limiting the number of programmers (not necessarily a good thing, but it would boost incomes) we've developed quite a bit of process to try and make programmers interchangeable. I'm talking about much of the "best practice" and even the entire attitude that programmers should not be "lone guns" but part of a homogenous collective of coders. Everything from pair programming to test driven development to code reviews serves the process of making programmers homogenous and interchangeable, and thus more easily replaceable.
I also think that the Legal and Medical and Finance professions have developed for centuries in an environment where they were able to artificially limit the number of practitioners, and artificially boost the "Establishment credibility" that they received. I don't think most politicians are lawyers because lawyers are good leaders, but because lawyers were able to establish that career path as one of their own.
Software development, in contrast, is much newer, and currently is much closer to a free market.
The legal profession in America has a huge upstart politically as votes are required for many positions in the legal system, thus allowing the professionals to acquire experience with campaigns, raising money, taking over public office.
A CS degree, which many programmers don't even have, takes 4 years. There are quite a few 'programming' jobs for which having a CS degree is being overqualified, but let's say that a CS degree is the baseline. To become an MD, with the specialties that pay the amounts mentioned here, one needs to get a 4 year degree, then pass the MCAT, then go to medical school for 4 years, and then do 3 to 8 (!) years of residency, in which you do 60 hours on a slow week and have regular weekend and night shifts. So that's 11 to 16 years of studying. You only get paid in the residency, and even there only around US modal wage.
Never mind that nowhere in this time period, you are guaranteed a high-paying job. You can do your full residency and be told at the end that they don't consider you fit to be a doctor.
Do a quick total lifetime earnings comparison in Excel. Don't forget to include tuition and resulting student debt payments. You'll see that the general picture painted is flat out wrong.
(don't even get me started on lawyers - there is vast unemployment under lawyers, only a very small percentage work at firms that pay the amounts mentioned, and of those only a very small percentage make partner, after working 80 hour weeks for 20 years. Why do you think the US alcoholism rate is twice the national average amongst lawyers? Hint: not because they have the easy-money lifestyle being suggested here.)
I worked in a town where programming errors could easily causes crashes. There was talk of that actually happening once, although on investigation that probably wasn't actually true. When I say "crashes", the hardware at issue would routinely way several tons and be moving at 60+ miles an hour.
I do not mean to cast any aspersions on the huge levels of responsibility and mental stress involved in reviewing purchasing contracts.
In a legal/medical environment it is usually much more personal and it is the individual professional who is held responsible - potentially criminally.
There is also the fact that doctors, and many lawyers (although obviously not all - I should have qualified that) do things that have an immediate impact on people (treating the guy having a heart attack, sending that murderer to jail, preventing someone accused of some horrible crime from being railroaded, telling someone that they will die of cancer etc.).
[Note: I am married to a litigation lawyer - so I am biased!]
On the other hand, trauma room surgeons have minutes, sometimes seconds to decide whether to cut left or right of the trachea of this guy who was just rolled in and of whom they know nothing, sometimes not even the name, let alone medical history; and oh they need to hurry because there's another guy being rolled in who is also leaking blood out of every possible orifice, plus from the 3-inch hole in his chest.
Of course it's easy to make comparisons between people at two opposite ends of the spectrum - sure, that first year in the discovery room in a due diligence isn't going to make a world of difference if he misses one contract with a company 10 years ago that went out of business but for whom, technically, the acquiring company could still have a 10k USD liability if they miss one little stipulation in the contract. My point isn't that programmers never do important things, or that everything that doctors or lawyers do is mission-critical; but in the aggregate, and in the overall scheme of things, I think it's a clear and shut case that the potential influences of wrong decisions or errors by doctors or lawyers are more severe, in terms of potential human suffering, and harder to prevent, than those by the most programmers.
Take even a lowly divorce or pro bono criminal defense lawyer - forget to file that motion? Whoops, you just cost your client half of his life savings and he'll be flat-out broke for the next few years, or he'll be in jail for years. I mean, I like to thing that my work is pretty important too, but let's get some (objective) perspective here.
I'm more highly trained, and engage in more ongoing training than any of them. All of these professions involve ongoing training, though for lawyers and judges, once they get their degree the need drops dramatically. In fact, speaking of these people I know myself, they all have practices that are pretty routine with each case being very much like the others.
In my experience, as a software developer, I am constantly having to learn new areas of expertise. For instance, NoSQL has become relevant in recent years, and on previous jobs I had to learn the intricacies of fairly arcane businesses. My lawyer and doctor friends don't do this level of continuing education.
Also, you seem to be debating a point I'm not making. I never said it wasn't risky or expensive to go into those careers, in fact, that is part of the point I made: In both cases there are gateway organizations and laws that exclude people from the practice, preventing competition in salaries.
Of course, I too have read numerous books about various topics in programming, and I've played for 1000's of hours with languages, tools, etc. I could count that as 'training' and say that I'm more highly trained or do more ongoing training. But frankly, the time I spend on that is not 'training', because it's way too inefficient compared with 'real' training. Most programmers that I know who are programmers-by-passion and not programmers-by-occupation are like that. Again, maybe you're different, and I'm sure that there are many people out there much more disciplined and talented who have had more training than the average programmer. But saying, in the aggregate, that programmers have much more training and do more ongoing education than other professionals, doesn't pass the smell test. I'm not even saying that they have less (although I suspect they do...), but certainly not more.
Anyway, I do agree with your last point that the amount that people are paid is not directly related to the amount of work they put into getting to where they are; and that organizations like the AMA and the ABA are relics from the era of guilds and drive compensation for their members up; and need to be abolished. Unfortunately the trend seems to be the other way - more gateway organizations under the guise of 'ascertaining professional quality' and 'protecting consumers from incompetent practitioners' - but that's a different discussion.
I don't know where you can get a good programming job if you don't even have a university degree. You can certainly freelance, but then there are no guarantees.
The more frequently picture is that, to get a really good job (at Google, for example) you frequently need a MSc, and not few software engineers have a PhD too.
My guess is that the profession would become a lot more attractive to the average kid that is very smart, but doesn't have an interest in law or medicine. Other guesses are that security would become absurdly good in general, and a lot of tools would be perfected.
Instead, the importance is placed on loving programming, because you're going to have to love figuring out what you need to be educated in and love providing for that education out of pocket, and with no credentials to show for it. So you're on an equal playing field with anybody off the street when dealing with an HR department, and at a disadvantage against a CS graduate who may not be able to program to save his/her life if you didn't go to school to learn the math, but simply learned your profession.
To have a capital-p Programming educational track like Law or Medicine could really be a boon for the profession in most ways in my opinion. Could somebody tell me where the Perl class is? Because I can't seem to find it or get student loans to cover it.
The one thing that I think would be problematic would be an injury to Free/Open Source software, because practitioners wouldn't feel the necessity to put that evidence out there that they actually can program, like surgeons don't feel like they have to stream over the web live operations they are doing for free.
Doctors work absurd hours for years, then many go on to keep working absurd hours.
Doctors who don't run practices don't make the same paychecks, and again, same works for coders. If you don't run a consulting house, don't plan on making 200-500k a year.
Your best bet is to love doing what you are doing - acting or programming. Also plan your life according to what you are making and be content. Leave the rest to fate.
One thing that may disadvantage us is that programmers are still one big blob: we don't define our specialities strongly enough to the outside world (or to ourselves). For example, teachers have their subjects: one might consider two maths teachers interchangeable but not a maths teacher and a French teacher, and that is obvious to a non-teacher. You and I might see the absurdity with swapping a web programmer for an embedded safety-critical systems programmer, but I don't think it is at all obvious to the outside world.
For all of these things, when managed properly (i.e., rotate programmers enough, take care of documentation, have strict coding standards etc), you can get a new programmer who has had a 2 year degree in programming and 6 months of training on the specific technology up to speed in such a project in a week. That's not quite as interchangeable as a guy turning screws in a car factory, but it's not that far off, either.
I realize that everybody likes to thing that they are so special and that without them the world (and certainly their company) would grind to a halt), but for the vast majority of programmers, it's simply not true. And for those where it is true, there is a large part where it's only true because management allowed one person to become so entrenched in one place that they've made themselves indispensable. And not because of the nature of the work.
And this is how crap code comes to be.
And when you need changes in 3 years time - hire a contractor on fixed fee, who cares that he will age 10 years in 10 days time; he'll move on to the next pile of crap soon anyway.
Which is to say: organizations derive such fantastic value from software, that even slow, buggy, late and over-budget projects, nor a parade of such projects, is enough to cause them to reconsider their approach.
Which is the answer to the original question.
Q: If software delivers so much value, why are programmers typically paid so little and treated so poorly?
A: Because even bad software delivers value far faster than most organizations can incorporate it and there's no shortage of bad programmers.
And of course there are exceptions, but from what I've seen it seems like there are more opportunities for programmers to bring personal creativity to their work than doctors and lawyers, just because the field is less established and there are more open questions.
Of course, there's the union/doctor's association thing that keeps the supply short whereas programmers and "programmers" turn up almost everywhere.
Similarly programming skills vary a lot. Doctors and lawyers execute more and innovate less and they all have a basic level of knowledge that people are willing to pay for. Hiring a programmer is like hiring an artist: a good one will create lots of wealth while many can just fill in the blanks with something.
There's also the question that many doctors and lawyers are running their own clinic or law office, or they're shareholders of their "employer". There are a lot of programmers merely on the payroll. And being on the payroll only doesn't make you rich unless you can negotiate your salary or compensation to match your perceived personal capability. This hints that doctors and lawyers could be more fairly compared to entrepreneurs.
If management can't see the difference in value-add between a seasoned hacker and a new CS graduate, they won't pay for it.
The reason hockey players have agents is because the hockey players focus on playing hockey, while the agent focuses on understanding how much value the player brings to the team, and tries to extract at the margin the price a team is willing to play. Likewise with unions, they have negotiators who understand the value that these employees bring, and try to extract how much the company is willing to pay these employees at the margin to still turn acceptable profits.
Programmers do not seem to have this - many program because they enjoy it, and companies take advantage of this fact. I believe many doctors are part of organized unions, as well as other engineering professions. I do not suggest that startups should have unions, but maybe unions should be introduced into companies which employ a large number of software engineers, that way they can worry about coding, and the union can worry about salaries being fair. Thoughts?
Sure we do. They're called recruiters, and they're paid a percentage of your starting salary as commission by the hiring organization.
From Wikipedia: Economist Milton Friedman, [has] asserted that the organization acts as a guild and has attempted to increase physicians' wages and fees by influencing limitations on the supply of physicians and non-physician competition. In Free to Choose, Friedman said "the AMA has engaged in extensive litigation charging chiropractors and osteopathic physicians with the unlicensed practice of medicine, in an attempt to restrict them to as narrow an area as possible."
So AMA works to increase physicians' wages. Now let's think about what the ACM is doing:
- Trying to increase international membership. This benefits ACM in terms of dues, but I'm not really sure how it benefits members as programmers. If anything, it could hurt them. Don't we face enough international competition as it is?
- Promoting programming education as part of core curriculum in high school. WTF? Last thing I need is every dipshit who ever took a class thinking he can write software.
TL;DR: American Medical Association serves its members. ACM doesn't seem to help its professional programmer members whatsoever.
Edit: I suppose ACM is serving teachers on the above points? ACM has a lot of academic members. Maybe what's need is a separate programmer's association.
The core of your argument is entitled whining.
Computer programmers can make truckloads of money the same way that everyone else can: by seeking it. If your professional goals are aligned with making money, then your chances of making a lot of money go way up. Top lawyers aren't paid the most because they know the law the best; that's ancillary. They're paid big bucks because they win money for their clients, prevent their clients from losing money and build networks to people that have money to give them. Likewise, programmers who define their goals economically (which broadly includes creating value for users) have nearly unparalleled earning potential.
8 of the 20 richest people in America are (or have been, at least nominally) programmers.
The crux of things is that you don't get rich for being a skilled technician -- and I use that word broadly. Lawyers don't get rich for knowing the law, bankers don't get rich for understanding economics and programmers don't get rich for slinging code. You get rich by creating value (or at least tying yourself at an opportune moment to a benefactor whose goals are so aligned).
The rest of folks are compensated at prevailing market rates for their technical skills -- and incidentally, American programmers are paid better than in almost any other country.
But claiming that "computer programmers don't get respect" is broken on so many levels. First, computer programmers are certainly among the most respected trades. You need to interact with a broader cross-section of society if you believe that not to be the case. Second, the baseline for becoming a programmer isn't very high -- certainly nothing on the order of becoming a doctor or lawyer. The median programmer has jumped over far fewer hurdles than the median doctor or lawyer. (I got my first programming job at 17. I'd have needed another decade of non-trivial training before I'd have been able to get a job as a doctor.) The spectrum is far broader for programmers, and as such, the respect a programmer commands has more to do with their actual status within those ranks than simply being a part of that trade. But again, the spectrum extends up to "richest person in the world", so we're hardly being shafted.
If being respected among the elite is something that you want, align your goals with that. If it's not, enjoy the fact that you're in a trade where even untrained, mediocre practitioners reach the top 10% of American incomes.
Secondly, some of my arguments might be wrong, but I provide numbers and evidence to back them up.
"Likewise, programmers who define their goals economically (which broadly includes creating value for users) have nearly unparalleled earning potential."
Evidence? If you're talking about startups, I already covered that. Read the post.
"and incidentally, American programmers are paid better than in almost any other country."
This is sophistry. American Xs are paid better than non-American Xs because America has a high GDP per capita, pretty much regardless of X.
"First, computer programmers are certainly among the most respected trades."
Citation? And, adjusted for IQ, skill, hours worked, degrees earned, and so on?
"If it's not, enjoy the fact that you're in a trade where even untrained, mediocre practitioners reach the top 10% of American incomes."
Citation? Do you even know what the top 10% is? Here's a hint: The average salary of a computer programmer in the US is $75,000 (cite: http://www.collegeboard.com/csearch/majors_careers/profiles/...). Most of those have college degrees in computer science or other technical fields, they certainly aren't "untrained". And 90th percentile income is higher than that even including people who don't have jobs (cite: http://en.wikipedia.org/wiki/Personal_income_in_the_United_S...).
A Bachelors degree does not compare to medical school + residency (they also have to get a bachelor's before starting those two). While you're making money for 8 years at a comfortable 9-6, they're spending over 100k to train themselves and performing physically and mentally exhausting work.
Also, in the medical profession, those in primary care don't make the huge amounts you posted - many are below 200k, some far below. It's the specialists that you're thinking of.
Actually it's not. Name calling would be if I called you an entitled whiner. There's a difference between attacking your argument and attacking you. (And if we're sticking to the taxonomy, that part of my comment would be DH2, "responding to tone".)
Evidence?
That was the crux of my post. Programmers do get filthy rich (usually via starting tech companies). You're right that at that point they're not programming, but that's because programming in isolation has limited economic value. Using the skills one acquires as a programmer and aiming them at value creation has created a large chunk of America's billionaires. And while that phenomenon is not unique to programming in the least -- in fact, it holds across almost any skilled trade (i.e. soft-skills begin to dominate hard-skills) -- the upper bound is demonstrably higher for programming (as evidenced by the list of richest Americans) than it is for almost any field.
American Xs are paid better than non-American Xs because America has a high GDP per capita
No, I meant relative to GDP per capita. I live in Germany where programmer salaries are about 50% above the GDP per capita, whereas in the US it's about 75%. From what I've gathered, in the UK, it's closer to 25%.
Citation?
It's nigh on impossible to measure "respect" in some sort of meaningful way, but here's a list from a couple seconds of Googling on the "Best Jobs in America":
http://money.cnn.com/magazines/moneymag/bestjobs/2010/full_l...
Your citation for the average programmer salary is from 2005. Salaries have gone up significantly since then. Even just adjusting for inflation (and ignoring the recent IT boom) puts it above the 10% ($82,500) bar. I have no idea what percentage of programmers hold computer science degrees, but it's certainly not "all" and I wouldn't be surprised if it's not "most".One of the things that's somewhat endemic to your case is shifting back and forth between comparing the median with the top tier. Average doctors, bankers and lawyers aren't making the salaries you suggested. Median programmers aren't particularly impressive.
Let's split it out:
Elite programmers do things like start software companies, work at corporate research labs, work in financial engineering or work on high-profile open source projects. Those folks command respect and have high earning potential. (Though interestingly, among the elite of these groups, programmers probably have the lowest percentage of completed formal training.)
Elite investment bankers are measured heavily on their returns and a large portion of their compensation is bonuses. Elite lawyers are measured on their returns (wins) and compensated to a significant extent relative to their non-legal social skills (i.e. their network).
Median programmers write intellectually trivial code that solves uninteresting problems. Training is optional and there are virtually no systematic hurdles to cross to enter the trade. They still make relatively high salaries relative to societal norms.
Median lawyers work on intellectually trivial cases. Formal training and certification is required and compensation is relatively high, but nothing that will generate notable wealth. Median investment bankers (my father would have been in said category) mostly convince a handful of clients they've been given by their organization to invest in a 90% cook...
Any time you take a pejorative term and apply it to the argument, it is always going to sound like you're applying it to there person. In most cases, that's the way it reads as well. It seems a way to engage in personal attack while being able to pretend to have only been characterizing the argument.
If you said "this argument has logical fallacy X because Y is Z" that would be a characterization of the argument of a totally different color. That would be addressing weaknesses in the argument, rather than anthropomorphizing it.
I have no opinion or position on your intentions, and presume that it wasn't your intention to characterize the person making the argument. I'm just trying to show why that form of characterizing the argument comes off as a personal attack.
In all seriousness...I don't altogether get this gripe. I guess because I went to art school and will never, ever have any "power," let alone money. But it was _my_ choice. I'd rather be doing something fun that I'm good at.
Sure, moms don't romanticize their kids becoming a programmer. However by people who understand what value you can bring, you are greatly respected - almost as if you are a magical being capable of things beyond mere mortals.
There is a big problem with this argument. It is true that there is a good number of rich programmers. However, this doesn't mean anything for the broad class of people working in the same occupation. For example, this is similar to saying that being a singer is a good job because there are a lot of rich singers in the world. However, the average singer can't even put food on the table.
Similarly, the fact that there are some rich programmers doesn't mean that the category is doing well. In fact, pointing to these successes is unhelpful, because it can mask the problems found by normal people.
Median programmers write intellectually trivial code that solves uninteresting problems. Training is optional and there are virtually no systematic hurdles to cross to enter the trade. A median programmer has BS in computer science, understands basics of computer hardware architecture, OS administration, networking and database management. Keeps current with the latest industry trends, has familiarity with a number of complex development tools and, in addition to all that, specializes in some area of programming.
What I listed above are the implied prerequisites for almost any mid-level developer position out there.
You could say that we deserve higher salaries but in my opinion the free market works perfectly there. And in fact, the same applies to respect. It's not something you can force, people respect those who earn their respect. It's not adjusted for IQ, skills, worked hours etc.
The actuarial profession is protected here, and fuck does that make it difficult to get a decent actuary who can also program.
True, you can't do that now. But going back to what he says about the industrial era of America, you could do that in an earlier age. The software industry and culture is only in its infancy in America.
"""But how much work the software does is not what makes it remarkable. What makes it remarkable is how well the software works. This software never crashes. It never needs to be re-booted. This software is bug-free. It is perfect, as perfect as human beings have achieved. Consider these stats : the last three versions of the program -- each 420,000 lines long-had just one error each. The last 11 versions of this software had a total of 17 errors. Commercial programs of equivalent complexity would have 5,000 errors.
"""This software is the work of 260 women and men based in an anonymous office building across the street from the Johnson Space Center in Clear Lake, Texas, southeast of Houston. They work for the "on-board shuttle group," a branch of Lockheed Martin Corps space mission systems division, and their prowess is world renowned: the shuttle software group is one of just four outfits in the world to win the coveted Level 5 ranking of the federal governments Software Engineering Institute (SEI) a measure of the sophistication and reliability of the way they do their work. In fact, the SEI based it standards in part from watching the on-board shuttle group do its work."""
Perhaps change the law to make companies legally liable for software quality and losses arising from it. Even require software to meet a certain SEI ranking, depending on the industry. Of course you need a phase in process. Eventually, salaries for software workers would rise.
Anyone who's worked with a CMM level 5 certified organization knows how laughable that suggestion is. On-board Shuttle Group are undoubtedly top-notch. But any random Bangalore bodyshop has CMM level 5 too.
CMM has 5 levels. CMM level 1 is where you operate right now: it denotes the ability to ship something. CMM level 5, the one mentioned in the interview from Kent Beck's book, denotes complete paralysis. To do anything, you have to write or update so many documents, have so many meetings with "relevant stakeholders", and to perform so many pointless measurements of the defects/LOC kind, that it's much more productive to just go postal and at least remove a CMM auditor or two from the face of the Earth in the process.
Levels 2 to 4 indicate various intermediate stages where paralysis is spreading, but you can still ship. For example, level 2 is called "Managed Process". "Managed Process is distinguished by the degree to which the process is Managed". I'm not making this up. There's a book called Capability Maturity Model Integration, and this book, heavy enough to kill a human, is full of this sort of stuff. Reading it is impossible.
http://www.yosefk.com/blog/extreme-programming-explained.htm...
No.
Lawyers, accountants, and teachers can make a lot of money because people are willing to pay a lot of money for the services they provide, because those services are very valuable.
Paying a top-notch lawyer US$500 an hour can save you a huge multiple of that US$500 if you're being sued for US$500M. Paying a good accountant allows you to manage your business transparently enough that you can raise money on a stock market, thus getting 20 times the amount of cash you've made in profits. A four-year university education can lift you from the lower class into the middle class, adding millions to your earnings and a decade to your lifespan.
It turns out that developing software quickly is a very valuable activity. In a single day of work, a good programmer can write a piece of software that functions in production for years afterwards, serving dozens, hundreds, or millions of people. Often, this is even the case if the software is buggy; the alternatives (repetitive manual labor, spreadsheets built by amateurs) are often even less reliable.
If you tried to outlaw the development of unreliable software, programmer salaries would go the same place that salaries for nuclear plant engineers and designers of small planes have gone over the last three decades: overseas or into oblivion.
Worse, it would likely be counterproductive. What we need for more reliable software is not books of management rules but better abstractions, better theorem provers, better programming languages, better insights. Those things are themselves software, but they are probably not software that we can develop faster, or at all, under an SEI CMM Level 5 process.
Although one can get a programming "job" with little experience, or better yet just start programming with little more than a laptop and some free software - being a top-notch developer takes many Years of training.
As the computing industry and inherent complexity continue to grow, and as society relies more heavily upon it, we'll likely find similar barriers to entry. Programming is an infant relative to the practices of medicine, law, and other well established industries.
My ideal world is one in which everyone learns how to program along side math, science, language, and so on - just as we learn about health and civics, not to become doctors or lawyers but to become healthy members of society. If computers are to become an important part of human society, then programming them should be a part of the basic curriculum. The social respect of professional developers will surely grow as software development becomes better understood.
Not that I receive any lack of respect from my non-techie peers. But I certainly wouldn't mind being able to discuss my daily brain-benders with a stranger at the local watering hole-in-the-wall.
The world of programming is vast. Larger than "America", larger than Sillicon Valley, larger than the world of startups, and certainly much larger than the "elite" that regularly reads (and comments on) HN and pats each other in the back.
Even if we accept that programmers are well-paid and respected (two different propositions) in the technology sector, most programming jobs are _not_ in the technology sector, but spread throughout the corporate world. And corporate programmers are all but respected.
In your average company, a programmer is considered a glorified mechanic or janitor, a code-monkey if you will, well below the guys that "bring in the money" like sales and marketing. It is an expense, something that the company has to live with because someone has to implement the ideas that the guys in charge come up with to help the guys that "bring in the money" bring in more money.
Besides manufacturing, programmers are on the first line for outsourcing, and it is no coincidence that an expression such as "software factories" exists. Why do you think this is?
Most programmers will only actually _program_ for a few years before going into management positions. There are few "old" programmers around, and those that survive are often met with disdain. "What? You are 35 and still a programmer?" kind of disdain.
When the average corporate user spends most of his time in front of a computer, forced to use boring applications day-in and day-out, how do you think he feels about the people that build those applications?
And even outside the corporate world... If you are a doctor, or a lawyer, or a freakin' sales guy, people will listen to your stories, at least for a while. On the other hand, if you are a programmer and even start to talk about what you do for a living, people's eyes will glaze in boredom instantly.
Disclaimer: I am _not_ a programmer (I'm a sysadmin, which is mostly the same, although usually better respected because sysadmin positions tend to be longer-running inside companies).
Guys, Google is a top paid company in a top paid part of one of the richest countries in the world! Stop throwing around 6-figure salaries (in US dollars, no less).
I can attest to the fact that in Europe, programmers have respect on the level of assembly line workers. By Europe I mean countries from UK to Belgium to Czech to Romania. It's an ok job, you get paid some money, or even good money if you're skilled and know the right people. But your parents would much prefer you picked a respectable profession, like a doctor or a lawyer.
The reason I see for this is that IT is the wild-wild-west free market at the moment. That's why it's so successful, disruptive, productive and generally awesome. And why it scares parents. But it's also filled with wide-eyed, passionate kids who were so busy fighting each other and comparing e-penises that they didn't even notice when the old hands commoditized them. Remember, revolutions eat their own children.
Still, I am very much against introducing unions and regulations to artificially limit the market. The last paragraph of the original post is spot-on. The only way to gain respect is not to cry for it, but to realize your value and hold your head high. Sadly, programmers as a community seem to have already lost that battle.
In the UK, sure, being a lawyer or doctor is much more prestigious than being a programmer. However, to equate programmers to (presumably unskilled) assembly-line workers is total nonsense.
Really? Is it so absurd?
Some programming tasks certainly require a lot of skill and insight. Not everyone could be a senior developer on a major software project, or start a successful business making their software from scratch.
On the other hand, many programming tasks today are very much like an assembly line: here are some parts, glue them together like this, make a product. A scary number of "programmers" today lack even basic background knowledge of the theory underlying their work, or a proper understanding of their tools, or any particular training and experience (academic, personal projects/self-study, or otherwise) that qualifies them to work on industrial, commercial projects.
Unsurprisingly, those people produce crap. Their software doesn't do what users need, or loses users' data, or crashes users' computers, or in the Internet age has security problems that let malware onto users' systems. Funnily enough, the people paying for that crap don't much appreciate it, and the software industry generally has a poor reputation for being able to produce good quality work as a result of these fools.
Of course, smart programmers have also built things like the Internet and air traffic control that can co-ordinate landing dozens of planes an hour safely, but people take it for granted that these things work without any understanding of how difficult it is to get such critical software right, and most professional programmers will never work on such important projects anyway.
I don't see how we're going to start distinguishing between software developers who know what they're doing and those who don't until we have some sort of competent and authoritative professional standards body. I don't see how we're going to have one of those until our industry is grown up enough to set useful professional standards. We clearly aren't ready for that today, with widespread ignorance in the industrial community, academics whose theories often don't stand up to practical applications, management who can't even estimate a project within a factor of 5 for time and budget, and consultants who peddle the Next Big Thing as if snake oil was going out of fashion. And thus the vicious cycle goes on, and probably will until our industry is a lot more mature.
Until then, many so-called professional programmers are pretty close to unskilled assembly line workers, and it is a strange idea that they should earn 10x the wage of someone working an eight-hour shift under far less pleasant conditions in a factory to produce goods that you and I rely on every day.
Also, maybe law and medicine aren’t that great. Every time I visit my GP these days I’m always struck by how he basically has no idea what is wrong with me. And our legal system seems to be pretty out of date in the light of more recent findings in psychology and changes in society caused by the Internet.
I've gotten much better about charging rates I'm comfortable with, and finding clients that a) can afford it and b) find value in what I do at those rates. It would actually be nicer to do 'value-based' pricing, vs hourly, but it's not something that both parties are usually able to agree on. Unless you know a particular industry well, it may be hard to understand the full value of the work you do. Even then, the company may much prefer to pay hourly or much lower rates, simply because they can probably find someone else to do it.
With medical and legal professions, the licensing/regulation creates a large barrier to entry, and people have to go to those professionals for certain tasks. You can represent yourself in court, for example, but it's often frowned on, but you generally can't prescribe yourself your own medication. With software, no licensing/regulation exists, so there's generally a much broader range of skills and value in the marketplace, which dilutes the value perception many people have.
Agreed on the age thing. As long as there's a youth-obsessed focus in the software world (and I think it's done just as much by us inside than by the outside world) it'll be hard to get the respect we'd like as a profession, simply because most people don't treat it as a career. Would you rather use a 22 year old lawyer, or a 52 year old lawyer? How about a 22 year old developer vs a 52 year old developer? :)
This is the heart of the differences in pay. Expensive certifications keep the supply of doctors and lawyers artificially low and thus their average salaries higher. Meanwhile, anyone with a computer can start programming software.
My one other thought - way too late to the game here - is that many/most developers seem to choose their 'respect' in the form of free sodas, air hockey tables, nerf gun fights, flex time and other similarly frivolous/trivial 'perks'. It's not how I would choose to be respected, but it seems that's what enough developers seem to gravitate towards that it's set the perception of developers in the marketplace.
This is now how software developers are courted - "hey, this place has free sodas! and you can play ping pong!" Nothing wrong with those, but I'd rather take more cash. I a talked to a company about a position, and postponed, then came to them about 9 months later, and was offered $30k less than what we'd talked about before. I inquired about this rather massive discrepancy, and was told "we have free gym memberships, and all the free soda you can drink!". Tell you what... I'll buy my own sodas, drink fewer of them, not need the gym as much, and buy my own gym membership closer to my home with the extra $30k, thank you very much.
I'd also rather be able to come in, have people respect what I say, take my ideas seriously, and not have to deal with a load of internal politics on a daily basis. That tends to be the life of a contractor/consultant, and it suits me better.
"TANSTAAFL" :)
Now, I'm not against free lunches. In a large enough group, I think it's a nice thing to offer - you get a variety of stuff you might not otherwise cook for yourself, communal eating is fun sometimes (not all the time), etc. But... as a stated 'benefit' that you know is being offered in lieu of extra cash... not sure that sways me.
There always exists a context where a given person is on the low end of the totem pole. You can almost always shift the goal-posts by moving around within society to find a place where you're a relative dunce. It seems totally plausible to me that programmers aren't at the top of the food-chain in positions in non-software companies.
But if you go out into the broader world ... the world where my brother works at Walgreens and my sister is a tour guide at the zoo, where my best friend just got fired and is about to move back in with her mom, my grandfather sold tractors and my mom is an elementary school teacher ... in that world being a computer programmer is a respected trade.
I feel like you zoomed out some, but if you zoom out even further, all of the sudden being a programmer is respected again. You're right that we orientate ourselves relative to our peers and that's the lens that we see the world through, but the broader world isn't all white-collar knowledge-workers.
As a somewhat disconnected point, and this probably partially owing to the fact that most of my professional experience is in Europe, being a 30-something programmer here is totally normal. In fact, I'm 31 and most of the programmers I've worked with have been older than me. The median age seems to be more 35-ish, with a lot of people still working in normal programming positions into their 40s and 50s. The distribution here more seems to follow the pattern of there simply being a lot more people that started programming in the 90s or 2000s than in the 70s or 80s rather than a particularly strong age bias against programmers.
I've also not experienced the total lack of interest in programming. Lots of my friends -- most of who are non-technical -- ask questions about it. I suspect part of the problem may simply be that a lot of programmers aren't particularly good communicators.
What saddens me is that it happens inside the industry too. Too many times I have seen and talked to programmers who seem to consider themselves 'glorified janitors'. If you mention anything science/tech/IT-related outside of 09:00-17:00 period, you'll get shunned for being a geek. I say, WTF? I respect people who came to programming 'for the money' rather than because of being interested, however I consider disrespectfully discarding science/tech/IT stories while being too happy to discuss tourism, sports and cooking as a sign of mental limitation and general lack of respect to other people.
</rant>
“I respect people who came to programming 'for the money' rather than because of being interested”
Why?
While I still strive to find a way to give value to human society to the best of my abilities, and don't want to end in a corporate 0900-1700 job and make money for the sake of making money, I understand and respect people who chose differently. I believe, that there are other interesting things I might learn from them. However, I expect the same respect from them, that I give to them. Otherwise, we have nothing to talk about.
Maybe you're right about that, phrasing it as 'suspension of judgement' is more accurate. I used to treat 'programming just for money' as disrespectful; now I assign to it the default value of respect I assign to everything else that I don't give special considerations.
It's worse than that. Even in the tech sector, the situation you describe sometimes happens. I have yet to fully analyze that kind of situation, but i've already come with some criteria that might help identify such environments.
What is sad is that it's merely a reflect of the mainstreams governance models at wide scale (and only worse: democracy is even less frequent in companies than in countries...), which have proven to be poor, and will prove to be catastrophic in a near future.
Of course in the real world things happen on a continuous scale, but if by bad luck the environment you're in exactly fit below exacerbate description, run!
1. A strictly tree like, military like hierarchy, ruling everything in strict tree order regardless of its a tech, hr, or other issue. This is one of the most effective way to waste talent and to take non optimal decisions (and not even near to optimal) -- add not taking into account bottom-up proposals if you want the perfect mix to achieve a high level of ineffectiveness.
2. The hierarchical tree is strict enough so that programmers typically can't even be spontaneously inspired by new ideas, which often is not enough to kill a business, but just to impede it, so sadly the situation might persist.
3. Each programmer is considered as a "just another programmer" in the company, regardless of achievement, knowledge, skill. The paradoxical part is that does not mean that individual requests are not done to the good people when needed, but it looks like not much people would recognize that when they have no question. Improvements in achievement, knowledge, skill are neither fully exploited and often not rewarded at all, directly leading to a high turnover.
4. Small valorisation of tech realization for those who actually do them, regardless at which level (that can go as far as considering programming mainly as a cost center that needs to be beaten into submission to behave, and preventing it from getting helpful resources).
Lesser versions of those situations exist, leading to more effective tech companies that are more programmers friendly. The two often somehow go together. At the end of this better path, you have some companies like MS, Google. (not exempt from pb, but they arguably are not that bad)
http://www.bonkersworld.net/2011/06/27/organizational-charts...
The thing is that those apps don't have to be boring. Most apps are low-quality, in code and design, as a result of a management philosophy that considers developers as low-value. Apple is a good counter-example. They put a high value in quality of code and design, and as a result even their settings dialogs are a pleasure to use. I've never come across a category of software that couldn't be made pleasant to use with some inspired design and coding.
Not so. The supply of MDs, CPAs, and lawyers is kept artificially low by accreditation bodies.
Indeed, it's like saying that there is a shortage of super yachts for people.
It sucks, but there is a major education gap amongst non-techs about what computer people do.
To get this she is required to work any weekend clients need her to (even if it means cancelling a planned holiday), any evening they need her to (pretty much all of them) and she has to read boring stuff constantly.
I on the other hand finish work after my 40 hours and go home. If I want to get some extra work I'll ask a couple of contacts if anything is going and go to the cafe with a couple of beers and have some coding fun.
I don't accept that we earn a lot less than other professionals. My pay/hours is certainly comparable to any other professional in the area I work, and I love doing what I do. If I ever earn $500,000 I'm pretty sure the hours I put in will be astronomical, and if that happens I'll probably die before I get to spend the money anyway.
per hour or per year?
I'd say software consulting is the sweet spot, your effectively hourly rates catch up to finance rates in a few years of productive operation in a hot field. The few months I worked like a finance guy made me realize I do not like money as much as I thought I did.
Yes, but doctors have the most important skills I can think of. Don't think so? I'll come ask again when one of your family members gets cancer.
Coding and hacking have yet to grow to anywhere near their potential awesomeness.
yes.
"Just pay proportionally to their skills!"
If I'm amazing at flipping burgers do I need to get amazing pay?
Of course, if anyone in the world can flip burgers as him, you should pay him really high....it is the market rule.
if developers are requested as "seem to be", so they should be paid accordingly, same thing as doctor, and similar professions.
No matter (for the paycheck) if they save lives or make sites. :)
Stay interested and keep working hard.
We're people who build things.
Our fortune is a natural one -- not money and not even respect.
It's that we are getting paid to learn new things every single day.
True. But if I'm building something for someone else I'd damned well better be getting paid for it.