Hacker News new | past | comments | ask | show | jobs | submit login
Developers are the autoworkers of our generation (baugues.com)
291 points by wslh on Sept 2, 2013 | hide | past | web | favorite | 205 comments

Hold on a minute. You can't discuss labor markets without discussing productivity. In the heyday of the automotive industry, the best auto worker in the world produced about the same output as the average auto worker. Maybe they messed up less, but being a genius autoworker didn't let you tower head and shoulders above the competition, because car factories are designed with auto workers as interchangeable parts.

We've tried that with developers. If it had worked, all development would be outsourced to India and the Philippines by now, and developers would be forming unions to lobby for higher pay.

The reality is that the market pays for productivity, in the long-run. Maybe having more junior developers coming out of bootcamps puts downward pressure on wages, but as long as development is a meritocracy where the best performers are much better than the worst performers, there's always going to be a premium on people that really know their stuff. Maybe one day we'll live in a world with lots and lots of really good devs. I don't mind living in that world as much, because I can control my fate to a far larger extent that someone who moved to Detriot in 1960 and was unfortunate enough to stake their whole life on a company pension and a single industry.

EDIT: typo

While that's true for the autoworker example, it's not true for the lawyer example: The best lawyers produced much more than the normal lawyers. I would put programmers roughly on par with the law industry, not with the auto industry.

Please elaborate. Define "best" in the context of lawyers. Is it a graduate of Harvard Law? Or someone who managed to make partner at a major firm? How do you define output for a lawyer? Billable hours? Cases won? Contracts written?

The nice thing about measuring output for lawyers, is that a fair share of them work as either independent contractors, or partners. In both cases, you've got the best proxy for productivity we have: profit.

defining "best" for a lawyer is similar to defining "best" for a software developer. It is production of quality at a rapid rate, choosing the right tools for a job, etc.

Aren't you guys using the economic definition of 'best' as in best = brings_in_the_most_money_per_unit_of_time_expended

They are. This would lead to the conclusion that Linus Torvalds is fairly middle of the road, etc.

Linus Torvalds made millions off the VA Linux and Redhat Linux IPOs, both of whom gifted him with decent stock grants for his role in their corporate success. He's not hurting for money, and in terms of percentiles would easily be in the top 1% among both developers and the general public.

Fair enough, but then it also follows that the youtube founders are significantly better than Linus.

There's always going to be outliers, especially if you allow such messy variables in as 'founding a business'. That doesn't do much to disprove the general metric.

Just because Linus isn't actually selling his work directly, it doesn't follow that the output of his labour is economically worthless, it's just harder to measure.

How do you define "best" for a software developer? Lines of code written? Products shipped? Bugs fixed? Tickets closed?

For both, it's a softer metric. Lawyers are also a good example because a large number of them work in independent consulting practice (where the "best" ones are the most profitable), but there's also a decent population in corporate law where they are paid on a salaried basis and have a less measurable impact on the bottom line.

I am not the one trying to define (or use) the concept of productivity in this discussion. So I don't think it's remotely straightforward. I'm not sure how useful it is either.

A career in law is largely dominated by the "partner track", which in modern software circles is equivalent to getting hired by Google or Microsoft. The bar is pretty high to get in, few ever get fired, and the pay is good.

I would certainly say that a career in IT is defined by which track you choose. Are you familiar with the growing body of evidence that shows not many people are employed in a fashion commensurate with their experience after the age of 40 to 45? That's equivalent to the partner track.

To review it slightly -- You either become a greybeard (partner), you become a manager (could also be considered a type of partner), you become a highly paid consultant but don't achieve your previous salary-equivalent. If you miss your mark and don't achieve one of those, either you wash out of the field, or you have a difficult time finding a place and when you do you accept one that is not in line with your experience. (ex: You were an AIX admin paid $120k/yr, now you are a contractor for Dell making 4-hour response service calls on server hardware.)

And I would also not say that a job at Google or Microsoft is for life (you get stack ranked out pretty fast at Microsoft as you age), nor would I say that the pay's that good unless you're really awesome. I've gotten SF Bay offers, and after you factor for cost of living changes, they're much less than I make for my current company telecommuting from central Texas.

Yes, valid points. You should consider that most people who live in metro areas would consider it a significant degradation in quality of life to live in central TX. I would consider it similar to a decrease in pay.

Heh. It depends. For my lifestyle, it fits perfectly. Living in large cities or places where waiting in line is a frequent occurrence drives my blood pressure up. I'm only about an hour and a half from Austin if I want anything trendy (and my wristbands for ACL just arrived!); everything else comes in by Amazon.

I think the argument is that the skill level and number of people needed for most development jobs will be lowered with platforms and tools that make it easy for a minimally trained user to do it. Someone still has to make the tools and platforms, but implementing them won't take as many people.

Think about how many wildly popular websites run with a handful of people. How long will it be before you don't even need more than a few people in a datacenter? Robots will eventually be able to change out dead drives on a RAID array and inspect the backup generator as well as a technician.

People saying things like "everyone should be a developer" are coding the same people they're encouraging out of a potential career path. Which is fine, but the contradiction gets annoying.

I think that's a key question, but I've never been a fan of the notion that robots (or efficient frameworks) are going to put us all out of jobs. If you look at what we've actually seen in the last 20 years, efficient frameworks enable entrepreneurship and wealth creation on a scale that wasn't possible in the past. Sure, there are fewer people employed doing nitty gritty stuff, but the size of the economic pie is far bigger than it once was, largely because of labor-saving technology and frameworks. If you want to argue that better frameworks will drive down wages, the argument to make is that better frameworks will reduce development time without facilitating wealth-creation.

EDIT: maybe this will happen, I can't predict the future. Rereading your post, I guess this is more or less what you were saying. But then the question is, what's going to change to reduce growth?

The argument is that the pie is already unevenly distributed. In the future, it will be even more unevenly distributed, and the skewing of the distribution will outpace the growth of the pie.

No. Wealth will be more volatile. The smart will get richer.

That doesn't contradict what I said. It may be concentrated among the smart, but it will still be concentrated.

More importantly, the people at the top need the people lower on the ladder to pay their salary, either through companies that advertise or by paying directly. There may be an implosion at the top if they automate too many jobs away before magic market forces create replacements.

>Think about how many wildly popular websites run with a handful of people.

You're talking about the "Silver Bullet," [1] whether you mean to or not. There have been hundreds of attempts to reduce the complexity of development, starting in the '50s and continuing pretty much continually until today. And just as Fred Brooks describes in the book I linked, that kind of productivity increase doesn't happen in software. And won't happen in software.

You do get ways of better managing complexity. Look at object-oriented programming, for example. That's a recent development, right? Sure, as long as you're old enough to consider the 1970s to be "recent." [2] Not me, thanks. ;)

The best you do get is a single problem being solved in a somewhat general manner. The CMS gives us a generic web site/blog. Square and others give us easy commerce integration. And so on: Specific common problems solved really well.

Yes, these are things that previously took many man-hours of time to create one-off versions of, but what happens is that people want more and more complex (and differentiated!) functionality in their web sites or apps.

And that differentiation is by definition not able to be packaged in bulk. As soon as it gets interesting, I don't care how easy you've made the "language" that specifies it, you still need a programmer to implement it. Or someone who can think like one.

And most people not only don't think like programmers, they firmly believe they can't think like programmers, and so refuse to even try to learn how. Or at the very least they have an image that programming is dull or dry or boring.

There are still huge barriers to people entering programming en masse. And even if they did, it would be the lowest complexity jobs that would be harder to get -- the ones where the barrier to entry is really low.

I work tasks a few tiers of complexity above those jobs; I'm not worried about being replaced by a new wave of college graduates any time soon.

[1] https://en.wikipedia.org/wiki/No_Silver_Bullet

[2] https://en.wikipedia.org/wiki/Object-oriented_programming#Hi...

You had toolmakers in the auto industry too.

People saying things like "everyone should be a developer"

In a larger sense these people are simply saying "we need more skilled labor"

Think about how many wildly popular websites run with a handful of people.

And yet Google, Amazon, Groupon, etc can't always get sales or support done correctly without people. Very few companies are massive commercial successes without a large amounts of people. I can only think of a few off the top of my head, and they aren't the norm.

And what's different is that auto workers weren't also building and designing the factories they worked in. Certainly there's something to be said for being the one who can design and build a tool vs being the one who can simply use it.

And this also means that developers in this case are evolving, we are technologists. Which is more like the car designers. And these guys are still around and getting payed a lot, and probably will be for a long time, designing spaceships. Software engineering, which also requires original thought, also will never disappear. So I would say the original authors analogy is dead wrong.

I'm sure CAD software made lots of car designers redundant. What most people in our industry seem to not realize is the intense power accumulation laws at work. 1 Designer can now do the work that 50 could in the 50s. All that wealth is now going to one person (or whoever captures the wealth they would otherwise generate -- in this case car co. shareholders and customers).

Once the gas engines become obsolete and everyone's car runs on an electric motor, that's going to make a lot of designers hit the unemployment line. A gasoline engine has thousands and thousands of little parts and associated systems. Electric motors are very, very simple by comparison. Someone needs to design and manufacture all those little parts.

     In the heyday of the automotive industry, the best
     auto worker in the world produced about the same
     output as the average auto worker
Agree. Also, there's a strong trade union theme to the history of autoworkers which doesn't really map to the developer experience. Something related though - what about the toolsmiths who built the factory processes and machines? I'd guess that with those guys there'd have been a big gap in productivity, and there'd have been a strong collaboration/teamwork angle and theme of iteration. They would have been scarce - maybe they still are.

I agree that parallel is really interesting. Its especially true with the classic Agile stuff, where a lot of the processes are explicitly borrowed from the automotive industry, particularly Toyota: Kanban (lean process management), kaizen (collective ownership as a means to reduce bugs/defects), the notion that it's better to fail fast and stop the line, rather than send a defective product to downstream processes.

I believe a more accurate analogy would be

helpdesk/admins/sysadmins/support/cable pullers map to factory line workers


software devs map to mechanical engineers

Detroit has always had genius level engineers doing amazing stuff. Totally different issue if any of it is ever allowed out the labs into products, but ...

Well an production line's efficiency is defined by how well the line is engineered - the humans are effectively fleshy robots.

Though there are/where a lot of "spanish practices" in traditional engineering.

> Don’t get too comfortable. Don’t get locked into a language. Don’t burn bridges for short term gain. Keep your tools sharp. Learn soft skills. Build an audience. Save some money. Network. Read.

This is great advice. The big issue with the rust belt is that building cars was all car builders knew how to do. Most didn't have the sustained practice with learning new things to adapt to a changing environment. I wouldn't keep it to programming languages and technologies, or even auxiliary skills like marketing and advertising. Keep your mind sharp with as much depth in as many different topics as you can stand.

I agree this is great advice to keep your skills sharp.

But, as far as auto worker and programmers being the same, I totally disagree. My hometown is a factory town and, actually, one of the few auto plants in the area that didn't get shut down or moved to Mexico.

The average plant worker (I know many, many of them - most of my high-school class in fact) is someone who may or may not have finished high school. They have no job skills except a very specific skill for their particular station on an assembly line. They hate their jobs and they don't generally spend any time trying to learn anything new. I don't say this to judge or criticize because it's their life, they make a decent wage (a fantastic wage, in fact) and it doesn't matter to me what they choose to do. But, I do see them as being at extremely high risk of losing their comfortable lifestyle because if the factory were to ever get shut - they would be completely unable to get a job at their salary level. They are totally dependent on the factory and their skill is completely worthless anywhere else.

This is nothing like any programmer I know. You can't get decent at programming with this mentality and you can't remain a decent programmer without continuing to learn new techniques. Most programmers that I know tend to always be curious and want to learn more. Although some of them don't want to take their work home, at least they like to learn new ways to be more efficient.

I would liken programmers more to a mechanic or a carpenter. It's a more general skill that you can take with you from one place to another. I think the value may go down if more people go into it, but the industry is not as likely to cave in so fast as it did for unskilled plant workers.

This is a problem with most professions though; most people feel they learnt something (in or outside of the educational system) for years and they are automatically entitled to a job for life.

As a programmer I try to have enough hobbies which can be used to make money; making/selling icecream (made enough with that this summer for 7 month of living including the working months), making/selling beer, making/selling cheese, welding, creating little RVs out of normal vans, electronics... And that is next to me not seeing anyone 'hacking a bit of WP' replacing any but mediocre coders anyway.

Yes, programmers keep automating their own work. And we keep trying to find ways to bring in new programmers. But software keeps eating the world. I don't see an end to this. The auto-industry was largely reliant on a very specific vertical.

Also, programmers (unlike auto workers) have not locked in long term benefits that hamstring a company. In fact, we've embraced taking on the risks of the company and staying nimble, hopping around and trying new things. If Google's whole workforce were guaranteed some sort of long term compensation for retirement, we might worry, but their long term promises are only via their stock price.

programmers (unlike auto workers) have not locked in long term benefits

This is true in many of the developer communities. But I work for a local government agency as a programmer. So, I have long term benefits and a retirement plan, and I assume there are lots of programmers in this category, they just aren't publicized like the start-up and web community.

I am thankful for the influential programmers that live more risky and work at start ups, but there is also a place for programmers that have a secure job, working at companies/organizations with specialized software. However, I know that many bad workers have been created from these environments...there is always a group that will ruin it for everyone.

The vehicle industry covers a lot of verticals. You've got your cars and motorbikes for consumers. Your 18-wheelers that stock large retailers. Your smaller trucks for home deliveries. Pickup trucks and vans for tradespeople. Special logging trucks and refrigerated trucks and vehicle transporters. Backhoes and bulldozers and oil tankers and cranes and RVs and quadbikes. Look around you right now - if it isn't air or water, chances are it travelled on a vehicle to get to you.

And that's just vehicles that travel on the roads, there's also rail air and water vehicles.

Covering a lot of verticals does not exempt you from price competition.

As usual for HN, all of the most upvoted replies disagree with the article. Let me play devil's advocate and not disagree. Sure, the analogy isn't perfect, but what happens if we take the idea seriously? [1]

Isn't it amazing, the lack of sacrifice necessary to make fat stacks of cash writing software? Even when law school was thought of as a golden ticket, it was a lottery, and to win, you had to sacrifice your personal life for a decade before you made partner. And those hours looked relaxing, compared to medicine and investment banking. Back when auto jobs were a sure thing, they were also sure to use up your body by the time you could retire, and that's if you were lucky enough to avoid a career ending (not to mention crippling) injury.

I just met a kid who graduated with a BA in philosophy who was offered 4x the median U.S. income [2] at a software company. A prop trading firm offered him 50% more, and the software company matched the offer. One reason he turned down the offer at the prop trading firm is because people there regularly worked 50+ hours a week.

The most upvoted article on HN from a couple weeks ago was full of comments debating whether 20% time is really 120% time, at a company where mid-level ("senior") engineers can have total compensation that's something like 8x the median income in the U.S. And was outrage! Outrage!

Last year, coursera ran a course on deep learning from one of the guys who's widely credited with inventing deep learning. The pre-requisites were some basic programming, and, either, google + wikiepdia, or a basics of machine learning course, like the one that's offered on coursera regularly. After taking the course, you'd have enough understanding of deep learning to reproduce papers published that year, on the state of the art in machine learning.

Never have we had a privileged class that's so easy to enter. It's genuinely surprising that this is the case. You don't have to be born into the aristocracy. There's no licensing body limiting the number of developers, and no hazing process that makes requires giving up the best years of your life. The knowledge is available to anyone with a computer and an internet connection, and those are cheaper than they've ever been in human history. You might say that there's just not enough "smart" people in software, but, that's part of what's surprising.

Why do so many people who want a career involving intellectual curiosity study philosophy or mechanical engineering, when CS also gives you interesting problems, and happens to pay much better? Why don't people switch? Unlike with ME, CE, etc., you don't have to take the PE and get all sorts of licensing to find work. You just need to be able to pass some interviews. I met folks at Hacker School [3] who switched from econ, ME, OR, and other quantitative fields to CS, because you have more freedom to pursue ideas, can do more without being part of a huge team that makes you a tiny cog in a giant machine. And, by the way, it pays twice as well. But, it's still not common to see people switch.

What's the barrier to entry that's keeping us from being flooded with supply? I'm told that CS enrollments are now at record highs, past even the numbers we saw during the dotcom era; perhaps the answer is that there is no barrier, and we're about to get flooded with supply.

[1] In his notes, Lectures on the History of Moral Philosophy, Rawls talks about how his students eagerly come up with clever refute the propositions of great thinkers. He takes the opposite approach. It's been a long time since I've read this, so I'm very loosely paraphrasing, but it's something like, if you disagree with someone who's clearly very smart, maybe it's worth taking the time to figure out why they hold their opinions rather than just dismissing them.

[2] median personal income in the U.S. is about $30k/yr.

[3] https://www.hackerschool.com/

the lack of sacrifice necessary to make fat stacks of cash writing software?

I don't know about you, but I've sacrificed an incalculable amount of positive social interaction sitting in front of these damned screens. My programming skills weren't spontaneously conferred upon me, as a kid I'd spend weeks at time building foolishly impossible-to-complete applications that I'd eventually leave to rot as I hopped onto the next cool programming technique that I finally understood the power of. There's a considerable amount of my time not spent interacting with people I enjoy, even today, because I am so compelled to build programs. Time spent in the pursuit of understanding these gadgets is the sacrifice made and the barrier to entry.

Though, I do believe automation will catch up with developers eventually; there will inevitably come a point where general purpose programming experiences low demand as the explosion of software begins to cover the majority of conceivable business use cases.

You're making the wrong comparison. The comparison shouldn't be "sitting in front of a screen" vs socializing. It should be "sitting in front of a screen" vs the amount of work it takes to achieve a similar career in another field vs the amount of work it has historically required to achieve a similar career.

The comparison is apt with regard to unemployed individuals seeking to break into the software industry. My point is that a non-trivial amount of sacrifice is required to hone these skills; no, it's not back breaking labor, but most people aren't inclined to spend 6-10 hours a day sitting at a PC working through fake problems in an effort to understand how one authors software. That's the world we live in now. This doesn't mean those inclined to do so are smarter, excluding the outliers, they simply fall into a category of individual that is comfortable banging their head against a compiler for hours. These people read code, they ask questions, they scour google, they devour books, blogs, mailing lists and error logs and in time a solid understanding inevitably ensues.

Most people aren't inclined or cannot afford to work on something for extended periods of time without the explicit promise of compensation. There are a lot of dreamers who aspire to the rockstar lifestyle but for most of them guitar hero is about as far as it goes.

You are exactly right.

My boss is one of these self-loathing software developers that constantly sees it fit to remind me that we're all privileged sissies who get to play on computers and get paid obscenely well for it.

I don't buy that. He may feel that way, but I didn't start off in software development. I worked my way into it before there was ever a coursera or any other "become a developer quick" program. I did this by working a full time job to pay bills, then coming home and spending another 8 hours a day (and entire weekends) learning and honing. It would take 2 years of these 100-hour weeks to get to a point where I could actually begin doing this work at a professional level.

So I don't buy it. I hit a lot of walls and wanted to give up many times. And I've always loved computers! It still takes a special person to do the work we do. It wasn't like that for auto manufacturing.

> but I've sacrificed an incalculable amount of positive social interaction sitting in front of these damned screens

Sorry to call you out on that, but that is a tiny sacrifice to make compared to the past (which involved sweat, blood, immigration, exploitation to name a few). Even calling it a sacrifice is kind of sacrilege. Plus, you most probably did a lot of social interaction on your IM.

There's a big (hehe) elephant in the room here:

At least ditch-digging and carpentry and whatnot resulted in having some exercise in your body. Sitting in front of a screen (or standing, or whatever) doesn't do much to increase health, improve posture, or maintain eyesight.

I may be projecting a bit here, but most programming jobs (excluding the magical land of milk and honey and catered lunches and in-house gyms that apparently is the norm in SV and NY right now) don't result in you being any healthier or more social.

We are in a profession which is self-selecting for making us physically unattractive and economically replaceable (if we do our jobs correctly, it shouldn't be hard to replace us on a team).

A few dozens of years of physical labor can wreck your body harder than being sedentary - think about the accumulated damage to the back, joints etc. from the unnatural, repetetive and prolonged strain. Also, in many (most?) climates working outside takes it toll as well.

Oh, I don't mean to completely fetishize that lifestyle--many steelworkers, for example basically just kind of wear out after a couple of decades of hard work.

That said, there are still clearly disadvantages to being coders.

I definitely agree with your sentiments. What is also missing from this article is that from a demographics perspective, it is much easier to work in an auto-factory than to do software development. As a result, the pool of people that can work in a factory is much, much greater than the pool that can work as software developers.

This opinion of my mine does not have anything to do with how hard the work of a software developer is but more to do with simple human traits. At a bare minimum to work effectively as a software developer you need to be a good learner, ability to try new things, be able to step out of your boundaries and push yourself, discipline to sit in front of a computer for long stretches of time, and comfortable with change. These traits are in some ways the opposite of an ideal factory worker.

There's another interesting similarity not discussed in that autoworkers in, say, Wyoming, were pretty thin on the ground and not so well paid. In the Detroit area, sure there was competition and excellent pay. But in rural Wisconsin there was one (of many) rural assembly plants. Pay wasn't awful, but it wasn't as amazing as working in Detroit. And there was "a" plant. You get fired, you better move out of town because there is only one employer (now zero)

In the same way, if you're a software dev, yes, you can get eight times the average salary in two geographic areas where the cost of living is only ten times higher than the rest of the country (LOL). However, outside NYC / SV... pay is still good, although lower, and jobs are Extremely thin on the ground. Your average non-coastal grad is more likely out of the field (UPS, starbucks, unemployed) or at a helpdesk or admin doing non-dev work, not actually slinging code as an actual dev. If the schools insist on slurping out a couple hundred grads a year, and there's only a couple software dev positions total, you do the math. If anything, the concentration is even more intense in software development than it was in automotive manufacturing. GM had a major plant in a podunk city in a podunk county in rural Wisconsin, well, at least until it closed. Wake me when Google, YC, and Facebook open branch offices in rural Sparta Wisconsin.

I believe this is a large part of the lack of interest. 99% of the country desires not to live in SV or Manhattan, therefore the lack of interest in becoming a developer.

I would agree with the legendary enrollment oscillator theory having seen innumerable cycles inside and outside CS. Everyone knows there's infinite demand for new nurse grads everywhere in the country for decades, right? LOL tell that to my cousin's newly graduated wife.

Good comment, but I have to disagree with it.

The web and app stores are extensions of google/apple etc. There's people making money across the country and around the world.

The difference between auto workers and programmers is that programmers are not workers, but 'inventors'.

A better comparison is mechanical engineers in the 50s and programmers today.

Good mechanical engineers designed or started factories, and there was so much work that the backlog has still not been filled even today. The same can be said for programmers today.

There is the 'creative class' and everyone else. The true creatives never had a problem finding work, and that's the real 'education crisis'. Far too many 'creatively illiterate' being churned out by our failed education system.

Although not Podunk by any means, here's Google's Wisconsin satellite: http://www.google.com/about/jobs/locations/madison/

I disagree. I live in Texas and as a recent CS grad there is no shortage of places trying to hire me. Pay is good (new grads starting at $50-60k in cheap cities like San Antonio), jobs are plentiful.

I graduated in 2012. From our CS department, every student who at least managed a B average walked right into a real dev job.

You can get jobs in our area too (Northeast US), but they just ain't paying what they used to pre-economic downturn. Now that they know they can get devs cheaper, they just don't pay anywhere near as well. So, here you try to hold on to those old jobs, like it or not.

You're welcome to come down here. Salaries just seem to be going up in my area.

Caveat lector: I co-founded Dev Bootcamp (http://devbootcamp.com), which might inform your response to my comment.

I agree with you that, as far as I know, "Never have we had a privileged class that's so easy to enter."

There is something qualitatively different about programming, though, than almost every other field. I have a hard time describing it, but the best I've been able to do is this: the output of the field is also the input to the field.

The tools programmers use, for example, are built by other programmers. The same can't be said for auto-workers. Among other things this means if I get twice as good as a programmer I have the opportunity to increase my leverage super-linearly. There's a feedback mechanism at work that's not at work in many other fields, let alone fields that are so lucrative.

I might put scientific and mathematical research in the same bucket, for example, but even writing doesn't fall into this category. When it comes to writing, the means of distribution are governed entirely by non-writerly things.

Even the raw economics are different. We'll stop producing cars when the marginal profit is zero, but the marginal cost of software is zero-plus-epsilon.

The world we're in is new and strange and although I'd usually be the last to say it, I'm not sure the same rules apply to software. Those are "famous last words," of course, but my point is that I don't think it's so easy to put it in one bucket or the other.

It's sufficiently different from both I think we have to reserve judgement rather than prematurely pen The Story of Software™.

Detroit was also sunk by massive pension costs and held hostage by union requirements.

Software has much more creative destruction - the startups of today paying ridiculous figures can go bust tomorrow and wages collapse. That happened after the dot com boom after all.

I do think there will be downward pressure on wages, especially US ones, it just won't be a sudden implosion.

What's interesting is just how expensive US developers are compared to other Western countries. I can see a future of people moving across the Atlantic, especially more established companies that don't need "rockstar ninjas" - although plenty of threads on here about healthcare and government snooping encourage even them to move.

Why do so many people who want a career involving intellectual curiosity study philosophy or mechanical engineering, when CS also gives you interesting problems, and happens to pay much better? Why don't people switch? Unlike with ME, CE, etc., you don't have to take the PE and get all sorts of licensing to find work. You just need to be able to pass some interviews. I met folks at Hacker School [3] who switched from econ, ME, OR, and other quantitative fields to CS, because you have more freedom to pursue ideas, can do more without being part of a huge team that makes you a tiny cog in a giant machine. And, by the way, it pays twice as well. But, it's still not common to see people switch.

Because CS is seen as a bunch of unprincipled, flash-in-the-pan geeky bullshit by most people, not everyone has the talent to be a good programmer (the industry has too many already, the last thing the world needs is more mindless morons plugging libraries together without the foggiest idea of what is going on) and people pursue what interests them. CS has a bad reputation from both ends - the more pure subjects like Philosophy and Math view it as intellectually-inferior (my Analysis professor, who was probably at least 75, obtusely claimed that programming a computer is "easy" and "trivial") and the more concrete, practical subjects such as Electrical, Civil and Mechanical engineering tend to make fun of the CS people (and harbor resentment towards them) for making millions off of websites that foster self-indulgent behavior while they design airplane engines, artificial hearts and power grids.

I have at least 10 friends who are in the technology industry but don't know how to program. Every single one of them have been saying for years how they want to learn. None of them have.

It takes more sacrifice than you think to learn new skills.

That barrier is dropping. Years ago becoming a developer meant going back to school for another 4-year degree. Expensive, time-consuming, and necessary for most employers to take you seriously.

You could self-train, but having seen the insides of recruitment processes at most companies... that's a laughable thought. For all the wankery that comes out of our mouths about meritocracies, the vast majority of software companies are still extremely enamored with credentialing, especially from prestige schools.

But now we have hacker schools - hacker schools where there are actual employers with actual money who are willing to employ the results. I know two people who are going through it right now, and the interest in hiring them from local startups is much, much higher than I ever expected.

The level of sacrifice required is dropping, and it's dropping like a rock. We will see more and more conversions, and there will soon be a flood in supply.

The biggest barrier is making the choice to learn a new skill - which has been a huge barrier for humans since the beginning of time.

For example, learning Spanish would be a huge asset where I'm from (Texas). Hardly anybody does it, however, since it is hard to learn a new language. A new website that cuts the time to learn a new language from 6 months to 3 months wouldn't cut it for the vast majority of people.

>> The level of sacrifice required is dropping, and it's dropping like a rock.

What have changed , just ruby on rails type frameworks , or something beyond ?

Employers. It was never that difficult to become a novice developer, but convincing anyone to hire you was the hard part. No CS degree (or math, or engineering) was a death sentence to any resume at the vast majority of companies.

The new model is to skip the CS fundamentals and instead crash-course you on frameworks and languages that are being used in-industry, then toss you into the deep end. If you float, you've now got the "experience" part of the dreaded "experienced required" part of any job posting.

The hard part was getting employers to buy into the scheme. "We've got this guy who has next to no idea about algorithms and data structures, but will do fine as a low-level Rails grunt" didn't sound very attractive before, but considering how hard engineering hiring is right now, some companies are biting.

I for one am intrigued at the inversion of priorities and curious to see how this will play out. Up until now our educational process has been to fill your head full of theory and leave the practical application up to your own time. This has meant truckloads of CS graduates who aren't actually capable of performing real-life engineering. The new scheme is to get you working first and foremost, and assume that the fundamentals and theory you missed out on will be filled over time. As someone who never got their CS degree to begin with, I'm rather partial to the latter approach.

Good old vocational education.

It's not the sacrifice which you should worry about. These things don't happen quickly.

Watch the curriculum of young children change. 10 years is all it will take.

You honestly think programming will become such a vital skill in everyone's job that it'll be taught along side reading and math to young children?

Even at the high school level students are forced to learn algebra and calculus but they don't really learn it. They memorize a few formula and apply them on tests but how many people can even take a simple derivative a few years after leaving school? Just cause someone took high school calc doesn't mean they're challenging for the jobs of mathematicians.

> You honestly think programming will become such a vital skill in everyone's job that it'll be taught along side reading and math to young children?

I'm in the UK, and yes: http://www.bbc.co.uk/news/education-23222068

> They memorize a few formula and apply them on tests but how many people can even take a simple derivative a few years after leaving school?

You're right about this. But the percentage of people that will learn will remain the same, the quantity of the population that were taught will increase. It will have an effect.

It's worse than that. Most people don't take calculus in the US...

10 years matches my experience as well. That's about the length of time to become truly proficient at learning how to learn technology, which is probably more important than merely learning technology.

Considering how well most schools teach writing or math I wouldn't worry.

I would argue that software engineers do have a long hard road to becoming successful much like a doctors or lawyers however in most cases it's been amortized over their life using computers and much of it driven by the desire to learn rather then the requirements of some degree. I would go one step further and say that if you pick any random person off the street and throw them into a college CS program the vast majority would not do well even if they were very intelligent, there is a certain personality type required to excel in writing code if you're not good at concentrating on a single task for hours at a time well I'm sure there is something else out there for you. Also lets not forget that finishing a degree does not make a good engineer, shipping production software does and that is not something you can learn in 9 weeks or even four years at college. The lower end jobs may get tighter as time goes on but I don't see an "Auto Workers" type future until Skynet gets off the ground (Machine Learning FTW>?)

>perhaps the answer is that there is no barrier, and we're about to get flooded with supply.

One of my earliest memories is listening to my old grandpa give multiple arguments as to why computers were a passing fad. Needless to say, he was somewhat incorrect. Just because something is on the ascendant doesn't mean it will hit the corresponding descendant anytime soon.

What killed autoworkers' jobs more than anything was automation. They had simple, repetitive jobs that anyone could do; and one day that anyone included robots. It costs nothing to write software with software, you don't need big hulking robots to do it. But it's also a job that basically involves solving frustrating, novel problems each day. Not something to be easily replaced by a robot.

To boot, the number and kinds of computers in existence is significantly increasing each year. Smartphones, which became wildly popular in a mere six years, are the most egregious example. The number of developers may be growing a lot, but their tasks are not getting fewer either.

>> What killed autoworkers' jobs more than anything else was automation.

Many, many things killed autoworkers jobs but automation was the least of their worries. If you want to credit it to one thing, it'd be competition.

The non-American automakers made cars that lasted longer, got better mileage, and were more reliable. The Big Three could just shovel shit onto dealer lots and it was gobbled up. Everyone has getting rich. Then it came to an end.

The Japanese car makers are even more into automation than we North Americans and Europeans are. And the results are actually better: people make mistakes, they are not precise; machines on the other hand are very precise.

Automation most definitely was killing the American auto worker...then China comes along and starts killing automation with very cheap labor. But we don't buy cars from China, the same Japanese cars that we laud in the states are derided in China for being unreliable (given that they are made in Chinese factories without automation). There is a lesson somewhere in that.

I'm not so sure about that. Most car factories operate in a pretty similar way ever since the Toyota way and total quality management come out decades ago. Although parts of the assembly line are fully machine driven (chassis welding, spray booth), there are a lot of human zones for assembly.

Yes people do make mistakes, but if you've seen their procedures on how to work, they get instructions right down to how many rotations a bolt requires, then where to put the spanner back down. Sounds micro-managed, but it's how the robotic sensors detect if people are working to the procedure and hence quality targets are being achieved.

China isn't much different (nor Thailand). Back in the 80s & 90s when Japanese electronics and cars were flooding the market everyone saw them like 'cheap junk' akin to how we see China's products. But over time management learns and products get better.

Toyota's reputation here in China is much lower than I remember it being in the states, and the only difference are the Chinese JV factories, which I guess are just inferior in quality. The level of automation in Chinese factories is much lower than in Japan or North America given that (a) labor is cheap and (b) importing machinery is tariffed and very expensive.

But Toyota's reputation is nowhere near as bad as that of Chinese brands. No one wants to drive a Xiali even if it is essentially a Corolla in design.

Japanese electronics and cars were already considered to be very good by the mid 80s. Japan ALWAYS had a strong culture in design and quality, and it was only post war where they had to play catch up again; there is no mystery about Japanese success. The Chinese, on the other hand, have a much greater problem of converting from a primarily rural to an industrial economy, a problem Japan did not have post war (the Meiji restoration already happened while the Chinese were going through late Qing chaos). I'm not experienced with Thailand's auto industry (beyond that they dominate in pickup trucks).

We joked about Korean cars for a while, it will take time but Chinese cars are coming.

The Koreans likewise adopted automation. The Chinese cars are not getting good until they get over their addiction to cheap labor, and they still have vast reservoirs of that.

It costs nothing to write software with software, you don't need big hulking robots to do it. But it's also a job that has lots of variety; each day you have to solve unexpected, frustrating, novel problems. Not a task for the average robot (or even the average person IMHO).

We have software "robots" that write software and many of us use them frequently. They're called compilers. They do the repetitive and detailed stuff, often better than we can, due to pre-programmed knowledge. Programming is still challenging. That won't end in the next 50 years.

>>Programming is still challenging. That won't end in the next 50 years.

So is building cars. Or anything for that matter. Problems in every profession have just gone to a whole new level.

When automation kicks in, you won't need humans to go and solve trivial issues. And there fore what will be left is jobs for people who would like to work on things that can't be automated. Stuff like solving problems no one else has solved before. And creating something or improving something. And things on those lines.

Such jobs are always going to stressful, with high chances of failure, will require thinking and working very hard, with repeated sacrifice to your personal and social life. But at the end if you do it right, you might win big.

Currently that is programming, tomorrow it will something else. So as long as our species exists we will have problems to solve.

And that won't end in the next 50,000 years or probably ever.

Not sure if I'm agreeing or disagreeing with you, but I'd say this is exactly why programmers will do fine for a long time to come.

What we do, assuming we're not cranking out wordpress sites with existing templates, is solve problems. And so when we find ways to automate particular common scenarios for, say, certain types of websites (which I suppose Rails and the many CMS' do), we have probably already moved on because we were bored cranking out these things in favor of solving problems.

Contrast that with the auto industry. Car building may be hard, but much of the job loss in this industry consisted of work that was easily automated, and not solving problems.

Furthermore, part of this 'problem solving', in my experience, involves a lot of interaction with other people. This is not easily replaced by outsourcing to skilled programmers who are 1) non-native culturally and linguistically, and 2) far away.

In a way, we are better compared to plumbers or mechanics, 'full-stack problem solvers'.

> We have software "robots" that write software and many of us use them frequently. They're called compilers.

Compilers automate a simple but tedious translation process. They do not "write programs", they merely translate (hopefully in a deterministic way) one stream of text (PL code) into another stream of text (machine code). They apply no creativity to the problem, and indeed was once done by hand with what were essentially secretary pools (Grace Hopper got her start there, thankfully she moved up pretty quickly). Compilers eliminated this work, but the persons handing the high-level programs to the "human compilers" (the former usually men, the latter usually women, the 50s were pretty sexist) still had a job that was relatively the same (just now they had to deal with punchcards).

> Programming is still challenging. That won't end in the next 50 years.

Programming ends as a profession of course once we hit singularity, which is anywhere from 20 to 100 years away depending on who you ask. We already do not code many systems by hand, but instead meta-code algorithms to generate these systems from corpus training inputs (aka machine learning). No one would try and build a speech recognition system by hand anymore. We will see machine learning increasingly encroaching on what used to be pure programming tasks.

Who the hell offered a fresh grad with only a BA in philosophy a development position with a salary of 180k!?

How does personal sacrifice correlate with market price for your skills? Maybe it's progress when someone with a liberal arts degree (and presumably some programming experience) can get competing developer job offers based on his skills.

I agree with your sentiment about the most-upvoted posts but I don't see this as a counterargument.

  How does personal sacrifice correlate with market 
  price for your skills?
Requiring personal sacrifice (like medical training does) limits the supply of labour, and limiting supply drives up prices.

I think you would be surprised which developers have a liberal arts degree and which don't.

I know of at least five or six developers who currently have or in the past have held very lofty roles within international open-source projects who have liberal arts degrees.

The irony is that we're all posting this on a site run by Paul Graham, who majored in Philosophy.

Why do so many people who want a career involving intellectual curiosity study philosophy or mechanical engineering, when CS also gives you interesting problems, and happens to pay much better?

Because pointers and recursion are hard!

As things get more automated, jobs will require less and less sacrifice, and more and more software :)

Many interesting arguments here.

I work at a software consulting firm, that charges $300+ per dev per hour. Excellent salaries, benefits, gaming consoles, free drinks and meals at the office, etc. Still the majority of the developers we're capable of hiring are incapable of understanding and applying concepts like monads, SOLID, low level async. Maybe the higher supply will only drive down the salaries of PHP&Co crowd.

Exactly. I came upon this conclusion back in 2009. It took me six months to emotionally accept it, and when I did, the conclusion I came up with is to hasten it. To deliberately write myself out of a career. So yes! Build up your network, build up your resources. Enjoy the good times and store things up during the times of abundance. Figure out how to completely replace having a job as your source of income (that is, you might still have to work, but you wouldn't necessarily have a job). Solve hard problems. Those problems might not necessarily be in software.

"Winter is coming" :-D

how much does 3/4 years at a tier 1 college cost these days

> I'm told that CS enrollments are now at record highs

Given the high dropout rate of anyone attempting to learn programming, I don't think enrollment rate is good metric.

> What's the barrier to entry that's keeping us from being flooded with supply?

Programming is hard; really f'ing hard, for most people because it requires critical thinking continually and learning continually.

Stop patting yourself on the back. Seriously.

Because obviously, no other job requires critical thinking and learning continually. These are "skills" that are in no way related to programming, and do not explain an inclination towards CS rather than any other science or the myriad of other academic disciplines. And even outside academia, not every job is just that of the "sheeple" who "mindlessly" "slug away" in their "boring" and "thoughtless" jobs.

If you do a job for a long while, chances are you will have to adapt to new developments. Take craftsmen for example. Every year, new areas become part of their trade, from new building materials to new requirements, from new technologies to new standards. The electrician of today might also have to deal with laying network cables, with photovoltaics etc. Carpenters deal with new materials for insulation, new structural possibilities and requirements etc. etc. Secretaries and office workers moved from typewriters to PCs, from OS to OS and often from program to program.

I know it is particularly popular in IT to foam out of the mouth about the "clueless" average users who do not get the simple feature X or Y of a given software, but at the same time, the same people will happily admit their own inaptitude in many other professional areas.

There have been numerous threads on pg's "founders' accents" remarks, and there, all of a sudden, it is the most normal thing in the world that not everybody finds the same things equally easy, important or possible. Yet when it comes to programming, there obviously exists no such thing, rather, there are naturals, those gifted enough for this divine trade, and then there are all the others. The average user, with stress on the average as opposed to the extraordinary.

I am sorry that this rant is directed directly at you, but I find the sheer arrogance of your two one-line remarks baffling.

Arrogant, maybe, but there is at least a kernel of truth.

I've done a lot of trades. I'm not a master level craftsman or anything, but I can build a house to code using just my current knowledge. The only thing I've never done is masonry, but I'm told it's not too tough. So that includes carpentry, electric, plumbing, fine wood working if you want things like molding and wainscoting, and more. I'm a very good but not quite great artist as well.

None of those things is as difficult, conceptually, as programming is. You live in a bubble surrounded by very smart people, so I honestly think you overestimate people's capacity for abstract thought. I'm confident that pretty much any programmer could learn to be a plumber if they cared to, but the reverse is not true.

And I'll go a step farther and say that while "easy stuff" like basic web development is out of the range of most people, the harder stuff like algorithms, game engines, embedded systems, is in another universe. No amount of training could help for a very large proportion of the population.

It's not popular to say because we like to think everyone's a special snowflake with some predetermined number of "ability points," just allocated differently, but the bell curve is real and some people just can't do what we do.

The reason we are currently enjoying an alternative employment universe, insulated from the rest of the economy, is that the mass of unemployed people predominantly couldn't break into this field if they wanted to.

If they could, they damn well would.

>The only thing I've never done is masonry, but I'm told it's not too tough.

My wife paid a contractor to show her how to cap a foundation. He spent two hours with her, and we saved $50k+ by doing the rest of it ourselves. So no, not too hard.

We don't have enough of the rest of the skills you enumerate to think I could build an entire house to code, but your analysis is spot on.

As a game developer/embedded systems engineer, I also agree that there are tiers of development complexity. Even within these fields there are clear levels ability.

Some of the stuff I do on a daily basis is well beyond the typical HTML/JavaScript/PHP developer -- I spent years learning to be a good low-level developer and honing my skills, not just a few hours. And I've directly observed people who were plenty self-motivated who run into an "abstraction wall" that they can't get past; I've even spent hours with some people trying to come up with ways to help them understand, even though no one ever did that for me.

From the other side it's extremely clear that there are tiers of developer skill levels, and that even the bottom tier is out of reach to much of the population.

>It's not popular to say because we like to think everyone's a special snowflake with some predetermined number of "ability points," just allocated differently, but the bell curve is real and some people just can't do what we do.

I think the difference on "ability points" is that, by spending concentrated time on learning, you can actually earn extra ability points. Just like there aren't "muscle points" that are distributed differently between people: You exercise your muscles and they get stronger. "The brain is a muscle" isn't entirely a bogus concept.

Totally disagree with that.

As someone who was once a non-programmer but became one, and as someone who as taught and witnessed former 'dumb guys' as you're trying not to verbalize transform into productive programmers, I first-hand experience that contradicts what you're saying.

The data from Khan Academy also suggests there's no 'dumb people' out there. Time and again, they've found formerly incompetent learners to catch up and often exceed the class. (Salman Khan himself taught his niece from behind the average level grade 8 to university level within 2 years).

The real culprit is a bad education system, and we should applaud the pioneers attempting to destroy the failed system.

I get the point but then again is demand so high or just in SV and other tech hubs?

I travel a lot and the situation for devs can be very different depending of the context. In LATAM most devs are making less than other even simpler professions and chump change compared to the guys on the valley.

At the same time I meet devs in the midwest that don't get a lot of six-figure offers and have to compete for a good steady job.

99% of the IT industry in silicon valley are simple web apps that are becoming increasingly easy to develop due to better tools and standardization, is no longer like in the '70s and '80s when the actual silicon being made there couldn't be made anywhere else in the world.

But only in the valley, the alley and other such places you have investors putting the money that creates this unprecedented demand for IT workers, anywhere else its business as usual except in the third world where you have IT outsourcing companies popping up all over the place with the age-old business method of paying jack-shit to the local workers while billing first-world companies just a tad less than what first-world developers make.

If you were a developer in a third world country your only chance at a six-figure pay is to move to the first world where there are limitations due to visa and immigration problem, so for a lot of people its not about leaning how to code because they already can. Its about getting to the valley, and even for someone in the US moving to Nocal can be difficult depending on his/her situation.

My comment did not make a direct comparison between a craftsman and a programmer in terms of absolute difficulty and height of entrance, and neither do I claim an oblique equality in terms of capability for everybody. What I do question, however, is the grandparent's insistence that critical thinking and continues learning are what makes a programmer special.

I agree that more mathematically inclined people will be better programmers when it comes to harder areas, however, that is a question of ability and preference, like language or manual skills, not one of a fundamentally special disposition. Somebody who is mathematically inclined might become a banker, or a programmer, or a physicist or any other profession out of a myriad of possibilities. The same, however, goes for any other form of abilities and inclinations, somebody who is "good at languages" might become an author, PR person, translator or whatever else he/she wants. Somebody who is manually inclined equally has many different professions to choose from.

None of that is something I fundamentally question. The original article, however, makes a good point when it explains why developers are in a relatively good position: People will go were there is money to be made. That goes for language people (e.g. translation on a state-level), for manual people (e.g. mechanic on oil rigs or in mining) or mathematics people (e.g. programmers or finance).

Not everybody can or will become a developer, but there is no magical ingredient that keeps people from going into software who are capable to do so but might choose other jobs for a myriad of other reasons.

I'm not convinced by either side. But I find the article reasoning totally hilarious: be careful with that supply flooding that has never happened, even with monetary incentives, but that could happen any moment!

To be honest, I think (and that's a very personal belief based on personal anecdote) that more people can learn programming than it's thought. But it needs much hand-holding, determination and means than it's reasonably expected.

So (again: a gut feeling, so take it FWIW) the barriers might not be in people's brains, but do exist anyway. And the article does nothing to disprove the common wisdom (IIRC backed by some empirical evidence) that only so little people can learn programming.

Smarts required for trades IMO from top to bottom (source: finishing a new construction this week on time and on budget(ish) as project manager who knew nothing about building 8 months ago):

1. Carpenter/Sparky/Concretor/Plumber (different skill spaces, similar skill levels required, if anything electric is harder as it's the most likely to kill you and requires high level maths) 2. Tiler/plasterer/brickie/painter 3. Floor sander and other unpleasent menial trades.

So the biggest difference between construction and software eng is that for a construction project it's relatively easy to specify a project such that outcomes are deterministic. Any significant software project will have non-deterministic outcomes. Good tradies use the reduced cognitive load caused by certainty to be fast and efficient, and to have incredible levels of attention to detail. In software to achieve similar levels is either impossible, or requires two or three stabs at the same problem to get it right (and minor deviations from the problem space cause extra confusion).

> The reason we are currently enjoying an alternative employment universe, insulated from the rest of the economy, is that the mass of unemployed people predominantly couldn't break into this field if they wanted to.

Art major, advertising minor, employed as a Software Engineer right here.

That does not contradict his statement. The reality is that programmers need to have above average intelligence, at least if we expect something more than just formulaic approaches to software problems (and if history teaches us anything, it is that formulaic approaches will likely be automated at some point). What you choose to major in in college is not indicative of your intelligence.

> What you choose to major in in college is not indicative of your intelligence.

I agree with the sentiment you're trying to express, but there actually is a general correlation between intelligence and what one chooses to study in college. For example, it would be difficult to fault a spectrum of majors with physics on one end and psychology/sociology at the other.

Title: "IQ Estimates by College Major"

Link: http://www.statisticbrain.com/iq-estimates-by-intended-colle...

You aren't the mass of unemployed people.

I, too, find myself assuming that if something is easy/achievable for me, it would be easy/achievable for anyone.

> Stop patting yourself on the back. Seriously.

I'm not. You obviously have past bias that's caused you to read far too much into what I said.

> Because obviously, no other job requires critical thinking and learning continually.

Did I say that... NO. Your entire second paragraph is a nonsense rebuttal to things I never said.

> If you do a job for a long while, chances are you will have to adapt to new developments.

Very few traditional jobs, none of the ones you mentioned, are forced to obsolete their knowledge as quickly as programmers.

> I am sorry that this rant is directed directly at you, but I find the sheer arrogance of your two one-line remarks baffling.

I find your foaming at the mouth about things I didn't say equally baffling. Take a step back, calm down, and if you still feel it worth discussing, respond to what I actually said rather than what you feel I meant.

If programming is the new auto worker, and it can make so much money absent formal education and professional requirements/certifications, then there's obviously something different about it that prevents the masses from jumping into the field.

I've talked to and worked with many people outside the field in my life who'd love to make that kind of money and my personal experience leads me to two main answers. It's too f'ing hard, and I can't sit in front of a computer all day so I won't even try.

I'm not being arrogant, nor patting myself on the back. There are far harder jobs out there that require far more critical thinking, but those jobs in general aren't available to the typical person because they require very particular educational paths as they are not meritocracies. Anyone could potentially sit down and learn to program at home and enter the profession, it's very blue collar in that way. You don't need a degree or a license, you just need the skills.

What's your problem with his first one-line remark? Have you not looked at attrition rates for CS programs across North America? Missed all the professorial "why are all our students dropping/flunking out" laments?

We've seen the CS enrollment boom cycle repeat at least twice now. Graduating class sizes remain relatively constant while attrition rates skyrocket. Enrollment is pretty objectively a terrible measure of future software engineer/developer supply.

I do not disagree with you entirely, but I think what nuances the statement that 'programming is hard' is that this doesn't mean that other jobs aren't hard in other ways.

I believe programming does require above-average critical/logical thinking and continuous learning. On the other hand, it often requires less social thinking or management.

I have no problem saying that I'm a better programmer because most people are just sloppy and not as inherently curious and inclined to love clear, discrete problems and solving them. It doesn't make me arrogant, because I have huge amounts of respect for (some of) the project managers above me who have to deal with complicated schedules, higher-ups fucking up their shit, and managing prissy developers, designers, and whatnots who suck at communicating and collaborating.

I share your antipathy for the comment, but not bafflement. How long have you worked in software dev? So many devs are like that.

To give some evidence to the parent, look at a chart of STEM graduates vs liberal arts, comparing 1985 to 2009 [1]. Across the board we've pushed a wider range of people into college. Nevertheless, in absolute terms the number of graduates has dropped in CS, Math, and sciences, while it has skyrocketed for arts, communications, and psychology. What we've found is that there just aren't very many scientists and engineers on the margin. In other words, there appear to be relatively few "potential" engineers that just need a nudge towards engineering. This seems especially true when you consider that across this time period (1985 - 2009), the career prospects for STEM graduates have been very good. Even this incentive doesn't seem to push any marginal college students towards these fields.

My takeaway is that there isn't a huge pool of potential programmers that just need a nudge towards programming. If offering huge salaries and making higher education a social requirement doesn't increase the number of people who chose the engineering career path, what does?

[1] http://marginalrevolution.com/marginalrevolution/2011/11/col...

>Given the high dropout rate of anyone attempting to learn programming

Its about the same as any other major. I googled around and found the 1999 cohort for Southeast Louisiana University (no particular reason, just google found it easily...) and they tracked freshmen's declared major and what they actually graduated with, if anything, after six years.

In comp sci, it is true that 93% of self declared freshman comp sci majors failed to achieve a BSCS degree within six years aka dropped out (well, at least dropped out of the BSCS program..)

Before you start cheering, lets check some other stats. In the school of nursing, 88% dropped out. In accounting, 83% dropped out. In criminal justice 93% dropped out. In psychology, 90% dropped out. CS is only a couple percentage points harder. I don't see how you can justify from an engineering perspective reporting so many sig figs when the sample size is so small. For all practical purposes, the dropout rate for all majors is about 85%, and none are much higher or lower.

Its pretty unusual not to switch majors. (Pointless Anecdote Time) I didn't go to the particular school listed above, but I was a ChemEng in my freshman year and eventually (took awhile) graduated with a BSCS and almost enough EE classes to double major (which is partially why it took so long).

No, the CS isn't just a couple points higher.

CS compared to nursing is 7 graduates vs 12 = meaning that you have almost 50% more nursing graduates out of an equal sized group of incoming freshmen than CS graduates.

You have 17 accounting graduates for each 7 CS graduates, almost 150% more. Even psychology has 10 graduates for ever 7 CS graduates, which is roughly 50% more.

I hope I did the math correctly, but at close to 100% small differences in the percent points means a huge difference in outcome.

"but at close to 100% small differences in the percent points means a huge difference in outcome."

Close, but the actual effect is if you subtract one large number with modest error bars from another almost equally sized number with modest error bars you get a small number that is smaller than either error bar aka meaningless.

This is based on the assumption that class sizes of 70 students and 7 grads from a small southern school is going to result in pretty big error bars if I somehow got data for the whole country, for more than one year. I'm not motivated enough to do it, but I did gather enough information to conclude that regardless of major, virtually all freshmen change their major before graduation (if they graduate at all...)

Upon reconsideration, it doesn't even matter if this one uni for one year is a perfect sampling of the whole country for many years, the verbal conclusion stands, almost everybody switches majors and the dropout rate for CS isn't stunningly higher than other fields. When the dropout rate for all fields is about 80% to 90% its hard to increase that by a relevant percentage to "prove" CS is harder. To be stunning or interesting or noteworthy you'd need the CS dropout rate to be, perhaps, triple the rate of .edu majors or history majors. Or at least some small integer multiple. However at 80% dropout rate a mere doubling would already be mathematically impossible at 160%.

Now if I found stats that 75% of incoming declared freshman geology majors graduated with a geology degree, and this was about the same percentage across all majors like .edu and nursing and art, except CS where it drops to a mere 10% or so because CS is so hard compared to the other majors, LOL, then the original poster would have made an accurate point with possibly actionable outcomes (maybe CS needs more tutors or better english speaking profs or, or pre-reqs to declare it as a major, or the graduation reqs are ridiculous, who knows). But it turns out there is no relative numerical problem with CS dropout rates, at least not noticeably worse than any other major, and certainly nothing actionable in the real world.

That would tend to indicate the original conclusion that CS is so much harder than other majors is simply false, or if it is true, its certainly not true because of the dropout rate claimed as the cause.

Let's not forget one thing. Computer Science can be extremely boring for many young people. It's a man made science(meaning it's different than, let's say, biology.)

As a younger lad, I couldn't imagine having to spend my working life in front of a computer screen.

These are just my observations, and yes--some of you will have jobs for life.

In all honesty, I don't love computers, or even the Internet. I was forced to get involved in the Computer economy.

Actually, I'm going to turn off all my screens for awhile, and try to enjoy the rest of this day---outside--scary kinda? What happened to me?

Heh, programming is very much about living in your imagination. I love reading, especially long series of novels. When the last book is finished, and that world vanishes before my eyes, it leaves an emptiness for days.

Like reading a book transports me away from my dull seat on a long plane journey, it doesn't matter that you are sat in the same place every day. The point is that there is always a fresh problem, or that you can see the new thing you want to build in your minds eye, if only you could just figure out how to do it.

So maybe teenage you wouldn't understand. Did he really understand why you might want to stay with the same woman for ever (or why you didn't)? Or that your dad is okay really, but he isn't there for ever? Teenagers don't get a lot of things.

Teenage me was dreadful. If I don't impress him, I'm probably doing okay.

Those drop out rates are appalling!

For centuries, at least, 18 year old teens have had legendarily terrible judgement WRT dating, sex, illegal drug use, reckless driving, excess alcohol consumption, studying or lack thereof, clothing, dancing, music, sometimes doing all of the above at the same time. Seems a little too optimistic that out of all that screwing up, the one thing they'll get correct is school major selection.

Note that the graduation rates for "some" major are a very small multiple higher. This is solely "I'm 18 and I want a degree in XYZ" compared to six years later, "I'm 24 and I have a degree in XYZ". (Edited to emphasize the degree specific grad rate is constant across all majors, but some majors are more like to graduate with a degree in "anything" rather than drop out. If I remember the stats, failed art students generally just drop out, but failed physicists tend to go into engineering, insert infinite jokes here)

But not surprising. In 2001, the college I was accepted to also accepted a record number of students. Every year since then, the number of accepted students increased. The first year drop out rate also increased every year, to mirror the accepted rate. The number of graduates stayed the same, though.

The only conclusion I could come up with is the college was purposely accepting people they knew wouldn't be able to pass the first year. They fudged the numbers to maintain their graduation and placement rates AND they got the extra cash from gullible first year students.

[Programming] requires critical thinking continually and learning continually.

Yeah, I've met plenty of programmers who meet neither of those requirements. Most of them have held titles higher than, and almost certainly got paid more than, me.

(And yes, their code sucked. But they were still well-compensated.)

That because just like programming politics also requires critical thinking continually and learning continually.

They were not good programmers but better politicians.

It's not so hard. I think that most college freshmen find it so is because the quality of their prior education is so low. Many high schools still lack any programming curriculum.

Minor correction:

... still lack any educational curriculum.

Plenty of preparation for institutional living and blind obedience to authority. Education? Eh who needs it, we have standardized tests to prep for. Unfortunately it seems citizens and college students need education. Whoops.

autoworkers == un-skilled labor

managers == skilled labor

From Drucker's The Practice of Management:

A scant twenty years ago, it was widely believed that the mass-production technology—yesterday’s industrial revolution—threw people out of work. Today we know that wherever it has been introduced, it has rapidly increased the number of job opportunities in industry. But it is still widely believed that mass production replaces skilled labor by unskilled labor. We know this today to be a fallacy. In the United States, for instance, where mass-production methods have been applied on the broadest scale, the class of employees that has been growing most rapidly in numbers and proportion is that of skilled and trained people. And the truly unskilled laborer of yesterday, who contributed only his brawn, has become the semi-skilled machine operator of today—a man of higher skill and education, producing more wealth, earning a vastly higher standard of living.[1]

I think Drucker would argue that "Developers" are the new class of "Managers".

[1]Drucker, Peter F. (2010-04-02). The Practice of Management (Kindle Locations 490-496). HarperBusiness. Kindle Edition.

Many commenters are too lost in their own egos to speak rationally about this issue.

CS is not a "cool" major in colleges, and programming is not a cool profession among tweens. Until there is a significant cultural shift, which I would bet will not happen any time soon, the labor pool will not be commoditized in the USA.

On top of that, the skill cap for programming is substantially higher than it is in assembly line manufacturing. Programming may be more comparable to engineers who actually design the cars, but those jobs are not commoditized either.

Programming is fundamentally different from most other occupations. We are actually building factories - automating manual tasks. If developer jobs start to become scarce, we'll be nearing a situation where there are no jobs at all for anyone. So, as a programmer, you're never at risk of falling into poverty.

So, as a programmer, you're never at risk of falling into poverty.

I'm guessing you aren't old enough to remember the dot com bust then...

Programmers fell into poverty after the dot com burst? That seems a bit extreme. Lost very high paying jobs, maybe.

I personally knew competent programmers who, a couple of years after, I would describe as living in poverty.

I believe that I am able to judge programming competence, and my bar for labeling poverty is not inaccurate.

Back then IT wasn't big enough to contain all the programmers who had moved into it due to the bubble. Heck most smaller shops wouldn't have IT or a complicated website then.

Today there are so many businesses that needs IT to stay competitive that we would need a bubble of incredible epic propertions to knock us all out. And honestly I doubt there are enough people who can pass as devs that it would even be possible.

I wasn't working then, but from my understanding (might be wrong), it was 'html coders' that had difficulty finding jobs, not actual coders.

I personally knew a number of competent programmers who ran into extreme financial difficulty in that time period. However they didn't like to talk about it then or now, so I can't give names.

They were, of course, a drop in the bucket compared to the number of people who had no business calling themselves programmers having trouble. But there were still lots of them.

How do I know this? When I went to move from New York to the west coast in 2003, I took the precaution of taking a month to travel up down down the coast, so I could meet with people I knew and respected from online interactions. What I learned was that at the time, Portland was a disaster zone, Seattle almost as bad, Silicon Valley still had a huge hangover but was slowly on the road to recovery, and I should have no problem landing a job in Los Angeles. I therefore moved to Los Angeles and landed a job in about a week.

Interesting. I'd never have thought of LA as a tech hub, but it kind of makes sense. Defense and tv/movies are big in LA and they never have recessions.

I can confirm that there were a big dot com death and hangover the first years of the millennium. Specifically, for Sweden.

The rest of the Swedish economy was quite OK.

The takeaway lesson you should get kids, is that there is a boom/bust cycle for programmers/developers -- but it isn't necessarily in phase with the general economy. (Some corollaries about how to handle this were listed in the article.)

There are a few good points in this article, but I don't think it's all that insightful overall. A particular developer can be a lot like an auto worker, or they can be very different. The difference is continuous learning.

The trouble with being an auto worker in the heyday of the industry is that, as far as I know, people generally learned a relatively small set of skills early in their career, and then expected to coast along on those skills for their whole life. All skills have a limited lifetime, and in the modern era, that lifetime can be very short indeed. If you got in and out at the right time and handled lifetime investments well, then you could do all right for yourself. If the timing of your one skill being obsolete doesn't work out well for you and you don't do anything about it, then you could find yourself broke and possessing no marketable skills when you were expecting to hit the peak of your career.

In development, I have worked with people who view their career like this. They learned C++/MFC or some other technology stack that's getting rather long in the tooth decades ago, still work in it now, and show no interest in learning or trying anything new. I think these guys are in the same shape as the autoworkers. I think they'll do all right for the foreseeable future, but there's always the risk that the bottom will fall out of the market for the tech stack they know, and then most employers will see them as useless.

There's no need to be like that, though, especially in a time when getting your hands dirty with new technology is so easy. The developer who can do good work in 2 or 3 tech stacks and is always learning more about his main ones and any others that look interesting will always be employable - if one goes dead, you can get a job working in another one, or learn whatever the new one is yourself.

I'd say it generalizes even more. Anybody who has the drive and intelligence to continuously learn new things will always be able to make money. Anybody who wants to learn one thing and coast on that their whole life will always be at risk of losing it all.

There tends to be a lot of demonizing and blaming the victim in general on HN for people who won't learn new skills. I've coasted by for a couple decades really only having two "tech" skills. I'm really, really good at systems analysis, and I'm pretty good at translating user requirements into code more or less on time and more or less with few bugs. Sure the tools and techniques have changed a bit, but much less than some would claim. After you learn your 5th or 6th language the 7th isn't a big deal. I really don't see any deep need to learn new skills beyond those two as long as I stay in the field, after all, its worked very well so far... Eventually due to ageism I'll have to do "something" else. Maybe learn the skill of management, or sales, or something like that. Donno. What does a good techie do when no one will hire him for non-tech related reasons? Maybe start a tech company, thus the interest in HN...

On resumes the "no new skills" crowd knows you can just make it up in six months if you want. For a software dev who's any good, how long does it take to learn something, contribute to an OSS project, etc? Not very long, thats for sure. New stuff comes along at every job I've ever had, and I have to implement it in a month or so. Not hire a new guy, not go take a class, production code. Its so not a big deal. There's no point in learning a new skill and telling anyone at work about it, unless you think its funny to get escorted out... after all, why update the resume unless you're looking?

The other big mistake is virtually none of the detroit workers had the skill of making cars. There are people who have the skill of making cars. I have a cousin with that skill, who's a large diesel mechanic who has a hobby of tearing down cars and rebuilding, all by himself, bare metal components up, including (obviously?) engine assembly. He's stripped and rebuilt two classic corvettes and a ancient jeep, so far. Virtually no autoworkers can do that other than coincidentally as a hobby. They can tighten a bolt on a line, or align an assembly, or insert/stack partially finished parts, or press a e-stop button if the robot goes nuts. They suffer from HR doing "keyword selection" just as much as we do now. Oh look he worked on a car line, well he is totally unqualified to tighten the same bolt on our truck line. Anyway, none of them can build a car. Once, a long time ago, I worked in IT at a large regional printer. That doesn't mean I was a "press worker" or I could do much of anything with putting ink on paper other than program ethernet switches for embedded control devices. "autoworkers" are the same way.

I'm not sure I recognize this privileged world you describe. Maybe you won't recognize mine.

It's 7pm. About half the team is in the office with me (although all the people managers have gone home). We will be here a while.

No one in the room earns more than 10% more than the UK median salary. The highest paid is a front end guy who sits to my right. The two behind me earn less than the median, and live with parents. They have been writing software for 3 years. On external contracts, the customer pays about double what they get paid, 150 a day. Given that rate also needs to support sales and admin, they could get a little more but not a huge amount. Sales tell me our day rates are too high, and it's costing work.

Other companies in our industry (defence contracting) pay a bit more, but not a huge amount. I got offered about 50% more to work on consumer electronics last month, but that is still 50% more than median, not 800%.

I think what you describe has already happened.

Edit - I think this is overly negative. Programming remains a really nice job. You solve interesting problems, you work in a comfortable office, and the culture is nice (people usually treat eachother well). It's just not paid that well now.

What the fuck?

I have never heard of a job this bad. Maybe the U.S. is just El Dorado for programmers?

I'm interested to know where you're based, I take it it's not London? A day rate of £150 per day to the customer sounds very low; it's hard to find contract rates that low on the likes of Monster across the UK and typical to see £250-500, so double that for the company hiring out. I've seen rate cards for agencies in advertising charging out developers on projects from £500 to over £1,000 depending on what exactly is being worked on. If £150 a day is too much and costing work anything lower seems unsustainable to run anything more than a lifestyle business for a few select people at the top.

If it's 7pm and the developers are likely to be still there for a while - is that "the norm"? Then you are in effect taking a pay cut already on what sounds like below market rate wages. This sort of practice is toxic. It's ok to work late but when it's expected as part of the job but not without any compensation (can be extra time off, not just money) then this really annoys the hell out of me. Someone higher up is making money out of this. That might be the status quo but I would really consider working on the C.V. and widening out skills and look elsewhere - there's no harm in it.

The guys behind you paid less than median (£21.3k in 2012 according to Wikipedia) and that have been at it for 3 years - from that I get the impression they were fresh out of university and this was the first job? And the highest paid guy at just 10% more, so around £23k, is there no CTO or senior developer? To me it sounds like someone's taking advantage of young, enthusiastic energy here. More so with the "we will be here a while" comment - you should work out what your effective annual salary is based on that; otherwise you can just let it slide and fall into acceptance. If your contact states 9 - 6 the company needs to appreciate the above and beyond work. That's what it is, no matter what others might tell you.

We recently hired for a mid-level developer role at our office in Hoxton and that was around the £40k mark which seems to be around right. As the tech director there I regularly get unsolicited CVs via recruiters and salary ranges requested typically range from the £30k mark up to around £60k.

I don't mean to come off as in anyway 'know it all'y or 'just do x' - I'm genuinely interested in the situation as a fellow UK based dev. Your situation contrasts starkly with my developer friends (based in London, Belfast, Hertfordshire & Leeds) so I'd like to hear more if possible. I often extol the virtue of learning developer skills to younger folk who I interact with and have always painted it as a pretty good way to get a good head-start financially over many other occupations.

When I started out at just above the median I was so thrilled that I was actually getting paid to do what I started out doing in my bedroom as a young kid. After passing the 30 mark I've come to realize it's about what value you can provide to the company, there's no shame in wanting to be out at 6, for one thing realistic timing plans that actually reflect reality are far more useful than ones papered over with hours upon hours of hidden overtime - I'm not saying that hard, late nights are out of the question - I just don't expect it to be treated as the norm' or assumed unless it's also reflected in compensation of _some sort_ (we've in the past traded late nights for conference & flight fees for instance). There's also no shame in taking a look what else is out there and moving if you have to - there is some give and take on your part in progressing. Moving jobs is usually the easiest way to significantly bump your pay grade. It's hard work but can really be worth it in the long run.

No, thank you for the reply. I hope I didn't come across as mr gloom.

Concrete answers -

* The 150 - 250 is the rate a junior is charged out at. Seniors are 500-1000. Usually the customer actually gets a quote for 1 senior : 2 junior, i.e. say 450 a day.

* Most people here work normal hours most of the time, although some people and projects do work a more. The project I've been on the past 6 months has a lot of crunch time, so I feel like 'people here work long hours', but actually 'my team work long hours'. And yes, not paying overtime on a project that needs it is a bit yuck.

Regarding pay, the sense I get is that outside finance, new programmers get 25-30k depending on quality, and after about 5 years, get 30-40k. These are actually very comfortable salaries, depending on where you live. Pay at this place is strangely poor, given that I think the people I work with are actually quite good.

I posted that because I read on HN, or around the net, a lot of people saying things like '6 figure salaries', or 'I quite my job as a finance quant because programming pays better'. Not round here it don't.

I'm fine with that. I'm glad I get to spend my days playing a beautifully convoluted puzzle game, or imagining things and then making them happen. I just get wierded out by the disconnect I'm seeing.

I've been using this metaphor for a couple years now, and I think that it can be taken further. Developers are like the car mechanics because they build the thing. There are an increasing number of tools being created to make developers lives easier, and as such, the bar to entry lowers. This is not the only career in computer science, though. Just like the auto industry, we need research to push the whole field forward (developing a new, more efficient programming language; or a better fuel injection system). We also have mechanics called IT people that help people with day to day problems that they encounter with their computers.

Moral, if you want to stay relevant, make sure you know the things that push research. Learn the lambda and pi calculi. Learn category theory. Web development is an overpaid field, software engineering is not. Enjoy the easy money while it lasts, but know that its days are numbered

I'd argue that if you are going to focus on keeping abreast of research, you should focus on things that have much more obvious applications than various niche topics in programming language theory. For example, advances in machine vision, computer graphics, machine learning, and distributed systems seem to be much more meaty than category theory and lambda calculus for ensuring you do not get left behind in the next big wave of innovation.

It's already happening. As a freelancer, I often find people who want their "corporate" site built in WordPress for less money than what they would pay to a car mechanic for a similar amount of time worked. Sames goes for Magento and similar platforms.

If you are talking about the front end of a corporate site then sure, you can do that in WP. Don't think many would though; maybe for the grocery shop, but other than that?

Even relatively small businesses in my neighborhood with not much cash to spend start out with a 'cheap WP' site, but then they want reservation systems integrated with their CRM. They want a live chat system. Integrated with their CRM. They want their reservation system connected to online partners. Etc. In a few months after starting out with this site, WP or anything else is no longer relevant; existing solutions need to be integrated manually anyway and custom solutions made by, for instance, the CRM/reservation system which do not use WP are a better fit. At a much higher price. And people pay it, because custom integration is even more expensive.

Even with all it's plugins, WP is only a good solution if you like to do a lot of work manually or you want to spend a lot of money having every plugin and external package nicely integrated. And no inexperienced programmers is going to bring that to a good end without landing on reddit/hn as being responsible for making some epic security holes along the way.

I was surprised to see a multi-million dollar corporation (nameless) using wordpress. It's slow and bloated but I guess it gets the job done. Naturally they went to someone and said they needed a site, then that someone did what they do best and installed wordpress with some theme. Naturally when it came time to make certain changes or something broke the installer couldn't do anything about it. This is a B2B company and I doubt any sales come from their site so from a business point of view it's understandable how a cheap WP installation got there. However, in my experience it always turns out being more expensive down the road. There's money to be made with broken wordpress installations and moving sites off wordpress altogether.

Yep, and that's were it gets very expensive very fast and that's also were 'cheap' programmers cannot help at all. I have 3 friends who quit their jobs and went into website creation. They make simple sites based on WP and make nice money with it. They look mostly horrible but clients can talk to them on their level and feel comfortable. These sites go between E1500-2500 per site. Now when anything breaks / doesn't work / has issues, they have to hire someone to fix it and they have to trust this person; in most cases, the cost of fixing/adding on by this 'more capable' person is more expensive than the site was in the first place. So it's a good market for capable coders / admins to dive into. Optimizing, securing, fixing, extending. All money makers far beyond the boring setup of the initial site.

That's something I don't think this article covered. Sure technologies like WP make it easier for someone less skilled to accomplish something but then demand is created for others that are more skilled to fix, support, customize like you said.

That's been the case since I entered the development field in the early 00's. I wouldn't say it's anything new. The polite thing to do is to explain to them your hourly rates and then allow them to make a decision. The impolite, but safer for you, thing to do is to run without looking back.

It's not a case of developers being automated, it's a case of the customer not understanding that they get what they pay for.

Or in the case of a simple content site that WP could easily do, perhaps they do understand what they're paying for. (Excepting security holes in WP...)

You need a better class of client then! The persona you're describing are the intended audience of premium themes. They would probably never really get anywhere with their "new idea", if the barrier to entry was higher than $39 or $2 hosting a month. May I suggest hooking up with a larger agency, or corporate entity to help weed out the worst for you?

I agree with you that this is the direction in which we are heading, but not that professional developers will become obsolete.

I believe if we ever reach that point where programming is common-skill; the real developers will stay ahead due to demand. I honestly don't see corporates with millions/billions of revenue trusting newcomers with a few weeks of experience to handle core business automation; in the same way as you don't trust a clerk to sort out your legal issues.

Perhaps when the time comes; professional developers will become like the attorneys in the law system; where specialist skills demand even a higher rate and requires less time invested (which might mean the same salary as now but only working 'part time').

I don't have any issues with people wanting to learn to code; I even mentor some myself. It really comes down to hours (or rather years) invested in learning and fine-tuning your skills; which I see the majority of new developers not willing to invest in.

As such, I believe the demand for better developers will increase. Look to the tech companies with open positions looking for 10x/star developers - even though there are developers available, they just don't make the cut.

"Perhaps when the time comes; professional developers will become like the attorneys in the law system; where specialist skills demand even a higher rate and requires less time invested"

Isn't that happening today with the substantial number of developers who do freelance contracting/consulting?

Web developers are the COBOL developers of this generation.

Software engineering at its core is a universal skill whose applications will almost certainly have a shelf life of hundreds of years, though the various particular demand curves for specific applications of those skills is sure to vary wildly over time. Now would be an advisable time to start expanding your horizons if your core skill set revolves around creating web applications.

I used to feel uncomfortable after reading articles like this. But as the years went by, I gained more experience, and understood what programming is really about. I no longer worry. But if you spent a total of 2 months on your programming education and are now gainfully employed copying and pasting answers from Stack Overflow into your editor, perhaps you should.

I agree with all of this, but - and this doesn't take away from the key points - autoworkers could get entry-level positions with little to no skill. . .and no specialized education or training (formal or independent). The same is not true of entry-level coders. Some level of skill is necessary, attained through some level of training.

I don't always seize my means of production.

But when I do, I close it, stick it in a case, and put it in my backpack.

To follow up with something less pithy and more thoughtful:

I'm from near Detroit. Auto work is a bad comparison, because auto workers need millions of dollars worth of equipment to do their job.

Software developers are more like the film industry. Big operations need millions in equipment etc, but the individual actors, well, they just have to know how to act.

Given that software as a service solves a problem the film industry is still wrestling with, and given that the film industry is still very much solvent at present, I think we're going to be okay.

Plus, anyone can jump into the place of an auto-worker with very minimal training. That will never be the case for programmers.

I don't always seize my means of production.

Why not?

Often, I'm busy typing on it.

One comment on the post goes after the analogy not being fully sound because unions helped to prop up wages.

Whatever you think about unions, I'll be sort of curious to see if some segment of developer jobs do unionize ever. I get the sense that the rugged individualism that seems to be far more prevalent in developer/engineer/hacker sort of circles would be less for it; what about h1b workers who seem to feature quote often in stories about not great companies overworking employees and threatening their jobs (and with that, their legal status in the States)

Yes, a tangential thought to the article but an important part as people continue to evangelize the great opportunities in the tech industry and Hacker School, Code Academy, WikiBooks help them to get up to speed

Instead of unions, I'd much prefer if there was an organized push by developers to force governments outside of California to make it illegal for companies to claim they own the rights to every idea an employee has. In the UK it seems to be standard practice to do this, even when the employee comes up with an idea on their own time and using their own resources that's not directly related to the company's line of business.

Is it really the golden era of programming in America? In Europe we still get underpaid for what we do yet there is an extreme shortage of good engineers. I have seen a lot of my network move to America and haunt software engineering positions in SV but always thought they were chasing a lottery ticket. People drop out of school here and move to the States because there is so much demand and half of what they learn is not even applicable in real life jobs "In America you can actually get a job if you can prove you can program - without a degree!" is what I hear a lot.

How true is this? Is it a gold rush or are we not even close to the peak? Are they exaggerating? What is the demand like? Is a degree worth it if you are just in it for the paper?

I'm moving to the UK from the US in a few months. I'm taking a pretty big salary cut, but from my research, salaries have increased quite dramatically in the last 3-5 years. So I'm cautiously optimistic that they'll keep growing.

The comparison isn't even on the demand side. Auto industry is a single vertical. Software development is needed horizontally across most industries.

One difference is that new kinds of software exist every day and old ones become obsolete. Shopify is only suitable for a fraction of e-commerce sites, and before Shopify there was oscommerce, volusion, yahoo stores, magento, and dozens of other web 1.0 e-commerce platforms.

If you are starting an e-commerce business and have $30 per month, Shopify is a great idea, but if you have a larger budget its limitations start to become impactful.

Skills will definitely become obsolete, but code moves quickly and allows new ideas to become realized. What the author erroneously thinks of as a stable business model (e-commerce) is not, and there will be lots of people trying to improve upon it in ways that existing platform abstractions are insufficient for.

While it seems many don't agree with the article (as usual) I do. Developers are sitting pretty at the moment because the Internet in the greater scheme of things is brand new. It wasn't really until the early 2000's the Internet exploded in popularity and got a whole lot more complex. There is always some new hot language startups and companies are clamouring to use, every new language or framework seems to create a gold rush of sorts (Rails developers were once white hot property).

But the sad matter of the reality is, more and more people are learning how to create a website. And while little Timmy who knows HTML and a little CSS won't be taking your jobs any time soon, as the supply rises there will always be a plethora of small jobs that Timmy would be able to do leaving the few actual big and complex jobs for the many developers fighting for the job.

I personally think we are a very long way off oversupply in the development sector (especially web). My advice would be to continually learn as many new skills and techniques as possible so if the day ever comes you are at risk of being replaced by a WYSIWYG editor that generates the code for you, you might have a chance of keeping your job.

Software is a lot harder to automate for the moment, but with websites it's at the point where content management systems like Wordpress already make it easy for people from kids to senior adults to make a website without even having to touch a line of HTML, CSS or Javascript. Automated tools can only get you so far, we'll always need designers to design the look and feel of a website, developers with a grasp of modern web technologies and languages to program whatever it is that's creating the website to ensure its output is up-to-date.

I've been preparing myself now for the future. If automation does happen and it will, nothing can truly be 100% automated, but if it does happen, I'll be the guy running the automation stuff, not living out on the street because I was too naive too think it could never happen to a developer like me.

PS. Send some of those recruiters offering six figure salaries my way please...

There are 2 kinds of work.

1. Execution of a process. 2. Creation of a process.

Execution can be automated. A factory can be automated with robots. Someone who makes backups can be automated with a script.

But creation (of a process) cannot be automated. Until we have a major breakthrough in AI our jobs are safe. Most programming is the creation of a process, not the rote following of a process. "Programmers" making cookie-cutter-CRUD apps may need to worry!

Our only threats are over supply and under demand. We are currently on the winning side of supply/demand. Competition with low-wage countries has not been able to significantly hurt us they way it has with factory work. We are in a good spot.

The thing about development, and it certainly may slow down eventually, especially as Moore's law staggers to a halt and broadband peaks, is that no matter what I build, everybody always, always, always wants more. Every framework I ever developed or integrated was met with a doubling of people's expectations. Make it better, make it slicker, give me this feature, et cetera. I think we've got between 40 and 50 years before we can even suggest hitting saturation with our current technical capabilities.

> especially as Moore's law staggers to a halt

It hasn't even begun to slow yet, has it?

For the last 5 years , or even more it has slowed considerably. Nvidia even claimed in a famous article that next generation manufacturing processes have no price benefit.

An interesting shift in the market can be observed in that demand is dropping at the high end compared to in the past. Partially greater economic effect, partially lack of demand.

The law might say the transistor density will increase, but if the market isn't willing to buy it, or the companies can't financially offer them, the law will fail but not for technical reasons. I think its a safe prediction the law will fail not for technical reasons but financial.

I don't think demand for silicon(measured by area) for high end manufacturing processes had dropped. It might have shifted from pc to tablets/smartphones. but it's there.

According to darpa , the end would probably come due to money. But even assuming unlimited money, 6nm is the size of a silicon atom. to go below we'll have to split the atom :)

A point repeated here has been "keep your skills flexible." A lesson we could learn that would improve upon the auto industry disaster would be to consider the "product line" itself. The auto industry was notoriously monofilamental in its innovation, as its CEOs preferred it. Their conservative operation proved a great long-term investment, with an eventual crumbling down hitting hard in the 1980s and hardly recovering.

Innovation represents hours sweated and is always rewarded. So far the computer science industry has been well-motivated to continue innovation, as computation becomes one of the world's standard utilities. But once it's all up and running _and_standardized, it will only take a smaller number of people to run it, like the power grid, water supply, phone system, etc.

It is all like plumbing, and like plumbers, there are household ones for household needs like web storefront/office/communications desks and industrial plumbers, but most of the unique, research-y plumbers are in a small, elite group who are innovating on their own and sharing their work with the public and are well-compensated. I think that's the effect we'll see, a narrowing or thinning of the industry somewhat, but it definitely won't settle until after use-cases are standardized and we're still a zillion miles from that.

Imagine NASA doing a shuttle lunch with everyone from the control room at home in their backyards cooking BBQ with their family :) Cell phone in one hand, spatula in the other.

Why more programmers are no threat to programmers jobs? Because more programmers create more programs and more programs need more programmers (for updates and maintenance).

I have a few problems with this article.

1. The author points out all of the services which now exist, but says nothing of people and talent it takes to create and support such services. I think the tail for 'software enabled services' is rather longer than factory automation robots.

2. The author seems to have a somewhat narrow view of what developers actually do these days. Yes, it is true that people are not typically employed to roll their own e-commerce or blog sites. Very few people are doing this nowadays. Most of the software getting written for business today is highly specialized. Highly specialized software = no out of the box solution.

3. The author ignores the fact that a major drop in demand for software talent would probably coincide with some revolutionary change in technology. I'm talking about ubiquitous self driving cars and planes, robots that teach themselves, ad-hoc on site manufacturing via 3d printing, software that writes itself, etc. Should any of those things come to pass, having a nice job as a developer will be the least of anybody's worries.

While I do agree that the industry is changing, I really don't see it as being that similar to the auto industry melt down. The differences and flaws in such an analogy are easily spotted.

>Most of the software getting written for business today is highly specialized. Highly specialized software = no out of the box solution

This is one part of the developer community that doesn't get publicized as much. The Startup web companies are not the only place where developers work, but they are the most competitive. I work for an Assessor's office as a developer, and we develop our management information system in house. There are only about 7 developers that know how it works, and each one is specialized in certain areas of it. There is no way that someone could come in and replace us without spending years working with the software first. There is no out of box program that could take the place of this specialized and customized software. And even if there was a company this department could out source too, they would not get bug fixes and new builds as fast as they do now.

The uncle of a company leader (CEO owner etc) owns a software company. Through a complex deal involving government grants, and a development deal with another company, the software if developed through them actually makes them money to build. Three of the developers are hired to the other company as consultants for a while, so they can explain how it all works. The rest of the developers are let go. Finally the original consultants are let go, at which point everything is outsourced to a team based out of Lithuania, India, and Brazil.

Yeah, that sounds plausible, but would have many draw backs that are big enough, I think, to prevent it from happening where I work. For example, needing a code change last minute before role close to be able to force parcels through role before the normal close date, etc. Not to mention the red tape that would prevent the department from being able to do that.

Also, in this scenario, I would hate to be one of the employees who uses the software, because it is very complicated, and for them to have to ability to meat with the development team face to face for training, feature requests, or bug reports is very beneficial. But, it is unfortunate that some companies often don't see the benefit of having good in house IT professionals and developers, at least when they are looking for more ways to please stakeholders.

> At this particular moment in history, demand for developers outpaces supply.

I thought it was demand for "good" developers that was outpacing supply. Otherwise there are many developers (even with the professional degrees) that can't pass the Fizz Buzz test (http://c2.com/cgi/wiki?FizzBuzzTest).

Too bad .nl doesn't pay Silicon Valley salaries; the norm here is more like 1/3rd of that.

The points seem all logical on the surface. There's just one thing that makes me disagree with the article as a whole. The software industry doesn't behave like any other industry. The industry changes and fluctuates as often as software gets refactored. It's like a billion springs permeating a billion sponges. It's silly putty for computers. I saw this coming reading articles about software as a kid. The one rule that hasn't changed in the 30+ years I've been writing software as a hobby or for pay is that the software disobeys all the rules of all the other industries. With software and compute power, if you can dream it you can build it and someone, somewhere, will want it.

Yes production line industry with semi skilled labor is very very different beast to the IT industry trying to use two wildly different industries and draw analogies is a losing game.

web development which the author comes from is a tiny part of the IT industry as a whole.

The bottom line is that there is an infinite number of things to build and while software won't build these things alone, it's still a big component. Software didn't build the Space X rocket or the Google self driving car, but there is a lot of code which is a big part of making those things possible. All of the things that we can imagine in 50 years needs to have the foundations laid in part by software developers today. A factory worker has limited contribution to this future because of the constraints of the job, but software development is wide open. We may not be able to build the deathstar right now, but we can start working on the code for it.

cd deathstar git init

There are some parallels but the analogy falls apart. Even the most perfect car does only one thing very well: get people from point A to point B.

That is, there is a finite amount of autorepairs and new car manufacturing that is done and will ever be done, and that ceiling is related to how many people own cars or want to own one at any given point in time.

But the potential domains for software automation are unlimited.

The demand for software programmers will keep increasing, continually, until all the work that people do in their lives is automated by software. The time to enjoy being a software developer might be finite, but I don't see the plateau happening any time soon.

They are different because if developers were replaced by robots, developers would still be required to create and maintain those robots. The same can't be said for autoworkers.

Yeah, automating all software development is probably equivalent to inventing general AI. At which point we're probably all very well off, or all screwed.

A chill went down my spine reading this. That's a good sign.

> When the most frequent complaint you hear is “I wish recruiters would stop spamming me with six-figure job offers,” life’s gotten pretty good.

As other have said many times here, a six figure job in some places is just enough to possibly be compared to a middle class lifestyle elsewhere in the U.S. Go look at the database of BART salaries, and as big as their pay appears, these guys went on strike.

> WordPress does in fifteen minutes what once kept a freelancer busy for two months.

And yet, you can still easily spend two months plus on a Wordpress project. Compare what people were building then compared to what people are building now. The great thing about web development is that we can continually move up the value chain. As some components get easier, that frees us up to work on something else, always pushing the boundaries outward. As those boundaries move, we are probably creating more work to do, not less.

> Maybe you don’t think a total n00b can walk out of a nine-week training program and do your job.

That noob better learn how to learn on his / her own. Really, who learns how to be a developer from a school? I don't have a computer science background, but does a computer science degree even teach this stuff? The bottom line is that it's a relentless grind to continue to learn and build on that knowledge. Not everyone has the drive to do that. It's far easier to pay for someone to feed you knowledge and pretend that you are getting somewhere.

> To upset the labor market, one of two things needs to happen: an increase in supply, or a decrease in demand.

I don't see supply outstripping demand happening anytime soon, if ever. I have been waiting for the hordes to come for years, but this hasn't happened. I would think it would have happened by now. And demand doesn't sit still either. As other markets emerge, they eat up their local talent.Sure, this local talent may work for far less than their U.S. equivalents, but for how long? When you have cost of living in certain regions of developing nations ratcheting up to be as high as any U.S. city and companies like Alibaba hitting huge numbers, then developers in these regions will get paid. They just have a bit of catching up to do, that's why we call them "developing."

> No profession stays on top forever… just ask your recently graduated lawyer friends.

Isn't that a crazy comparison though? This article mentions how low the friction is for getting into development, and then makes this comparison with a profession with a relatively huge friction. The development industry looks nothing like law. Part of the problem there is that the law profession built walls up that technology is tearing down. The development industry has no walls.

>Part of the problem there is that the law profession built walls up that technology is tearing down. The development industry has no walls.

Exactly law school was such a golden ticket because the lawyer's guild set it up that way. The ABA convinced the state governments that that they should be the gatekeepers of the legal profession. They manufactured scarcity that drove up prices.

New lawyers can still make a decent income, even now. The problem is that they need to make way more than a decent income to pay the inflated tuition rates charged by most law schools.

It's not a good time to be a developer as it used to be. That was 10+ years ago, now the pay is much lower than it used to be.

You used to be able to hop jobs and make good jumps, now around here you hold on to those old jobs so you don't end up with a pay cut.

So, it's much more limited, though it encourages more side work I guess, just so you have something interesting to work on.

Autoworkers used to earn a decent salary, now it is programmers; Wow, now you need to have a degree in order to be somebody. And in a hundred years you will absolutely need to have a PhD in order to make ends meet ?

Maybe its all about supply and demand: only rare skills are worth something; if the once valued skills get common then all the advantages go out of the window (tm).

An autoworker needs an entire factory around him to do his job, along with a couple hundred other developers. He's nothing more than a cog in a wheel, made to do one specific thing over and over again to bridge the gap when there is a task a machine can't handle.

A developer just needs a computer, a compiler, and some motivation.

So the baseline is, and this applies to almost all kinds of jobs, stay relevant and be good at what you do.

This article is so true, software dev job market will implode in long run.

Generalizing from the Valley to anywhere is insane. The Valley, right now – like it or not – is the NFL for geeks. (For better and worse.)

Can someone who has experienced "social stigma of being a programmer" share what's it like?

well the NO 2 guy at BT labs (the uk equivalent of Bell labs) was confused with a car mechanic when he said he was an engineer.

So, I don't know if people remember the early 2000s, but it wasn't a terribly great time to be a programmer. All the jobs were going out to India. However, I learned a very important lesson. You have to be competitive. If you were someone who couldn't see past cobol, you did become obsolete. While programmers in India are still relatively less expensive than their counterparts in the US, top programmers are still sought after and make significantly more than the rest.

Sure the barrier to entry is "low", but it isn't that low. I think one of the main problem is, calling someone a programmer is an extremely "broad" term. I know some who can barely string together a few lines of PHP code and other who design and build complex systems which run the world and improve people's lives. If you're a programmer who just "codes" HTML, which you learned over one weekend and haven't take the time to improve your craft, sure you may be working now, but you're likely to get wiped out easily since the barrier to entry into your line of work would be very low.

In a sense the OP is right in that programmers shouldn't be complacent. I know a lot of C coders who have serious BS ego issues and refuse to do anything but C and then complain that they can't find work after being laid off.

BUT, I'm not shivering in my boots due to Stripe and Wordpress. Any programmer knows there's a bunch of crap that's tedious work which can be automated away. The good ones automate them and improve their craft and focus their energies on building better systems. I think that even with Wordpress, Stripe etc, there's a lot of room form improvements in the way we develop.

I recall spending days getting a dialog box UI just right in MFC. I thought it was stupid then and after using C#, never used MFC to build a dialog box ever again. Result wasn't that I'm out of a job. I actually have been able to produce a lot more. Programmers are in ever more demand than before. Sure the field will probably get tapped at some point, but to say it's going to be due to "automation" which has been a staple in our profession since the very beginning is simply inane.

Going with the autoworkers analogy, there are people who turn wrenches and people who figure out six sigma. If you're doing something as simple as turning a wrench, sure, you will get easily replaced by robots. But if you're innovative and competitive, you'll be significantly harder to replace and you can probably find applications for your skills in many more places. There are certain skills you just can't automate away so easily.

I would argue that programmers/developers will have jobs long past even doctors (maybe). Repetitive tasks can easily be automated away, creativity and innovation on the other hand aren't quite as easy. (FYI, the reason all programming jobs aren't just in India is because the US still rocks when it comes to creativity and innovation, based on my own experiences as an employer/manager and in speaking with others in the same position who have programming staff worldwide)

Depends on where you live.

Too bad autoworkers never made $100k+/yr even with inflation adjustment. Very far fetched.

I worked in the auto industry for 10 years and I can tell you that, before the industry crash, I knew a guy who put the owner's manual in the glove box and made over $100k/yr. This was not uncommon and the guys that worked a lot overtime were millionaires. I remember one gentleman who was 72 years old and still working 7 days a week. I can tell you a lot of stories about the automotive industry that you probably won't believe.

I know of pit deputies and shot firers who make £100k in the UK

Happy Labor Day!

There will be another distinguishing mark on programmers. Those that can write their own code and those that can fumble the pieces of other's code together to create a product.

There will be a lot more of the latter in the future than there has ever been.

Load of carp.

Registration is open for Startup School 2019. Classes start July 22nd.

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