Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Do you really want to be making this much money when you're 50? (yosefk.com)
355 points by tomstuart on Oct 6, 2012 | hide | past | favorite | 278 comments


The author is a bit naive in his cheerleading, extrapolating his situation in his location to a nation-wide situation. That is just simply not the case.

As a business-owner in my mid-40's, I travel around quite a bit. There are locations where the employment picture is similar to what the author describes. But what he describes is far from the norm in the places I travel to, or from what I hear from friends and old coworkers during lunches. Ageism, low-salaries, "sweatshop"-like/highly-political work environments, lack of diversity in companies/economic sectors, lack of interesting problems to solve. All are observations of mine, as well as old friends' concerns voiced softly after looking over their shoulder during lunches over the past year or two.

Very good IT people (programmers/developers, DBAs, infrastructure, the whole gamut) wanting to leave their current job, but wondering where to go, because their friends in other "just as bad" companies are looking too. Discovering they can still get interviews--but maybe not the job--after age 35; and discovering the difficulty in even getting interviews after age 40. Watching their companies hire either H-1Bs for 40-50% of what they're paid, or college interns (or even recent grads for intern salaries) for even less.

Yeah, people would like to be making this much money in technology when their 50. But in most places, it's a pipe-dream.


The ageism I saw is why I decided I didn't want to be in software development for the long term and left the field.

I personally think the mentality is stupid and probably quite inefficient. In my field, law, they don't even let you into the courtroom until you're 5+ years in. Practicing law is an art and people with 20 years of experience are just better at it than people starting out. I never understood why so many people think software development is any different. Companies don't lay off their lawyers and hire fresh graduates when some new major new law goes into effect, so why do people lay off their software developers and hire fresh graduates when some major new technology becomes popular?


I wouldn't argue for ageism, but I would say programming is different from law because technology changes much faster than law. There aren't giant paradigm shifts in law every 10 years.

A new technology may in fact be much more productive to work with than an old one. Does someone with COBOL experience have an advantage or a disadvantage in learning Python vs someone who is just starting? Which is larger, the amount of useful knowledge they bring along, or the amount they have to discard?

There are sage old programmers that I look up to. But there are also a lot who just burned out and quit, tired of the new technology treadmill. I'm not sure which I'll become.


The volume of small, incremental, changes in law is higher. Let me put it this way. The Dodd-Frank regulations that have come out so far in the last two years is probably the same number of pages, printed 50 lines per page, as the C++ source for Oracle's Hotspot JVM. And it's only 30% done. And there is no ChangeLog.

The pace of paradigm shifts is indeed much faster in technology, but I disagree there are major paradigm shifts in technology every 10 years. There are major developments within specific scientific domains like AI, image recognition, etc, but in software engineering itself there is little new under the sun. There is nothing in Javascript that wasn't done better in Smalltalk 30 years ago. CoffeeScript, C#, Lua, Ruby, etc? Derivative stuff that any Lisp-er plucked out of 1985 could pick up in a week or two.


I feel like a lot of what you're talking about is applicable to languages and technologies in general. Advantageous technological knowledge seems to be more about frameworks and domain-specific experience more than anything else; something that a Lisp-er from the 1980's will have quite a steep learning curve ahead for.

Not disagreeing with your point. Just pointing out something that has been bothering me a bit about the fragmented platform market.


Your field has a guild and you enjoy the benefits of a professional culture that is centuries in the making. Fully agree with your points regarding the comparative rates of change, and, the sad fact (isn't it?) that the lack of deep exposure to the existing body of work in field due to a lack of effective apprenticeship of the non-existant-guild gives rise to the "major paradigm shift" every 10 years.


Law has much faster changes than programming. In programming you can use 2 year old ideas and be fine, in law no so much. A single case before the supreme court can completely change what's legal. And just about every bill changes something significant for someone.

Ditto doctors, you are required to stay up to date, where programmers can come back after 10 years and learn on the job doctors need to pass a "Maintenance of Certification Exam" or break the law.

PS: Programmers do need to keep learning, but it's no where near as time consuming.


Law I think is a field with unique responsibilities for their members to stay current and keep learning, things do change fast and you have to keep up to stay effective.

Paradigm shifts every 10 years? Not really. COBOL to Python ain't no paradigm shift.


We also have the issue of "digital natives."

In programming, there is a difference in someone who learned computers in college, someone who learned computers in high school, and someone who learned computers in grade school. Then the next wave was kids who grew up with the internet. I suspect it will continue with kids who grew up with touch devices. I don't think there is a similar parallel in other industries.


I'm 37 years of age I've been programming since the age of 7 (1982), and programming for the Internet since 17 (1992); that's 30 years of software development and 20 years of Internet/network programming; mostly web and mostly for government or in commercial environments and in more languages and frameworks that I care to remember.

Today I consider my judgement, that is to say, my ability to forsee the path of a project, or anticipate and avoid complexity to be better than it ever has been in the past, and think this is one of my strongest and most marketable skills.

Yes I still learn new things (faster than ever), and yes I am still very productive.

Am I a "digital native"?


I don't really buy who "kids who grew up with touch devices" might make better programmers than the generation of people who built Windows, NeXTStep, etc, who are in their 50's and 60's right now. Hell, Knuth is 74.

The fundamentals of programming, as an engineering field, haven't really changed since the 1980's.


Cannot emphasis that enough. I would even argue the opposite: people who are now older than 30 did have the possibility to hack much nearer to the hardware of the devices, and could understand how they work. Now, because the tech is both so well packaged and more complex than before, no one tinker with devices really anymore. Sure, there is stuff like Arduino, but this is really reserved to a couple hackers. You don't have a Arduino hacker in every classroom. So maybe the digital natives are more comfortable with SMS and social media, but that doesn't mean they do better software or hardware developers.


"Kids who grew up with touch devices" may not necessarily make better programmers, but there's such factor as being comfortable with tools, I guess.

It's like the language. You spend a lot of time observing and using the system (writing, speaking)—even without full understanding—and you get comfortable: you easily distinguish between characters, recognize speech, can quickly and legibly write. It takes much less effort to apply this knowledge to do successfully things that may require it.

Likewise, if you spend a lot of time around computers, it takes much less effort then to use them for many things, including programming, since computers (or, maybe in future, touch devices) are tools we use for programming.


Would you argue knuth is a good modern software developer? Have you ever used latex? It's an outdated unmaintainable piece of crap.. Did he develop anything we would call good software in the past ten years?


Knuth is not a developer, he is a computer scientist. The standard CS career path is not yet well trodden, maybe we are all supposed to turn into managers and high-level researchers as we get older?


Knuth didn't develop LaTeX.


You have to understand that practicing law is not influenced by VC money as much as it is software development. Since VCs (and all these new incubators) have clear preference toward younger entrepreneurs, it is logical to expect that these kind of preference will be replicated in other segments of the market.

I think that VCs and incubators have very good reason to invest in mainly younger entrepreneurs, and they probably suggest to hire "the best, regardless of age" but ....


It's all about the money. New graduates are cheaper. It's that simple. Technology and business are both over-populated with Randian/Libertarian douchebags for whom the quarterly bottom line is more important than good engineering or business as a sustainable entity in the larger social setting. Everything else is handwaving to hide this fact.


Besides advocating murder in some other comment, a quick scan of your post history reveals you mostly leave incendiary political remarks and don't really add anything useful, in my opinion, to a hacker discussion. In other words, fatbird is a troll account.

__Could someone with administrative access take a look and ban fatbird's account?__

Regarding this post specifically: I'm not sure what kind of sensible forum lets you tar an entire class of people with the label "douchebag."


The kind created by an author so devoted to not being mistaken that he's been legitimately worried about being taken in by arbitrary moral fashions and putting entire ideas off limits.

http://www.paulgraham.com/say.html

tl,dr: You have to consider heresy seriously if you want to think clearly. Restrictions on expressing heretical ideas are harmful, though it's unsafe to disregard them where they exist.


Says the guy with a username of 'tmp458' who has exactly one comment, above. How many accounts did you create to flag my comment?

I'm not a troll account. I haven't been terribly active. I do tend to read more than write. "Take a look and ban"? Why bother taking a look if banning is called for?


Calling people names is against the guidelines and the spirit of HN regardless of past comment history.


Oh come on! I am in mid-forties and not just did not have any problems getting interviews, but also did not have any problems switching jobs a few months ago. Where I work we can't find enough decent devs for any money. H1-B is just a memory at that point. Mind you, this is not Silicon Valley, the market is quite a bit smaller (north Denver metro).

Someone is either feeding you bad information or you are extrapolating and imagining things.

Where I work, we have a very good team of developers and being mid 40-ies I am right in the middle of the pack.

BTW, having been on H1-B 10 years ago, I can tell you that "40-50%" is not true either.

So, what the heck are you talking about?


Apparently you didn't read my comment all that well. Re-read, and catch the "there are locations" where the article would be correct.

You are falling into the same trap as the author of the original article. Just because Denver metro (or the Valley, DC, Minneapolis or a couple of other tech/government centers) are doing well, you're extrapolating that the rest of the nation is the same. I know there are places where the beer flows like wine. I'm here to tell you in many--if not most--places where I roam (primarily in the midwest), that is not the case.

Ageism is a serious concern, along with companies doing what they can to lower "human capital" costs while still extracting as much work as possible. Infrastructure is somewhat immune to this, as well as smaller towns (25-50K and smaller, some distance away from larger metros) where they can't retain or recruit younger workers as easily.

As for being fed bad information, you haven't seen the look on friends' faces who've remained in tech when they talk about their concerns and experiences. 10-20% paycuts 3-4 years ago which have not bounced back. Two different companies recently resetting position titles from "Senior Position" to "Position II" for those with 15-20 years experience. Watching any open positions be filled with H-1Bs, college interns or recent grads at intern salaries. Hearing about apparent tech Nirvanas in other metros, and being unable to leave because they'd uproot their family.

The look on their faces may not be fear for their future, but it is a deep concern/worry.


Of course "there are locations," there are always locations. It's hard to be an oil derrick worker in the middle of Manhattan, and that's not because the cost of living there is so high.


That's been my point all along. There are always going to be locations where the beer flows like wine. But that isn't everywhere.

New York state or New Jersey versus North Dakota right now might be a better analogy than Manhattan for a wildcatter. Sure, there are probably wells in NY and NJ, but the big money is in ND.


So the advice is: Move!


why is everyone else's evidence anecdotal?


Just remember, scientific surveys are themselves types of "blessed" anecdotal evidence.

But you're correct. Since getting on this thread, I've been thinking of developing an empirical model to back up my statements. I have a gut understanding from my observations and discussions of what some of the factors would be. Could be interesting. I'll have to see if I've time to do so.


> we can't find enough decent devs for any money

I don't believe that for a second. For $500K/year you will have top 3% developers moving to your office tomorrow (unless you're in Iraq or some other messed up place).

What that means is that your budgets suck.


I think ageism is "the" problem that you point out, because this is why people can't even get an interview after age 40, right?

There are employers biased against older candidates, I guess - though not near me, not to the point where I'm able to get all the good candidates aged 40 and up for peanuts, and it's not like I'm not searching, goodness knows.

But I think this is going to get better over time, as the masses of young programmers who entered the profession during and after the .com bubble age. In particular, you'll have more people in higher age brackets recommending each other.


I'm the only employee of my business, but I do contract 1099s when needed. When I do, I try to get older professionals, simply because I get a more efficient bang for my buck. Far too many younger techs within a few years of entering the workforce, are too prone to the "not-invented-here" syndrome and re-invent too many wheels. Like we all were, right?

Maybe I shouldn't have been an absolutist about not being able to get an interview after 40, but the difficulty of getting one is an order of magnitude or two higher. 45-50? Even more difficult in many locations.

But my original comment's point still stands: things are not a bed of roses everywhere. Ageism exists in the field, and is probably more the norm than not. Will things get better in time? Maybe.


ADEA protects older workers, not younger ones.

>The ADEA permits employers to favor older workers based on age even when doing so adversely affects a younger worker who is 40 or older.

http://www.eeoc.gov/facts/age.html


This is depressing but a realistic depiction of "how the other half programs".

What are your thoughts on what puts people into that programming underclass (which definitely exists)?


"thoughts on what puts people into that programming underclass"

An example is the developer that just quoted me on setting up a server. He is charging me essentially his cost for the equipment and 3 hours at $50 per hour to set it up. I've seen this time and time again. Not able to price to what the market will bear. (He's in the midwest by the way and has a stunning resume and full time job working for a known company).


I don't know exactly what you mean by underclass (though I think I've seen a similar comment of yours), but one answer is what plinkplonk said in this thread: immigration restrictions, combined with the concentration of "elite" software companies in the US.


Money is about being good at something. I know of lawyers that barely scrape by on insurance law suits because all they know how to do is prey on the fear and pain of injured people. Such lawyers have to buy $500 suits and drive BMWs and belong to country clubs to stay presentable, and thus have to scrape by on 80-100k a year.

Similarly, I know carpenters and plumbers who will get the job done - and make a lot more than the aforementioned lawyers. These pros can demand hourly rates of anywhere from $60-$80, but more often will make $250-$500/hr by quoting a job price and doing it quickly. And it's no problem for them to drive to all their appointments in their 1997 Ford E series wearing flannel and jeans.

I could also introduce you to janitors that make six figures a year because they know how to penetrate insurance bureaucracies and get black mold cleanup jobs.

If money is your aim, pick a job out of a hat and be excellent at it - and not just the actual execution, but the promotion, estimation, and pricing of your talent too. If you can get into the 25th percentile of solving problems in your expertise, you'll be well compensated for it no matter what it is.


Hogwash. For every skilled craftsman you can find, I can find ten other idiots making ten times as much money thanks to being born in the right family. Skilled developers recognize that rockstar developers can be ten times as productive as average ones. I haven't ever heard of any developers making ten times the average salary or even double the average.

Stock brokers are regularly getting beaten by monkeys when it comes to betting on the stock market, yet they are among the top earners in society. It's just insane to suggest that salaries are fair or that skill is in any way correlated to income.

Unless you believe that making lots of money proves that you are good at what you are doing, which makes the whole argument a tautology.

Edit: Also, the best work I've done is all open source. It isn't all very good stuff (far from it!), but it certainly is both more valuable and better than the corporate code I write for a living. Then there is http://www.ohloh.net/ that tries to estimate the labour costs of various open source projects. People have plowed thousands of hours of unpaid work into some of the highest regarded software projects on earth just for fun. They will never get properly compensated for their work. "From each according to his ability, to each according to his work." is the famous slogan of Socialism, but it certainly isn't how the world currently operates.


To be fair, compensation in banking is very related to performance. Investment bankers get paid on the size of their deals, traders get paid based on how much they make, money managers get paid based on how much they bring in. The majority of people get pushed out within a few years if they aren't top performers.

The key thing to realize is that value to the customer isn't part of the performance equation. It doesn't matter if a hedge fund manager is beating the market. His performance involves how many people he brings in the door willing to pay the fund's management fees. That's the metric he's judged on.

Which brings me to your point--it's not that pay isn't correlated with skill. It's that the skill it's universally correlated with is salesmanship.


His performance involves how many people he brings in the door willing to pay the fund's management fees. That's the metric he's judged on.

Indeed, and if these people are his high school friends, then the task of bringing them in the door "just got a whole lot easier"...

So going back to a parent's point, it seems being born into wealth just happens to give certain valuable, uh, "skills"...


There's a quote I can't quite place right now (maybe from a TED talk?), but a metrics-oriented guy went to one of these top salesman companies and calculated the inter-year correlation of performance bonuses. Most of the salesmen figured it would be low - it turned out to be almost exactly 0.


    compensation in banking is very related to performance
The last four or five are conclusive proof that this is not even remotely true.


Those bankers that helped caused the collapse were making money hand over first for their companies, and even with the reduced profitability during the recession the banks came out way ahead.


Bjourne -

Notice the OP mentioned "promotion, estimation, and pricing" as part of being great.

Thomas Fuchs quotes clients at $800/hr ( http://script.aculo.us/thomas/ ). Thunderbolts labs is quoting $277/hr for their consulting rates ( http://thunderboltlabs.com/ ). And these are people that publicly advertise their rates. I know several other individuals at these levels that just don't publicly advertise.

Skills in this context includes (self)promotion; it's not enough to just code. No one (usually) comes knocking on your door after a great commit. But if you put yourself out there, stand by your work, talk to lots of people and show that you're a problem solver, by all means, you can triple even quadruple your income as a developer.

Honestly, it sounds like you're a good developer, so you're probably already half way there. Put up a site that outlines your major open source commits, your ability to cut through the BS and distill the problem to it's necessities. Tell the client that you ship on time.

Your world will open up with (financial) possibilities my friend.


It's pretty clear that top preformers don't look at averages. They look at what others have done and from there figure out how to get there in a reasonable time.

A developer who makes 10x a regular developer happens often, but what they are doing is taking on a lot of the risk that companies take on and knock your salary for. Your project is 2x over budget and 4x behind schedule? Oh, that's just Software projects in corporate IT. This has nothing to do with the developer actually being better of course, but the developer willing to assume the risk that results in 10x payouts.

Instead of complaining about Stock Brokers, it might be more effective to look at what they do (transactional work) and try to figure out how to place your self in a position so that you can take advantage of transactional work.

And a minor correction, it should read: From each according to his ability, to each according to his need."


The only way you can claim that a developer can make 10x the regular salary, is to have that developer do something other more profitable than development and claim that that makes him or her more excellent. It's a circular argument: "you are doing something that makes lots of money, therefore what you are doing is more excellent than someone making less money." No, making money is about being good at making money. Not to perform outstanding work.

The quote is right, "From each according to his ability, to each according to his need" is for Communism, which has a different slogan than Socialism.


"I haven't ever heard of any developers making ten times the average salary or even double the average."

Programmers who are making that kind of money know enough to keep it quiet.


Here's your model programmer who makes a lot more, although you'll probably call it an unfair comparison:

https://en.wikipedia.org/wiki/Markus_Persson


I have never met a programmer making 10x the average salary ($500k - $1mm depending) excluding liquidity events.


That says more about who you know than the real distribution of programmer salaries. It's not common, but those kinds of compensation scales definitely exist?



He's not trying to make a point about the justification of society's wages in general, he's describing what an individual can do, which may or may be representative of general trends. Do you deny that it's possible for an individual to reach a point where they're well-compensated for being a skilled craftsman?


You've never heard of a developer who made a mil in a liquidity event? This is Hacker News dude.


To be fair s/he did include marketing of your services among the set of things that were requisite that you be good at to pull it off.


Never did I suggest the world was fair or that trust fund babies don't have a better chance at a high income than someone born into a iron-workers family.

I was suggesting that there's good money to be made in every discipline - you may need some creativity and personality to get to that money, but no one should ever look at the field they're in and say "Oh, ho hum, I'll never be rich because of my field."

And your socialist quote was misquoted: http://en.wikipedia.org/wiki/From_each_according_to_his_abil...

Finally, if your open source code is good in that it is solving problems for people, then you should have a very fertile network of possible consulting clients. Those who use their open source work to feed their consultancies can make very very good money.


As a biologist, I'm going to have to object. No matter what level of talent and competence you have, there are very few opportunities in this field to make a nice living. You're pretty much relegated to becoming a tenured professor (good luck) or working your way up in an established biotech firm doing work many would consider mind-numbing. At best, you're looking at the low-end of six figures for someone with decades of experience and an amazing track record, and there are very few of those positions. You can go the entrepreneurial biotech route, this is HN after all, but considering the small number of successful firms we can safely leave that option out for the purposes of salary estimation.

I think this is a factor of latency in added value. It seems to me that higher salaries are often given to those who can provide immediate usable value in the short term (lawyers, stock traders, some programmers). Long-term value-add professions, such as biology and many other R&D fields, tend to get the short end of the stick salary wise. Perhaps this is tied into the immediate gratification complex of western culture; professions with a significant value-add prospect >~5 years in the future have a difficult time arguing their own worth.


The point of tenure is that it's well tenure. There is actual value attached to a sinecure. What would it cost right now to buy an investment that would pay you a six figure salary for the rest of your life, no strings attached? That's what tenure is worth. Now tell me profs aren't well rewarded.


By no means was I trying to say that professors aren't well rewarded, if that's how I came across, I didn't communicate very effectively.

My point was mainly that there aren't very many of those high paying positions relative to the number of graduates in the field. The ratio of graduates : professors is not too different than the ratio of CS grads : CS professors, but unlike CS, biology doesn't have nearly as many high paying positions outside of the professorial field. Even within education, many very good life scientists have a hard time obtaining tenure.

Most jobs outside of education pay somewhere around 60k, and there isn't a whole lot of room for growth unless you move up into management at a biotech firm. This is in contrast to CS, where a non-manager software engineer has a pretty decent opportunity to make 6 figures if he works hard enough and has a decent level of talent.


It's a bit of a reach to say that a tenure position amounts to a sinecure.


Do you seriously claim that janitors in the 25th percentile make about the same as programmers in said percentile, on average - that the average is the same for all occupations? I rather doubt it.

I mean, it makes sense that return on all sorts of investment should be about the same once the respective markets stabilize, but some things aren't investment, they're luck. Being good at something that is in demand is more like sitting on a gold mine than buying stock.


Money is about the market rate. If your good at something, but there lots of people similar to you then you're gonna have a bad time.


>"The fact is that your material well-being is rarely in jeopardy because of a missed deadline, so your reaction is fully up to you."

Much of what the author says is true, currently. This is a fantastic market for programmers, and anyone being born into this era is lucky.

But the forces of supply and demand will sort this market out in the future, to which the author seems ignorant. Name another profession that requires "Little or no education", and "no physical effort" (not to mention the ease of globalizing coding) that has sustained the kind of market pressure where agents are required to fend off recruiters, or kids right out of school can demand six figure salaries and four weeks of holidays right off the bat.

America (and the world) will churn out programmers until being a programmer is a marginal decision, equal among many occupations. It will lose its luster; it has already happened to lawyers. So planning on having a blase attitude towards deadlines and stress-free work in this field at 50 (assuming you're ~30 now) is a tad naive. I believe this will be an extremely competitive field in 20 years.


Yes and no.

Look at what happened to "making websites". It used to be a super lucrative field, now agencies who can afford to slash prices because they hire cheap developers can churn those out by the hundreds a month. It's become a very silly market to compete in because all the competition that still happens is based on price.

But while this was happening, the web evolved and opened up new jobs and opportunities. Now you can make a lot of money by making web apps, interactive things and so on and so on. That's still not a market where everyone can compete.

Even moreso, mobile has opened up.

So I think that programming has a very lucrative future for a while yet, because new fields where it is applicable open up faster than old ones become commoditized.


Why isn't the field extremely competitive now? The demand has been strong for a decade and a half; it seems like a lot of time.

(I'm not sure I have an explanation myself, really; perhaps it's something innate in people and perhaps it's something about education, but the fact remains that the world still hasn't churned out enough programmers even though the incentives have been there for a long time. One possible explanation is that much of the software implements bureaucratic processes and there's always more demand for this sort of processes - so demand will outstrip supply no matter what happens at the supply side.)


"Why isn't the field extremely competitive now? "

Visas.

Most programming work (of the type talked about in the OP) originates in the USA, and most companies, even startups, need employees to come in the door everyday. (not taking on the question of whether this is ideal or not, that is the just the way it is, right now) .

Imagine (as a thought experiment) a scenario where a smart kid who lives in India or Ukraine or Africa is just able to get on a plane and land in SF for an interview or a job irrespective of whether he has the right degree, paperwork etc and without jumping through hoops at the consulate and rolling the dice.

The (edit: thanks @daladd for correction) supply would go way up and hence average salary would go down (which is why large companies are trying for more H1 Bs - they like easier availability of devs and lower salaries)

Or imagine the border with Mexico being completely officially open. See what happens to the dishwasher/fruit picker payment structure.


That perspective is from someone who lives in the USA. If you live in China, programmers are as hot a commodity as they are in the USA, but it's hard to find good programmers. I know of several companies in China trying to hire developers in the USA because it's easier to source high quality talent than locally in Shanghai. Every time there is a tech meetup talk in shanghai, around 300 people show up, but only 20 of them know what they're talking about. Maybe computing isn't a field that chinese people study hard to become good at.

The companies in the USA are competing with companies in China for essentially the same talent pool. It's a good time to be in software.


I just have to ask, where do I contact these companies in China looking for US programmers, and is Mandarin a requirement? This sounds a bit like the offers to make a good living teaching English overseas, where the reality is a bit different.


Surprisingly, they source them here by visiting the States and finding people the same way Zynga & Google would. I was recently recruited for a project for a startup in Shanghai recently -- the most complicated part is the compensation part as most USA based services don't accept payments from China, including Google Wallet.

And no, mandarin isn't a requirement. I'm not really teaching english like those stories from japanese blogs -- I'll be coding in coffeescript for my wages.


All this would do is a short-term depression of SF programmer wages coupled to short-term surge in worldwide programmer wages. Because guess what, smart guy in Ukraine was already employed there and when he moves the next guy coming to fill the gap will either cost more or be less smart.

Programmer talent is sparse worldwide, not just in the Valley.


Programmer talent is sparse worldwide

And yet, when I look around at the job postings in Canada, a job with requirements that go on endlessly tops out at about $80,000/year. Expect less if you are an average programmer. Such a low income, relative to what US-based companies are offering, doesn't really speak to a shortage in my mind.

I admit, there could be some kind of survivorship bias here: I'm only seeing the lower-paying jobs because the good jobs are less likely to be hanging around on the job boards. But then if an $80,000/yr. job is failing to attract talent, should it even be considered a real position with respect to shortage counting? I could hire dozens of programmers if they would only do it for $10/hr., but I don't think it is fair to count those as unfilled positions or a shortage surrounding that. Nobody with talent is ever going to do it for that kind of pay.


> a job with requirements that go on endlessly tops out at about $80,000/year

An endless list of job requirements is a sign the company doesn't know what it wants, so it's hardly surprising they don't know how much to pay their programmers, either.


Endless list was an exaggeration, but the requirements were very specific: A CS degree requirement, experience with specific technologies, etc. The kind of stuff you might add when people are fighting for the job in order to scare some away. You can't afford to scare anyone away if a shortage is real.

Though your point may still hold true, however I've seen it often enough that I find it surprising that so many companies (many of whom specialize in tech) are that out of touch.


They do not top out at 80k, but for positions that are truly senior companies don't even post those on job boards. You need to network and get noticed if you want to be earning 130 or 150 here.


But a shortage would see throwing those $150K+ jobs to just about anyone who can turn on a computer. The fact that you have to have existing networks and secret handshakes to even find such jobs is not what a shortage looks like, it is just a normally functioning market.


I'm guessing the payment scales depend on the cost of living in your area. They pay more in Silicon Valley compared to Toronto because a 1500 sqft single family home in SV is around $1M.


You'd be surprised at the house prices in Toronto or Vancouver (2 of the top tech cities in Canada). Yes, we're undergoing a housing bubble here, but $1M is the average price of a detached home in Vancouver...and that's for a 50+ year old hunk of junk (or 'crack shack' as we call it here).

One of the reasons that the housing bubble is starting to pop in Canada is that the incomes can no longer support the housing prices. We tend to have lower incomes than the US, but our houses are more expensive, cost of living is here, higher taxes, goods are more expensive, etc etc.

I wonder if SV incomes are higher simply because people expect them to be higher, or maybe there are more fundamentals to it.


And then there are Stockholm where I paid about $300k for roughly 365 square feet a month ago or so...


What is the average job offering in Canada? How does it compare? What occupations pay significantly more? Do they pay that immediately after joining or the good compensation does not kick in until quite a few years has passed? How large are those professions by the headcount?

I think we can find the source of this distortion if it exists. All I can say right now is that areas where you have access to money not backed by productivity tend to trump programming or any other jobs where the employer has to make ends meet. Those areas are usually law, sometimes medicine (often not), and some public sector / government contractors.


in Toronto area you can get senior dev position fairly easy in range 95k - 110k and I can tell you from personal experience it is very hard to find decent developer (just decent would make us happy) , usually is 1 of 20 interviews if we are lucky


> The demand (and hence average salary) in SF for programmers would go way down

I think you mean the supply would go way up, and thus the market-clearing salary for new hires would go way down.

Also (all other things being equal) the number of programmers employed would go up as the equilibrium shifts to a lower-wage, higher-number-employed point on the demand curve.


yes you are right. Thanks for the correction. fixed in the original.


"Visas."

I live on a small island in a small city and I wont be short of work for the next 20 years.

Developers/programmers are hard to find. Finding good ones that pass the interview process are even harder.


  > The demand (and hence average salary) in SF for
  > programmers would go way down
Wouldn't this be detrimental to the SF area, considering as the high cost of living? I realize that cost of living will probably lower to meet what people can afford, but not without growing (or shrinking) pains, I imagine.


Detrimental for whom?

The changes to the cost of living are primarily a function of the now thousands of google and apple commuters. Not that that is stopping them from complaining when they wonder why moving up to a 2BR costs $4k/month now.


The growing pains associated with pay not meeting (or barely meeting) the cost of living.


The effects on the cost of living would be harder to predict, I believe. Because even if you have less wealthy individuals, if they are more of them, they will still drive prices up.

Perhps, for say land or houses, people will still pay the same price or more per square meter. But they will get by with less area.


There's definitely more you could do with education. A lot of professional programmers are people who started doing programming as a hobby as kids. Attempting to teach programming to 20-year-olds entering an university seems to not work terribly well, while the basics can be picked by a 10-year old.

If you waited until people are 20 to start teaching them to read and write, you would probably also get poor results, while the weird kids who learned to read for fun when they were 12 would end up outperforming the regular students when they grew up.


On the other side of the coin, people who picked up programming as a hobby while they were 10 might have picked up some rather nasty habits that need to be unlearned, where as someone who is learning in school at age 20 won't have those problems.


Depends on the schooling, too.


This is a very interesting idea. It certainly seems plausible, I wonder if anyone has studied it.


Programmer is like the modern villager. Villagers grew food and made stuff and that's what you ever needed. The programmer writes code and everything in our civilization is already code or it will be.

Therefore, programmer is a much broader occupation than almost any other. It's still a seller's marker because of that. Look at everything around you, and while there is at least one item that doesn't execute code inside, we haven't hit peak coder yet.


>Programmer is like the modern villager. Villagers grew food and made stuff and that's what you ever needed. The programmer writes code and everything in our civilization is already code or it will be.

That's an extremely short-sighted way to look at it.

In fact, take out the non-programmers, and all programming will collapse -- literally come to a halt.

You know, guys like those that grow and transport out food, clean up the streets and the garbage, cook our meals, mine our coal, produce our energy, drill our petrol, build our houses, etc etc.

People seem to think that because he have the "information superhighway" (sic) we're, say, above actual highways. Where the fact is that without truckers and highways and oil and the like, the "information superhighway" will collapse in a few days.

In fact, you can take programming out of the picture, and the whole world will keep on turning, at least as well as it did in the sixties or fifties.

The reverse, not so much. Programming is indeed a pervasive but insignificant in the grand scheme of things addition to the workings of our society.


There would be computerized food transport, real world garbage collectors, pizza machines, miner droids and 3D plotters handling bricks for building.

There is no reason you can't replace most of those human tasks with machines. And while we gradually do that, we'll need more and more programmers. Or maybe we will fail horribly, but not because it could not be done; and somebody will do this a few centuries later.


>There would be computerized food transport, real world garbage collectors, pizza machines, miner droids and 3D plotters handling bricks for building.

This is sci-fi as for now, and for the foreseeable future. It's like someone in 1800 saying that the mailman is not needed anymore, because we could use electronic mail. Possible, but far off in the future. See the factories that make iPhones for example: some prefer manual to robotic labor, because it is cheaper.

>There is no reason you can't replace most of those human tasks with machines.

There are several reasons. One of them is that such technology and in such scale has not been invented yet (or has not been "engineered for widespread actual use"). Another is the power needed for all this, especially in a global scale.

And there are lots of social reasons too: what will you do with the BILLIONS of people whose work is not needed anymore? Unless you come up with some equal pay for all scheme, there will be blood.

As for programmers, by the same logic you dismissed manual labour in favor of robotic labour, we could have program writing programs, or trivial "connect the dots" programming solutions for non programmers, that would make the demand for programmers even less, not more.


We live in sci-fi. The only things withholding this sci-fi from happening: lack of competent workforce (programmers and roboengineers) and lack of vision. It's going to arrive.

Currently I'm a programmer not a politician, therefore social reasons are not my problem. My problem is converting as many tasks in the world to code. And that will keep me busy and pay me a salary.

We could have a program writing programs, but I won't bet on that. Somebody will still have to give it orders; and the guy giving orders to a program is a programmer by definition.

You will have a lot of programmers overseeing computers and robots do various tasks, and that would be the largest and busiest part of the workplace.


>We live in sci-fi.

So were are our servant robots and flying cars?

>The only things withholding this sci-fi from happening: lack of competent workforce (programmers and roboengineers) and lack of vision.

That's too generic an accusation. One could say that about any problem.

>We could have a program writing programs, but I won't bet on that. Somebody will still have to give it orders; and the guy giving orders to a program is a programmer by definition. You will have a lot of programmers overseeing computers and robots do various tasks, and that would be the largest and busiest part of the workplace.

So, your vision of sci-fi future is conveniently constrained such that programmers are always needed and in large quantities.

Why seeing everything we currently do becoming automated as an easy task, and not also the overseeing of "computers and robots doing various tasks"? If you trust them to do the work, you can also trust them to do it correctly, and built the required self-correction routines.


No. We don't have means of teleporting matter; this is a problem; and we can't blame it on lack of vision yet. We don't know how to do it, don't know if it's physiclly possible.

Sure you can automate more and more things, in this case programmer will be the last [productive] job remaining. One that slowly wane when more and more things are fully automatic and all other jobs already gone.


We already have cars that drive themselves and are getting sci-fi glasses with really primitive Augmented Reality. We're getting there, I just don't think we'll ever consciously realize it as we experience it.


People smart enough to be programmers have more options than being a programmer. Most of the people in my CS class ended up as managers, 15 years after graduation.


I went to school with people who went into CS because they thought they were pretty good with computers and they saw money in programming. Some of them made it; others dropped out or changed majors.

"Despite the enormous changes which have taken place since electronic computing was invented in the 1950s, some things remain stubbornly the same. In particular, most people can’t learn to program: between 30% and 60% of every university computer science department’s intake fail the first programming course." (Source: http://www.eis.mdx.ac.uk/research/PhDArea/saeed/paper1.pdf)

Many others learn how to string glue code together, but can't really solve problems that go deeper than finding the right library to import. I've heard working programmers worrying they'd fail a FizzBuzz test in an interview.

If anything, I suspect the bar for talent will go up—increasingly, programmers barely getting by now will become a commodity. But real aptitude is still rare, and I think the right combinations of talents will hold their value for a good while.


I don't understand how anyone can be a working programmer and fail the FizzBuzz test. What are these individuals working on that allows them to contribute enough to the company to not get fired?


It doesn't hurt that a lot of managers have no idea what to expect from programmers and no idea how to find and attract good programmers. They seem to learn to cope with whatever they can get and learn not to expect much.

And I have a theory: there's a group of people who have picked up patterns from a bunch of examples they've found on the Internet, or in code they've managed to be allowed to work on, and they've never grown past that. They're fine as long as you're asking them to do something they've seen or done before (for generous definitions of fine), but completely screwed the moment you venture out of that zone and consulting the Internet draws a blank. They can memorize patterns, but haven't learned to think through anything more complicated than that.

These people can appear productive to the right people, yet be completely stumped by FizzBuzz.


The programmers write programs that enable new activities that require more programs. Even if we consciously attempted to turn every person on the planet into a programmer I don't think supply overcomes the demand. Ever. Until the strong AI is developed.


But I envision in a few years we will talk more explicitly about 'coders' and 'programmers'. It's just a very different ballgame.


I'm one of those guys programming in my 50s. Technically my jobs involve project management and consulting as well but I still love programming the most.

Saying that programming "requires little or no education" is from the perspective of either a naturally smart person or the Dunning–Kruger effect. Like any profession, there are some self-motivated people who can do the job effectively without formal education. Yet it saves time to have everyone on the same page with knowledge of basic algorithms, terminology, and problem-solving methods.

If money is your motivator for programming in your 20s, the odds are that you will find some other way to make more money and not last until you're 50. At least I hope so.


I said "little or no education" compared to other fields. I'm a grad school dropout, so my bet is that my CS education is above average for a working programmer. A hiring process considered "demanding" (such as Google's) is basically testing if you know the stuff they learn in the first year and a half of an undergraduate program. Contrast that to the amount of training and test-taking that a doctor must go through and it'll put what I said in proper context.


In that case I think "little or no certification" would be more appropriate. It does seem kind of strange that doctors, lawyers, electricians, plumbers, and barbers all have to take tests to get into (and sometimes remain in) their professions, but a programmer can write the software for a missle system, voting machine, or power plant with no certification whatsoever.


The litmus test is not the complexity or impact of the product a professional is working on, but rather: how savvy are the customers and do they need the protection of regulation?

All of the professions you named are people who hang a shingle and sell services to low-information customers.

Missile systems, voting machines, and power plants are all "sold" to high-information customers that need less gov't protection.

Other engineers do need certification and do face legal culpability if they are negligent in their work, but it's inherently different I think. We can talk more about that if you're interested, would like to hear your take.


I think "little required education" is true, for programming, in both senses: no certification, and not that much to learn to become productive compared to other professions. As I said in another thread, I think the reason is that the field is younger and that computers are designed to be comprehensible, unlike human bodies that doctors deal with or legal documents that lawyers deal with, etc.

There are programmers with almost zero CS education, formal or otherwise, who are rather productive. This may make the more educated among us cringe at some of their work, but the fact remains. If CS education was essential, it wouldn't happen, whatever we think about the merits of CS education (I rather value mine). A high school dropout could not successfully operate brain tumors; there are many countries where the fact that it's illegal wouldn't stop the practice if it were effective, but it can never be. Similarly for most high-paying professions other than programming and certain types of business.


Possibly US-biased view? From my experience developer certificates are more common among developers than professional certificates among doctors.


Are there any countries where doctors don't need to be certified??


Where do you live?


One piece of the puzzle is that programming education is not very effective. Most computer science programs teach you almost nothing about software engineering, partially because many CS profs know almost nothing about it.


I think one of the problems with software engineering is that [almost] no one knows anything about it.

I've been a working programmer [or software engineer if I've just met you at a party and I think you're cute] for long enough to work on >5 multi-billion dollar projects. Of these, one was delivered on time and according to spec. That company went down the toilet within four years.

I've read fairly widely in the software engineering literature starting with Weinberg and Brooks in university, and chasing my share of papers, 'blogs and web pages since then. One of the most positive things that has happened to the field is the recent discovery that the only thing at the end of the methodology rainbow would appear to be consultants [wearing suits with slits for the dorsal fins [h.t. Mr Stross]] and stacks of unread Learn Florble-Oriented Development in 21 days.

I know I can build complex systems. I know I can sometimes build simple systems [much much harder.] I don't know how to reliably schedule a project to build a new thing. I think anyone who thinks they do know this is delusional or lying.

And in the end, I think it probably doesn't matter. The truth of the software engineering crisis, is that it never existed. And it's possible that software engineering never existed either. We program. We do it because we like it and it pays. The folks who do it only because it pays usually end up in management fucking things up by assuming they can motivate people always and only with money.

[oh, on a tangent I've also been a manager. I wasn't all that good at it. The team I managed delivered good stuff, some of it on schedule, but the company still went belly-up. And I learned that I don't enjoy management, and would rather have less money and more fun - take from that what you will]


WRT to those hugely expensive projects: for a while I've thought the real secret about offshoring is that it's simply a cheaper way to fail. Since most projects fail (outright canceled, declared a victory when they aren't, or over budget and time and generally far from feature complete), a cheap way to pretend you're doing software development has its attractions.

As for methodologies, perhaps getting everyone to actually use one is the biggest problem; that's been my experience. I have myself found about 4 things that seem to work:

The project should have a specifications document of one or two pages, no matter how complex. This is to try to get everyone on the same page, as it were, it has goals and requirements, must do N transactions/second, must run on X, etc. As much what and as little how as possible.

Further project documentation efforts must factor in the Don't Repeat Yourself (DRY) principle, i.e. the code is the only truth, and attempts to duplicate it are going to get out of sync unless you work really hard at avoiding that.

From OOSE/RUP: do short ("several week", 2-4) iterations and get your complete software and systems stack into a "Hello, world!" end-to-end state very early in them.

Otherwise, yeah, I've read a lot about software engineering beginning within the first month or two I started programming in the fall of '77 (sic) and while I think there is such a thing, it's indeed not really engineering as we otherwise know it. There's something there, but you learn it as much by doing as by more formal methods (classes, reading books) and there's no substitute for a serious amount of experience.


A multi-billion dollar project.

I can't really imagine that. Are those ever executed by a single company all on its own? Are they software-only? Do they exist outside NASA?


Probably some medium-sized SAP implementation.


Or a Peoplesoft one Or Oracle or anything government or ..


I think timescale may be applicable here. Some key programs for large companies will spend several million a year for several years - particularly if you are taking your Mainframe applications and trying to restructure them to have more easily changed business rules and a new infrastructure.

That said, I also suspect he may have been exaggerating for effect :-)


I have a friend who works for Northrop Grumman, and he just completed a $500 million project he described as "relatively small".


You are kind of right that this type of projects go for years, but other than that, billion+ projects are no exaggeration..


The NHS (Britain's state healthcare provider) famously had a project with a budget of £12.7bn (about $20bn). It wasn't entirely software although that was the main part. It famously fell apart, but billion-sized parts were handed off to companies like Accenture, British Telecom and Fujitsu: http://www.guardian.co.uk/business/2010/mar/21/nhs-national-...


It's horrific. Some bits work and are implemented, other bits don't and wont ever work.

Connecting for Health (and all the rest) are the programmes that persuaded me that governments should just define a standard, and then let providers build software and clinicians buy software that conform to the standard.

There are lots of things wrong with email, but SMTP was pretty robust across a range of platforms for servers and clients for many years.


The first project; the one that finished nearly on time, ran for three or four years. I joined half way through as a crispy graduate. It came in within a couple of weeks of schedule. It seemed very well managed for the whole of time on it. The project manager left that company, and went to work for Apple. When I googled him just now, all the top hits where at Microsoft. Perhaps he knows how to do software engineering. Or perhaps he got lucky that time. I don't know which.

The project developed a new CPU architecture, several variant implementations and ported several operating systems to that architecture. Amongst the more impressive feats I saw during that project:

- a compiler from assembler of architecture A to assembler of architecture B. This was necessary because we had a lot of code [~10^6 lines] in architecture A assembler - several other compilers that handled code written for A, with no thought to portability, and produced asm for B. - a modular emulation environment. Initially it ran on a larger example of A that had a programmable microcode feature. Later it was ported to other examples of A. Some of my colleagues were in the room when the ported OS first booted on a machine of type A with the funky microcode. As I recall, it took most of a day to reach the banner. - my own part was very modest, but I had fun. Amongst other things, I ported a disk checking utility [think fsck] from A to B. That was easy. To test it I had to create bad blocks for it to find. So I got a SCSI 1.44 floppy drive [!], and a box of new disks. Then I formatted and scratched each disk with a paperclip, and did a disk copy.

So, that was lots of bucks, hundreds of software engineers, and some number of hardware people. I don't know how many of the latter were involved. But remember that nearly everything was custom; CPUs obviously, boards, buses [though that was fixed eventually], bent metal, power supplies. The lot.

That was one fairly large company.

I've done other large projects that had many cooperating companies, usually with one or two large partners and a number of small outfits. Those involved similar sums, but a large part of that was in the equipment deployment, land purchase and so on. Not so much fun. I did once crash the wireless data network of New Zealand because a radio [or possibly an antenna] came loose on a mast and flapped around in the wind. Every time it swept through 120 degrees, all the effected clients channel hopped, provoking an exciting synchronisation bug in my multithreaded code.

Oh, and I got paid for all of it. Not as much as I would if I'd become a banker [though it's presumptuous to assume I _could_ become a banker]. I'd quite like the money, but then again I have more fun that the bankers I know. I've built software that was used [and is used] by fairly large numbers of people [if you're reading this, then you're one of them]. This is satisfying. Even it I can't call it 'engineering' with a clear conscience. If computer programming hadn't been invented, I don't know what would have become of me. There aren't that many other occupations for people with my particular blend of what I'll call talents. If you fall into that category too, then get your laughs while you can. You're a lucky person right now.

[and since it behoves me to actually answer the question, I've never done any work for a government or defence contractor. I've no particular objection, it just hasn't come along]


Thanks for the write up! Makes me want to invite you for a beer, just to hear more about it.


Answers to your questions.

Execution: Generally no. There are sub-contractors, out-sourcing, COTS, etc. And there may be a program management team of companies.

Software only: The three I've worked on, no. Hardware, software, "mechanisms".

Outside of NASA: Yes, although the US government probably has the lock on the sheer number of such programs. Chip-makers, with fab plants, are one sector. Vehicle manufacturers (planes, trains and automobiles) are another. Construction--especially massive high-rises--is probably another.


Microsoft and Apple both have multi-billion dollar projects.

Edit: Google and Amazon likely don't, actually.


Microsoft yes (example: Windows Vista). The others... no. And that is a good thing, for them.


Google sure has multi-billion dollar projects. Chrome is an example. They're spending that much just _marketing_ the thing every year.

Even if we stick to just the development side, I would be very surprised if Google has not spent > 250 million a year on Chrome development over the last 4 years.


You think Google have had 1000+ people on Chrome for the past four years?

The marketing bit is a bit special since they don't actually spend any money by showcasing Chrome on google.com.

Edit: They do spend lots of money to get it pre-installed on new PCs, though.


Even ignoring the google.com thing, estimates are they're spending at least $500 million a year on Chrome marketing for ads on other sites, various bundling deals (including pre-installs on new PCs and auto-installs with other software), etc.

As far as people on Chrome go, you're right that back in 2008 they likely did not have 1000+ people on it. The best data I can find for mid-2008 on the Internet says about 50 in mid-2008.

Looking for newer data, according to the last several updates on http://peter.sh/ at this point there are about 100 daily WebKit commits (not all by Google, obviously) and about 120 daily Chromium commits. That's not counting the parts of Chrome that aren't WebKit or Chromium. What fraction of the WebKit commits are from Google is an interesting question; as of early 2010 according to http://neugierig.org/software/chromium/notes/2010/02/webkit-... it was around 40-45% and growing rapidly.

Now going from "number of commits" to "number of engineers" is hard. For comparison, as of today according to http://oduinn.com/blog/2012/09/04/infrastructure-load-for-au... Mozilla has about 200 commits per day, but about half of those are to the automated testing repository, not to the main code. So that's about 100 commits per day. Mozilla right now has around 700 employees, I believe. So if you assume similar commit patterns (which is an assumption, granted), Google certainly has 1000+ people on Chrome now.

But I'm also not sure you need 1000+ people to hit $250 million/year in spending. In addition to Silicon Valley compensation packages, there's also a lot of test infrastructure and whatnot as part of every browser project which costs nontrivial amounts of money to create and maintain.

Again for comparison, since there's data available there, Mozilla spent about $63 million on "software development" in 2010 ($85 million if you include stuff like office space, HR, marketing, etc) according to http://www.mozilla.org/foundation/documents/mf-2010-audited-... and had about 200 engineers at the time, I believe... and Mozilla does not give out huge stock bonuses, like Google has done with Chrome.


1000 engineers? Probably not, but likely many hundreds plus all the organizational support people like designers, product marketers, product managers, people managers, and admins.

Consider Google's opportunity cost for advertising on the "internet's home page". I've read estimates of $2B.

For a while, Google was also paying Adobe to bundle Chrome with Flash (in addition to bundling Flash with Chrome).


You're right about Google and Amazon, early posting on my part.

But I'd say the iPhone was easily a multi-billion dollar project.


I seem to recall iPhone 1.0 being called a $100 million dollar project in some Wired article. They were several hundred people (not thousands), working together for about 2-3 years. That seems sensible, and the numbers seem to add up.


Apple's strategy is to assign fewer people than you would expect when building a new product to ensure focus / reduce feature creep. Staffing on stable products are in line with what you would expect.


For example, I heard (from an ex-Apple co-worker) that the entire iTunes.app team was about 25 engineers. In contrast, Adobe's Flash plugin team had about 50 engineers (not including QA).


I would argue that if your team delivered good stuff, mostly on schedule, and your team was happy, then you were good at being a manager. The company failing despite your team deliver quality product hints that there was probably a flaw in strategic vision or external market factors.

Enjoying the role is another thing though.


When companies that are large enough to spend "multi billion" dollars on a software project blow up "within 4 years" it makes the news. Like Enron. And Worldcom. And Lehman. Etc. And in those cases it's usually a very deep systemic rot. So I don't know how much all of that matters.

I also echo the concerns below about the "multi-billion" comment. Did somebody just mention sometime that it's that expensive? Because that's a remarkably large amount of money for business. Government? Not so much. But for a business, well, there are very few billion-dollar businesses and a scarce handfull that are spending a billion+ on any single project. My fiance is a PM on the largest electronic medical records rollout in the nation, which includes visits to over a thousand clinics around the country to install hardware, convert paper records and train people, as well as all the infrastructure, and it's reportedly going to bust through the original budget but still clock-in around $100 Million dollars.


I'm curious, which company is that that did the largest electronic medical record rollout in the country? Sounds interesting.



He's probably talking about the NHS.


I think CS education is extremely effective, if one does the exercises himself, and as to software engineering, they don't teach about snake oil, either.

It's just that there's not that much to learn that is universally applicable, comparatively. The field is young, and then computers are easier to make sense of than most things, because we made them that way. Doctors need to deal with human bodies which aren't designed for human understanding and tinkering. Lawyers need to deal with documents which aren't designed for easy understanding, either - they're designed to prevent hostile, malicious parties from screwing each other. We simply have it easier than most skilled professionals.


> One piece of the puzzle is that programming education is not very effective. Most computer science programs teach you almost nothing about software engineering, partially because many CS profs know almost nothing about it.

And mostly because computer science is not software engineering. If you want to learn software engineering, find a degree or diploma program in software engineering.

Being frustrated that your computer science degree did not teach you about software engineering is like being frustrated that your civil engineering degree did not instruct you how to physically build a bridge, or that your mathematics degree did not teach you how to corporate accounting.


If you want to learn software engineering, get a job as a software engineer after a degree in CS. You will learn far more from the job than from the degree.


Sure, that could work too, it's basically apprenticeship. But it's still not the CS degree's fault or problem that you're learning software engineering on the job.


Yup. While formal education is not necessary, one has to keep learning to stay in the forefront of this profession. If you stop, your 'shelf-life' is 10 yrs at most.


I disagree, if you did any application programming in the mid to late eighties in C/C++, TCP/Sockets, CORBA, Sybase, and X11, about 90% of your experience directly translates to today's Web based application development.

Hell, if you use a Linux development environment you will feel right at home.


I think he means little or no formal education required; i.e. something the self taught can get into based on merit alone. You can't do that with a lot of high paying professions as they absolutely require formal education.


I'm 35 and I just recently started trying to turn what had been a hobby into something that pays. I harbor no illusions about ever making decent money at it though.


Just concentrate on doing hard stuff.


I want to. I do have a ton of for-the-love projects which seemed impossible when I started, that i've learned a lot from, failure by failure. I've even got an app I'm building in Laravel (and this is the last you'll likely hear about it.) Unfortunately with where I'm at right now it's just been scutwork that puts gas in the car.

I might even take a cs course this year assuming it's possible to get the loans. I'm still paying off an art degree though.

By the way never get an art degree.


You can take lots of courses from top universities online for free. That won't give you the piece of paper, you'd get when you paid for them, but all the knowledge is still there.


"Programmers who can program at all - as in, print out a binary tree correctly"

Strikingly succinct and useful benchmark, just sort of thrown in there like it was jam on toast.

There are some tidbits of wisdom in this article, but overall it boils down to a life that has lost all meaning and passion and has succumbed to the lowest common denominator: money. True, maybe, but sad, really.


I found much "meaning and passion" in programming after getting into it for the money. Conversely, I know a few people who started programming as kids, and who spent some time fighting depression, unable to feel the same passion as in their early years while doing real-world, bill-paying stuff. Typically, they try a few other things, and then get over it, realizing how lucky they are, sitting on the gold mine that is programming ability.

A life full of "meaning and passion" is typically sustained through money. It's much easier to find meaning and passion given money than it is to find money given meaning and passion. If nobody is willing to pay for your program, maybe it's not worth the passion; if they pay, maybe it is.


Many people spend years or decades moving from job to job and from career to career looking for happiness. Most of them don't find it until they learn that your job just isn't what makes you happy. "Do something you love" is a myth.

Jobs are jobs because they involve a lot of crap people don't want to do. No one's going to find personal meaning by writing specs, or by cutting a beautiful design down to an ugly minimum to fit into time constraints, or by maintaining some poorly-written internal tool. But these are all things programmers will do, at some of the best jobs in the industry. Every job has a large chunk of "this sucks" work. If it's kept to a minimum, you're doing far better than most people.


>"Do something you love" is a myth.

As someone who is currently working his dream job, this statement couldn't be further from the truth.


A dream job is still a job. There are still parts that are tedious, and frustrating (if you're not encountering anything frustrating, you're not doing anything important), and annoying. That's why they pay you. And that's why "do what you love" is a myth. You can't always do what you love. Sometimes you have to do things you do not love, and just be happy that part of the time you get to do what you enjoy.

Far too many people chase a "dream job" not understanding that every job will have parts they simply will not love. And instead of accepting that this is reality, they fixate on the problems and fall prey to "the grass is greener" thinking. I'm sure Elon Musk loves his job (indeed he has many people's "dream job"), but I bet 90% of it is tedious bullshit.


Your argument is so weird to me. Not because I think you're wrong about every job having a bunch of tasks that are tedious and annoying, but because the same thing is true of every single thing we do in life. Jobs aren't unique in this manner, the same thing is true of any creative hobby, relationships, etc.

"Far too many people chase a "dream job" not understanding that every job will have parts they simply will not love."

I don't think that is true, I think most people realize any jobs just like anything at all in life, won't be 100% fun stuff. It is just such an obvious common sense thing that they don't bother talking about it.


> I don't think that is true, I think most people realize any jobs just like anything at all in life, won't be 100% fun stuff. It is just such an obvious common sense thing that they don't bother talking about it.

I disagree. People who are happy with their jobs realize this. People who switch aimlessly between jobs and careers definitely do not seem to realize it. They get fed up with dealing with people, or a crappy co-worker, or whatever else they don't like about their current job and leave, assuming that somewhere is a job that doesn't have to deal shitty thing "X", not admitting that most jobs will have shitty thing "X", and the ones that don't will have shitty thing "Y" instead.

On top of this, we get sentiments like the one from calinet6, telling people that if they simply accept that they need to work for a living, then their lives must sad. "Oh, you work as a programmer for money; how sad for you." Yes, how sad that someone can make a good living in a good industry.

How sad instead that so many people look for their life's meaning at work and never find it.


Life. There are still parts that are tedious, and frustrating (if you're not encountering anything frustrating, you're not doing anything important), and annoying.


I think a better statement is: love what you do (by getting good at it). Cal Newport summarized this recently: http://www.nytimes.com/2012/09/30/jobs/follow-a-career-passi...


Agreed, it's BS.


TIL your life is wasted if your treat your job as a job.


If you spend 40 of your 112 waking hours per week doing something other than what you're passionate about, you're wasting at least a third of your life. Unfortunately we've created an economy that compels most people to do this.


I'm a software developer (MS Comp. Sci.) in my late thirties. I've always had the impression that software development was really well paid. But lately many of my friends (doctors, lawyers, MBAs) has started to make way more than I can get as a regular employee. And for the doctors it's all part of their standard salaries. They don't need to demonstrate any particular high level of competence. And from here on their salary will increase until retirement, while I expect mine to flatten or decrease. I love programming and didn't choose it for the money, but my view on software as a high paying job has changed. Of course everything is relative.


This is interesting. I've heard mentions of very large numbers for bankers, lawyers, doctors as they move up the career ladder, but normally involving starting their own businesses or being made partner. Do they really outearn developers significantly, even as employees? Maybe I should've stuck to trying to get into finance...although once the entrepreneurship bug bites, it isn't quite so easy.

I'm in a country where the wage difference between the protected professions and the rest is pretty large, and programmers are pretty much commodity employees with little advancement opportunities. The only way to break out seems to be entrepreneurship, but the local market isn't big enough to support big or even medium exits. I guess that's why so many people try to get into medical and law school or into i-banks.


Just wait until you hit 40 and getting a full time salaried job becomes asymptotically more difficult (unless you're in a special field like embedded or one that requires clearances).


Doctors and lawyers are often small business owners when they have their own practices. Their incomes are more on par with small business owners.


How much do typical doctors and lawyers make mid-career?


I agree with many of the things written in the original post. But I definitely disagree with the notion that the barrier to entry in this profession is low and that any Joe Sixpack can start programming for a living because it's supposedly easy.

I can vividly remember my days in back in college where a lot of fellow students in my CS classes had substantial problems writing even the simplest of programs and understanding basic statements and data structures. A lot of them couldn't even write simple programs which would take user input, do something with it and give some output, let alone come up with more complicated solutions and architectures for real world problems.

This field is not for everyone and I believe that is often not obvious to many of us because we take our ability to turn mental constructs into code for granted. A lot of people just don't have the mental facilities to do it. I'm not saying this to sound elitist, but it's the way it is.


I think it's getting progressively easier. I think that back in the day before the Internet, perhaps in the mainframe days, you had to be a true wizard and know your domain extremely well to make anything happen. Think K&R kind of attitude and skill level.

Nowadays anybody with sufficiently good Googling skills can put something together by stitching pieces of Stack Overflow code. You don't need a specialist to make it happen, just about anybody will do. Perhaps you shouldn't leave mission-critical aspects of development to those people, but you can get away with most of the other work.

Was it Mark Suster who said that most companies out there do not fail because of bad technology?


To the pedant brigade: ease up. It's "little to now education" compared to medicine or law, where you have to toil in years in a very rigid pipeline of exams, internships and certifications. There's plenty of learning in programming, but you can do with little education.


Best quote I've read/heard all month "...but passion burns out, whereas greed is sustainable." I identified with the author and it's one of the major reasons I didn't pursue other career paths even though I could have (Lawyer, Doctor etc.) Thanks for this article.


I came here to say that this is the most misleading quote I've read recently. If you're avaricious, of course you think that passion burns out, because your passion is for money. All of your other interests have been fleeting fancies, but you mistook them for "passions."

At the risk of introducing a Scotsman to the discussion, I suggest that passion is the only sustainable thing. If you sustain an interest in money for your whole life but not an interest in programming, or art, or writing, or Ultimate Frisbee, those other things aren't passions, they're interests or hobbies.

Greed is pretty much the definition of a passion for money. If you identify with this quote, I suggest that you modify it slightly to read, "For the greedy, a passion for making money is the only sustainable thing, all other interests burn out."


I think this is a bit cynical (and dangerous) but agree with the premise that currently the number of programming opportunities continues to exceed the number of programmers. However there are signs that this is changing.

I do know a programmer who became an IP attorney (doing well at it too) and a couple of programmers who have gone off to do entirely different things (one is a guide in Africa, another drives a tugboat around Puget Sound for fun and profit). I also know some who are not working at their first choice of job, rather they are working at jobs they would not have taken if they had a choice.

It is this last bit that suggests we are at the beginning of the end for the programming shortage.

NB: I think it is hilarious that the first comment is from a user named Bogdan but I suspect that is just me.


However there are signs that this is changing.

I've been hearing this for fifteen years now, which is about as long as I've been paying attention. For the first five years I was maybe even a little concerned. (In the nineties programmers were going to become obsolete because OOP worked and all code was about to become highly reusable so there wouldn't be any need to write new code. Yes, people were saying this in earnest.)


I hear you, I don't think the change is being wrought by any magic bullet where programs write themselves, what I'm seeing is that more folks are going into programming than durable programming jobs are being created. (I use the word durable because there are lots of short term requirements.)

So this is how I look at the health of the market:

1) Does any programmer have their choice of jobs? (which is to say bargaining power when changing jobs)

2) What is the median unemployment time for programmers?

3) How are the first two mediated by contract vs full time work?

4) What are the median salaries?

What I've been seeing since the more recent depression is that unemployment median is staying fairly low but that is being achieved by an increase in the number of folks doing contracting work. Full time work (and that includes health benefits which become significantly more expensive for the 'over 50' programmer as a contractor) is getting harder to find.

As with most markets it is more clear on the 'mediocre' programmers (where mediocre is a function of code productivity) Another thing I'm seeing is salary erosion, which is to say that engineers taking lower salaries at large companies to stay employed. That also indicates a switch in the 'bargaining power' of companies looking for programmers vs the available programmers.

The sequence I've seen a number of times now with acquaintances are flat to negative salary growth when leaving one job and moving to the next. Some folks spent a year or two consulting looking for that position that would be a net gain on their salary growth.

From an economist's point of view if prices are flat to trending down it signals a shift in power from the seller to the buyer.

Those are the signs I'm seeing, would love to hear other's experiences on whether or not they think the market is saturating or not.


another drives a tugboat around Puget Sound for fun and profit

This is one of the most underrated jobs around. Good pilots will make >200k working 4 days a week doing this.


Tugboat pilots make way more money than programmers, but the responsibility is much greater. You don't want to lead a tanker crashed into shore.


OP is a Russian-speaking israeli and Bogdan is a fine slavic name (rooted as God Given, I guess)


I've seen all kind of different programmers. The ones that are not in it for the money and the ones that hate their job but won't switch because it has a good pay. It reminded me of this animated movie about 'what motivates us' http://www.youtube.com/watch?v=u6XAPnuFjJc The essence: don't underpay and don't overpay.

More and more programmers are looking for good company cultures with a good (but not highest pay). Money will make your life easier but won't make you happy.


Hooray. That is exactly what drives me too. The culture, the people, the actual work is more important.

Working for a huge amount of money in a corporate machinery is a brain killer.


Yes! But make enough money so you don't have to worry leaving the lifestyle you'd want.


I know a programmer who became a lawyer (in Netherlands). It lifted his hourly rate 10x (50->500 EUR/hour), and while not all time is paid, and he isn't working full time having a lot of time to spare, he's getting like 2x than before.


That's rather nice indeed; I think the mean earnings for lawyers aren't that high and there's quite a lot of variance, not?

(Unfortunately, this is a theoretical discussion for me, since I'd make a lousy lawyer.)


The starting salary distribution for a lawyer is an interesting graph: http://www.nalp.org/salarydistrib

Basically, after graduating from a law school you either get hired by a good law firm or not. In the former case, which happens to some 20% of graduates, your starting salary will be $160k. In the latter case your salary will be dictated by an unexciting distribution with the peak around $50k.


Just a few comments on a well-written article that makes some good points:

> No health or legal risks

On the contrary -- the health risk arises primarily because of the sedentary lifestyle. It's hard to imagine anything so hard on one's health and longevity prospects as sitting and typing all day.

As to legal risks, they're certainly on the upswing, as people who can't program try to steal the work of those who can, and as people try to take generic methods, known to all, and turn them into private property.

Apart from those quibbles, a nice article.


I think programming and exercising is healthier than, say, moving.

As to legal risks - it's not the programmer who's facing them, it's his employer (which is the same thing for the self-employed programmers, but they're few). A programmer will not be personally sued for any sort of "IP infringement".


> As to legal risks - it's not the programmer who's facing them, it's his employer

I didn't consider this angle, because I've always been my own boss. I've never written programs for anyone else, which means I took home the money, not the grief.

http://en.wikipedia.org/wiki/Paul_Lutus

But as time passes, I see more and more cases where someone tries to patent something that should never be patented, which might eventually prevent people from writing programs at all.


Quite a few professionsnow require you tositall day looking at the screen, but they differ in compensation while sharing health risks. And I don't see many occupations where the risk is much milder.


> And I don't see many occupations where the risk is much milder.

Yes, I agree completely. To me the problem is that programming is so lucrative and fun that it might make us too sedentary to be healthy.


> On the contrary -- the health risk arises primarily because of the sedentary lifestyle. It's hard to imagine anything so hard on one's health and longevity prospects as sitting and typing all day.

Who says you have to do that? At the very least you can demand a standing desk.


I don't know about you, but when I solve programming problems, I'm not exercising. And when I'm exercising, I'm not thinking abut programming except perhaps in the most general sense.

I'm just saying that it's pretty much accepted that sitting around a lot is bad for you.


I agree. And getting a standing desk is a way to avoid sitting around.

There were some studies floating around a while ago, about how even if you control for amount of exercise people get, sitting around more still leads to worse health and higher death rates.


It's posts like these that get me as a programmer worried. Arrogance tends to lead to bad things and the world can change at a pace greater than one can imagine (a good way for me to understand how swiftly things change is to ask myself: Could I have foreseen x years ago what I am be doing today? for me, using the relatively low value of x=5 the answer is a definitive no. And I think that's a good thing).

Be humble if people are willing to pay you more money than others for what you do - it might change incredibly fast. The more generic assumption of the post is that people are willing to pay good money for skills that are relatively rare... well, make sure to keep your skill set up to date.


Don't get me wrong - I'm rather paranoid, and I'm not sure at all that this will last. All I'm saying is, the alternatives I know about aren't necessarily better, and if one talks about quitting the field because it's not enjoyable (without mentioning money), then my question - from an angle not unlike yours, I think - my question is, so what's your alternative way to make money.


Also, in what other job can you build your own little slaves to do some of your work for you? You don't even have to tell anyone.


I like to think of myself as master of the intelligent networked machines :)


Farming :-)


Farming is undergoing a similar talent crunch right now. If you are in the right parts of the world and have a little skill behind your name, you can easily make $50/hr as a farmhand.

Food and tech is where investors are piling all their money right now. As both a software developer and farmer, I do fear what will happen when investments start going elsewhere.


> If you are in the right parts of the world and have a little skill behind your name, you can easily make $50/hr as a farmhand.

I would be interested in more information about this. Which parts of the world, farming what, what skills make a good farmhand, and is there any public data that I could look at to look at trends?


I am a software developer and farmer too. I wish I could say I get most of my money from farming, but not yet. However, the fact I can do both is a testament to the flexibility of my career in software dev. And if investments start going elsewhere, I'll always at least have an excellent source of food.


I don't know what to make of this. In New Zealand, a farm hand will probably earn a bit more than someone working at McDonalds, and they'll work a lot more too.


I cannot speak to the economics of New Zealand specifically, but there is a huge difference between a skilled farmhand and a farmhand. I referred to the former in my earlier post.

A skilled farmhand is someone who has, well, skills. They probably have a commercial drivers licence, background in mechanical work or dealing with animals, and have spent a lot of time operating heavy equipment. Those kind of people are rare, but can be paid well when you find them.

Someone without skills on the farm will probably be paid as you describe no matter where the location.


I am grateful that I am able to make a lot of money doing something that is fun for me anyways, programming computers. However, a fool and his gold are soon parted. There are some programs best left unwritten, for any amount of money. And some programs worth no money, yet most valuable.

The freedom from work as we know it, is the dream that technology is meant to bring... to everyone. When I am 50, I hope that how much money I am making will be largely irrelevant due to advances in technology and society.


>"No health (...) risks"

I'd like to see some research to back up this claim, but I'm not aware of any studies into occupational health for programmers. Does anyone know of any?


Can't think of any offhand, but I anecdotally, tendonitis is a huge risk for programmers.

While you can't claim "no health risks", they are pretty low as far as jobs are concerned.


I'm sure sitting on your ass 8-10 hours a day is a health risk. Maybe not as bad as working in a factory breathing in nasty chemicals all day, or dodging falling trees as a lumberjack, but a health risk nonetheless.


Actually sitting too much has lately been touted as a health concern: http://www.mayoclinic.com/health/sitting/AN02082

I should probably get a standing desk. I try to stand up, move about and go to the restroom or look out a window every hour, so maybe that helps.


I'm pretty sure there aren't any. And as any RSI sufferer will tell you, programming has health risks, which can even prevent you from continuing to program.


I had some pretty bad RSI where I had to take a couple of months off so I don't think the risk is nothing.


If what's described is true:

a) Tons of money to be made b) Tons of unmet demand

Why the outsourcing market isn't growing as much as it should? There are plenty of places with more than capable programmers which are usually paid in peanuts not only when compared with SV, but when compared to people in the same country.

That smells like a niche waiting to be disrupted. He who solves the trust and quality perception and control issues, will become very rich.


The problem with outsourcing is not 'quality perception,' it's the actual quality.

The good programmers around the world command good salaries, whether out-sourced or not.

In the end it doesn't matter whether you're in India or the the US; there are just not that many great programmers around.


That's why I said quality perception and control. This is, making sure you are producing what's needed.

As to the rest, I'm baffled. How can you even think it doesn't matter where you are?

Different cultures value differently different jobs. For example, I know of places where programmers are not valued much and it doesn't matter how good you are, you'll not earn more than a corporate salesman.

Maybe it doesn't matter for the top 0.5% who end up going to work for Google or Facebook anyway. But there are lots of jobs for merely above average programmers, which are very well compensated in the US, but not at all well elsewhere.


disrupting culture sounds hard. Software isn't a field students in china work towards because there just isn't as many jobs there as other fields. The pay is fairly mediocre so top students from universities aren't exactly dying to get into that field. It may take at least a generation or two to convince the masses that software engineering is just a good of a job as chemical engineering.


The point is you don't need to disrupt that culture. That culture is in fact what would permit the idea to work. There are badly paid good programmers already in China and elsewhere.

If you can manage to produce quality work and convince people to hire you consistently (big if, I know) in the high paying market, you can leverage the existing programming population oferring wages a lot higher.


There's a lot to be said for face time. Given an average contractor, if you bring him on site and meet with the team for 3 days a month, I bet the ROI easily doubles.

Getting value out of outsourced workers is a skill more rare than programming itself.


And that's why it's a perfect niche for disruption: High barrier to entry, lots of money in the market. Yummy.


But usually that high barrier is erected by incumbent companies in that field, whereas the "incumbent" in this case is mindshare and perception. I'm not so sure a sole individual or company could change that easily... it's like when slavery was abolished, it still took the USA quite some time to treat african americans as equals.


My personal observation has been that the difficulty and set backs in the corporate adoption of outsourcing have not been due to the lack of capable programmers.

It has been associated with the lack of regular collaboration between the outsourcing resources and the customer. As a whole, this industry has not perfected the art of specification. An analysts with the ability to comprehensively specify software requirements is a scarcer resource than a programmer who can properly print a binary tree.

The lack of adherence to proper standards surrounding specification is generally compensated by ongoing collaboration between development teams and stake holders (hence the wide adoption of SCRUM). Separating the two entities with geographical, cultural and language barriers causes a break down in collaboration and that allows the deficiencies in specification to cause the project to fail.

I would argue that a bad team of coders with a water-tight set of requirements will have a greater chance of success than a team of rock stars with vague and incomplete requirements.


"more than capable programmers which are usually paid in peanuts" Where does that happen? I have troubles imagining this.


One of the biggest reason there aren't that many 50-year-old programmers is that a lot of programmers move to other roles in the same company, like line manager, project manager, product manager or various sales roles.


Agreed - the emergence of career progression (ie monetary progression) based on technical qualities rather than managerial ones is only a fairly recent phenomenon... at least, in all the companies I have worked for (large enterprise).

It's not surprising many former programmers of that vintage are in the managerial ranks now. Whether that is a good or bad thing, I'm not sure.


I think it's mostly a good thing. Having worked yourself as a programmer makes you a better manager of programmers in my experience.


If you're into programmer and not in it for the passion there is a high chance that you're a mediocre programmer.

But indeed that doesnt matter. Because the demand is high.

But for me, this is what drives me: working with an excellent team on a product/service that is heavily used and comes with technical challenges.

If managers, business and bad programmers interfere with this, i'd rather stop and get a decent job.

The money is not the main driver.


Judging by OP's blog, I'd say he's passionate. Look at his other articles.

He says he's "in it for the money" because he's honest. No one working to earn a living is not in it for the money, and if they tell you otherwise they're delusional. I think the measure should be "Would you still program if this wasn't your job?" and if the answer is yes, then the passion is there.

I really hate it when people decry the importance of money, because money is basically our unit of human sustenance. It is what we trade for food, shelter, and clothing.


Off course everybody needs money to survive. But when choosing a profession, some people choose to be an attorney because they can get a big salery.

However I choose computer science because of the passion. I also had a passion for making music. But the passion and the money are the drivers. But the main driver is not the money.


I guess that could still depend -- suppose the individual in question made lots of money by selling a software product, and develops a passion for it due to the payout. Does it matter if he was initially passionate, or only after making the money?

A friend of mine hated piano as a child, only after many forced hours of practice (from his tiger mom) he became really good and started to win state championships for his ability. After a few more years, he developed a passion for it and played piano for fun. He never liked piano to begin with, but when he became good at it, he developed that passion.

So I'd argue that a bad programmer, after making some decent money, can become passionate at it when the initial driver started as money.


Do you by chance read Cal Newport's blog? or have read his recent book "So Good They Can't Ignore You: Why Skills Trump Passion in the Quest for Work You Love"


nope, did he form the same opinion as mine?


yup


I guess if you are into something with a passion (programming), more often than not you are going to be good at it and the money follows.


The tricky part is defining passion. I think the key element is that insatiable curiosity that pulls you in when you're doing it. The desire and drive to understand every nuance of a system is what makes it possible to be a good programmer.

In other words, a clock-punching mentality is not enough, but neither is making it your life's mission necessary.


Hm, it's obviously true that the computer doesn't care what your life's mission is, but I don't know how someone would avoid having that insatiable curiosity dominate their life. I never could, and I only tried briefly because I felt like a freak (and to be fair, compared to the mainstream we are).


"Little or no required education" really? Sitting at the cashier requires little or no education, but doing programming requires much more education (either on your own or someone has to teach you). From my perspective a lot people I know aren't capable of programming just as they are unable to solve mathematical problems (and a lot of people can't even do basic math when buying at grocery store).

Not to mention that here where I work you are tested for your knowledge and problem solving skills - so although there is a high demand there are still very few that are hired.

BTW. About 15 years ago I heard that it's not a good choice to go and study computer science because there are a lot of others that do it and the market will be saturated. And we know how it is saturated right now (it isn't). There are more and more "places" where software wasn't needed before (e.g. cars, TVs) and now it is required - demand for programmers increases.


You dont necessarily need FORMAL education, but you have to learn alot to be a good programmer. Its alot about training, experience and talent...


Basic Economics states that with a low barrier to entry and large salary means it won't be for very long. Wish we would professionalise. In the UK now there are software dev jobs being advertised for minimum wage.


I think the barrier to entry to be "good" is fairly high, it just isn't artificial, like most barriers. There is no certification, money, or time barrier artificially constraining supply.

You need persistence, logical (not magical) thinking, willingness to learn a tremendous amount of material, and the ability to envision abstraction in order to become a programmer. These skills co-occur in only a limited portion of the population and of that, only a subset would be willing to live the programmer lifestyle (indoor, bad for extroverts, sedentary, not so high-status as being a Dr.)


I've often times felt guilty that this is almost exactly the reason why I program. I like programming but I also like the salary and benefits. I can then use my 5-9 time to do all the other things I like: cooking, working-out, hiking.

That said, I recently founded a startup, where the work is more stressful and the pay is less and I'm hoping for it all to be worth it financially in a few years. This is often not the traditional "Why I founded a company" story you read about hear on HN, but I wonder how common (or misguided) it is.


If financial independence is your only goal, you've stared a startup for the wrong reason.


One reason I'm not confident that the supply problem will be solved anytime soon:

http://marginalrevolution.com/marginalrevolution/2011/11/col...

Given that college has been incredibly (over)promoted over the past 20 years and that CS jobs have become more lucrative if anything, the conclusion I drew from this is that there just aren't very many engineers on the margin.


Nice to hear such an optimistic viewpoint. I find some comfortable truths in this essay, but he kind of glosses over some major things.

The moving targets that are the latest fads in languages (every six years a new "generation" does the same old thing their way) and shifts in market demand certainly create an environment requiring constant learning. Unless you're in business for yourself and taking on more risk and stress, your earnings will top out in the low six-figures so you have to value daily comfort and health insurance over any grand ambition or ability to disappear for months at a time. Outsourcing and immigrants willing to work longer hours for less money are a constant macro threat to this comfort zone too.

To say that it requires almost no education isn't true. An engineering or computer science degree surely makes it easier to get a job. Whether that training makes a difference at work if you started coding at age 9 anyway is debatable but a degree gets you recognition as a professional and shows that you have deep cross-training in math and physics.

I do agree coding non-mission critical applications is pretty low stress and for the most part you have a chance at a decent quality of life.


I have a suspicion (albeit a light one), that programming in itself will become a commodity skill, like "good writing" (something you _have_ to know to score well on the SAT/GRE).

It would become a necessary skill that simply everyone in a wide variety of fields (doctors, accountants, etc) where programming is the slightest bit helpful would have.

In such an age and era, will programmers get paid anything close to what they get paid today?


You seem to have "good writing". Could you write a novel, with a captivating, nonobvious plot, interesting characters and a twist ending?

You probably can score ok in a math SAT. Can you visualize the mathematics of a quaternion, or formulate the equation for an n-sided betzier patch?

The work a linguistic/novelist/journalist or a mathematican is not on the highscool level. Neither is the work of a programmer.

I do believe basic programming should be taught, just like basic math and writing skills. But that has absolutely nothing to do with proffessional programming.


Programming is about fast thinking, good organization, good prioritization, continuous learning, continuous automatization, sharing and yes, good writing. The actual coding is a side-show.


Most people don't write well, even most educated people. It's not the commodity you seem to believe. The GRE/SAT test for the ability to write essays on a specified topic in the format that the GRE/SAT want. This doesn't really reflect useful writing in the real world.

Plus most people don't have great GRE/SAT scores anyway. You don't have to have outstanding scores to get into most programs. You just need decent scores.


passion burns out, whereas greed is sustainable

This blog entry seems to have been written so that it can end up with this sentence and not read cynical.


Either the system is broken, or some people are just gasp not motivated as much by money. There are quite a few internships in programming (just check out glassdoor) that pay about as much as a tenure-track professor, and these days with all the shenanigans in academia I would be hesitant to make a judgement on which will provide better job security...

So the economy rewards someone building facebook or groupon more than someone with a PHD and multiple post-docs doing basic research, and while the developers for said companies do add a tremendous amount of value, which is reflected in their sallary -- IMO it is more likely that DARPA or a similar government body is more likely to develop the next step in innovation. Siri was originally a government project, that was then commercialized from CALO. http://en.wikipedia.org/wiki/CALO Same goes for the internet.


Good post. I've been doing this for many years now though and I've been burnt out after maybe the first 4-5 on coding, but that is still what I do. It really is about the money though. Early on I had the idea that I would become an architect get all of the certifications (back when that meant something), work my way up management and have a house at the beach, at the lake, and in the mountains. Ha. Yeah, I should have known. Right now I'm hoping that telecommuting becomes the norm. I love working from home, but I don't think I could make what I'm making now as a contractor doing Rails development, which is now primarily what I do. As long as I continue to be employed, I guess that is the main thing. And I guess that is the point of the post.


This is a nice response to the other blog post. It is amazing how privileged your life gets when you can do black magic with code that most people don't even dream of ever being able to understand.

However, I disagree with this statement: "So I'm not planning to quit programming, not because it's such a great source of joy by itself, but because it looks so good compared to just about anything else."

Well, I wouldn't want to miss the high I get from being in the zone for four hours straight either. I wonder if the author implies that programming is no longer fun to him or if its just not the deciding factor. To me, the fun in coding is really a big part of my overall happiness and so contributes a large part of the decision to stay in the field.


It's a lot of fun, but not the deciding factor. I have a great gig now, but it won't necessarily last, and I won't necessarily be able to get a similar job (it's in hardware architecture and software tools and there are likely to be less jobs in these things over time, though not necessarily). I'm not sure the typical programming job is that much fun for me, but it's decent enough and the question always is what you'd do if you decided to leave the field.


I did not even get past the first 100 lines before I want to give this blog post a score off the charts. We need more people programming, lots more, with the honesty and humility of the author. Thank you for saying what you said.

yosefk.com +10000


Perhaps I can add my experience in this. I was very good at programming in college. I was one of those guys that left the labs under the hatefull gaze of the entire lab section having finished his assignment early. And boy I loved it too. I was so happy having finished a large programming project or a large engineering design assignment. After getting an interesting assignment I would literally skip on the way back home daydreaming about how I will write it. I was not at the best university, mostly because I was an immigrant so I was not able to get good grades/sat scores, but it was a very decent state school.

But while in college I saw that most powerful people in america were lawyers of some kind. These were the days of the Clintons, btw. Then I got into my stupid head that perhaps I should go to law school. You know in order to join the power elite and make a difference and all that.

By that time my english was very good, and being naturally intelligent (I will not bore you with false modesty), I got into some of the very best law schools in America. I chose one and did very well there and got jobs at some very prestigous top law firms. Basically, for a while I had the promise of a career that most lawyers would dream of.

But now this is all in shambles and I am thinking of getting back into engineering or something more closely related to technology.

Oscar Wilde said something very wise (paraphrasing): "I used to have the life of my dreams and I was happy; now I have the life of everybody else's dreams and it is incredibly tiresome"

So my advice is if you are one of those natural programmers by all means do it, and do not ever think about what other people say about "what would you be doing when you are 50." Yosef (the author of this article) is one of those people, and to him the answer is very simple and very happy: "programming".

You see this question of "can you see yourself as a programmer when you are 50" does not have much to do with ageism or the labor market but about people's inner feelings and desires. Some people are horrified to see themselves as programmers when they are 50, not because of the market but because they secretly loathe it. And to see themselves doing it when they are 50 seems like a life sentence. For others, it is the most natural thing in the world.

I remember when I was a lawyer I once had an especially good stretch. Some of our top clients complimented my work. This is a big deal because those clients spent crazy money on fees and it is very rare for anyone to complement a lawyer's work. I thought to myself "wow keep going and you will be a partner in no time". Then I thought about life as a lawyer, doing the same thing over and over again, for the rest of my life and it was the most depressing thing ever. It was horrifying and the thought about multi-million dollar salaries did not help (although now in my much more perilous situation those salaries sure seem nice). I got into a serious depression and that badly affected my work thereafter.

So my advice is, if you are good at programming, if you are one of those few for whom this stuff just clicks, go for it and do not listen what anyone says about markets, or ageism etc. Note that those that are really good at programming are very few. Even among programmers, I would say that those to whom programming is annoying and a little scary greatly outnumber the ones that have real talent for it.

So people will generally give you many reasons to move away from it, but those are their reasons, not yours. If you are part of this select group just count your blessings. And here are some of these blessings:

1. You know how rare it is to have a passion and talent for something, and at the same time have that something be valuable and useful. Think of all the brilliant and passionate people that are into disciplines where only a few thousand people in the world get a decent income. Think of all dancers, screenwrights, directors, painters, poets, chess players, etc.

2. You have a wonderful differentiator of skill and ability: things either work or not. When I was a lawyer I had to compete with so many hacks. When I would stay up nights writing complex documents, trying to phrase every single word just the right way, when I would stress out for hours about a particular phrasing or argument, they would slap something together quickly and with no second thought. And their work would look like mine to the client. The consequences of bad legal work are uncertain and tend to be much delayed.

3. Your craft requires very little investment. Again, you have no idea how lucky that is. Even startups that require capital, get it mostly for salaries. There is no expensive equipment to purchase, etc. Marx thought so much about how to connect workers to their means of production, and in the end came up with a theory that turned out into a complete disaster and caused untold tradegy. If he only knew that some day there would be a sub $500 means of production that can create wealth worth millions he would not go into silly plans about dictatorship of the proletariat.

There is more but I have rambled enough. Heed my advice. If you are one of the lucky ones, ignore what the less lucky ones are saying and do not squander your good fortune.


The consequences of bad legal work are uncertain and tend to be much delayed.

That's a really good point. Well over 50% of the "lines of code" in a typical complex business contract cover contingencies that ideally will not happen. That means they will likely never be "executed." That, in turn, allows the legal profession to be held to very different quality standards than an engineer or programmer.

As a freelance developer I often find myself reviewing contracts and consulting agreements prior to signing them, and I'm rarely impressed with either the original language of the documents I'm given by clients, or with the reviewing skills of the attorneys I engage to look them over. Yet it's inevitable that the attorneys who wrote (i.e., cut-and-pasted together) these agreements, and who review them on my behalf, will make more on an hourly basis than I will when I perform the work.


This sort of intelligent reflection on personal experience makes for valuable comments.

Particularly good: "You see this question of 'can you see yourself as a programmer when you are 50' does not have much to do with ageism or the labor market but about people's inner feelings and desires. Some people are horrified to see themselves as programmers when they are 50, not because of the market but because they secretly loathe it."

I hope you do get back into engineering, and write about it.


Thanks for the encouragement.


Thanks for this. As a first generation US citizen, there are times when I feel like maybe I fell short and should've aimed "higher", because I consider how easily programming comes to me that I figure it's easy for anyone, child's play compared to "hard" engineering and science like Physics, Electrical Engineering, or medical studies, law, etc. But it's true, like you said: the simple fact is that I love programming, so I figure that I'm fortunate enough to have found something I love doing so much, and will also (hopefully) allow me to live comfortably while doing it.


++++1. Exactly my sentiments (also 1st gen US citizen here).

ghostoffuture, thank you for a most insightful comment.


Why are all these posts talking about 50?

Retirement in Canada just got pushed to 67, and I think most people expect it will go out to 69 before we actually get to retire (I'm 30 now).

All these titles should say "Do you really want to be doing this at 66"


Given the article, the additional income over of a programmer over the average income earner should be, if saved carefully, enough money to cover the years between 50 and 69 to retire, if you so desire.


You don't get what you deserve, you get what you negotiate. Being good at the job or the market demand or the right size of a company are small variables against your ability to negotiate the rate you want.


If this fellow truly has no passion for his craft, I hope he can find the energy to constantly update his skills when he's 50.

I started in FORTRAN in 1968. Today I'm working in Java and MongoDB and studying Scala and Go.


If you have followed his blog posts for a long time. He is very crafty in all low level programming that most of us are incapable of. And he also wrote his reflection on C++ programming language in C++ Frequently Questioned Answers.

Also I like this post from him a lot. He just likes to say things more frankly.

http://www.yosefk.com/blog/work-on-unimportant-problems.html


Pretty much.

There's also tremendous scope for working from home, or from wherever you want. I can imagine it getting to the stage where job ads for developers will advertise perks like 'work from the beach!'

I'm not a full-time developer (though my work involves programming), but I know what I want to be doing in my 30s, 40s... Not just because I like it but because it gives you so much freedom in terms of lifestyle.


I've done programming, functional management and product management. Today, I'm back to programming for exactly this reason. I work remotely, can take 20 minutes to run my kids somewhere or just to sit and listen to the latest problem at school that day. Given how little time I have left with my kids as kids (and how much I wasted chasing a "career"), this alone is worth as much as my salary.


Is anyone concerned that over the next 10+ years after many people realize how lucrative the work is that supply will catch up with demand?


It's happening already - a lot of my liberal-arts friends are retraining as programmers - but the thing is that it takes 10 years to develop expertise in a skill. So the market for good programmers will remain untouched for the foreseeable future, and that should give the alert ones plenty of time to skate to a different point in the value chain if market conditions start changing.


> Give me a profession remotely close to programming in the following ways: Little or no required education...

> Programming is money for nothing.

This is not called programming. It's called monkey job. Programming requires education (i.e. being a knowledgeable professional in computing, software engineering and so on) and it's not money for nothing by any means.


Agreed. You can do a lot in programming without much knowledge, but a lot of the really good opportunities and interesting work are reserved to those who have superior domain expertise.


Passion only burns out if you consistently fail to pace yourself, or if it wasn't really innate passion in the first place.


> I haven't met programmers who became lawyers.

For what it's worth, I'm a programmer in the middle of law school.


Many do, such as Google's Dan Berlin and huge chunks of the IP law field.


And in constitutional law, Eugene Volokh of the Volokh Conspiracy (http://www.volokh.com/).


If money is your primary motivation for any long term choices, you are doing something wrong.


Honestly, I don't want to read articles about "doing x when you're 50" when I'm 50.


You won't have to worry about that. They'll be hiring 23 year old Stanford kids who don't have a family and who can pull all nighters. They won't be hiring you.


Computer programming jobs in the USA have been in decline since 1990.

Stats from the Bureau of Labor Statistics (USA):

http://www.bls.gov/ooh/computer-and-information-technology/c...

2010 Median Pay $71,380 per year $34.32 per hour

Number of Jobs, 2010 363,100

Job Outlook, 2010-20 12% (About as fast as average)

Especially worth a look:

http://americawhatwentwrong.org/story/programming-jobs-fall/

"Over and over, Americans are told that education is the key to their job future. The more education you have, the better your shot at getting a job that pays middle-income wages to take care of your family. If we as a nation are better educated, the theory goes, we’ll be able to compete more effectively in the global economy, which in turn will generate more good jobs for everyone.

But some major flaws in this theory are playing out today in a field that was once thought to have the brightest future — information technology...

...In its 1990 Occupational Outlook Handbook, the U.S. Department of Labor was especially bullish: “The need for programmers will increase as businesses, government, schools and scientific organizations seek new applications for computers and improvements to the software already in use [and] further automation . . . will drive the growth of programmer employment.” The report predicted that the greatest demand would be for programmers with four years of college who would earn above-average salaries.

In 2000, the Labor Department predicted America would have 839,000 computer programming jobs by 2008. The department warned of competition from "programming businesses overseas where much routine work can be outsourced at a lower cost," but was nonetheless confident that "jobs for both systems and applications programmers should be plentiful." Things didn't quite work out that way. The number of programming jobs has fallen steadily, in part because of outsourcing.

When Labor made these projections in 1990, there were 565,000 computer programmers. With computer usage expanding, the department predicted that “employment of programmers is expected to grow much faster than the average for all occupations through the year 2005 . . .”

It didn’t. Employment fluctuated in the years following the report, then settled into a slow downward pattern after 2000. By 2002, the number of programmers had slipped to 499,000. That was down 12 percent–not up–from 1990. Nonetheless, the Labor Department was still optimistic that the field would create jobs–not at the robust rate the agency had predicted, but at least at the same rate as the economy as a whole.

Wrong again. By 2006, with the actual number of programming jobs continuing to decline, even that illusion couldn’t be maintained. With the number of jobs falling to 435,000, or 130,000 fewer than in 1990, Labor finally acknowledged that jobs in computer programming were “expected to decline slowly.” "


Programmer is a distinct job from software developer.

http://www.bls.gov/ooh/computer-and-information-technology/s...

2010 Median Pay $90,530 per year $43.52 per hour

Number of Jobs, 2010 913,100

Job Outlook, 2010-20 30% (Much faster than average)

Employment Change, 2010-20 270,900




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: