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.
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.
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.
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.
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.
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?
You're talking about the "Silver Bullet,"  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."  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.
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.
In the heyday of the automotive industry, the best
auto worker in the world produced about the same
output as the average auto worker
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 ...
Though there are/where a lot of "spanish practices" in traditional engineering.
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.
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.
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.
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.
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.
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.
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  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  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.
 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.
 median personal income in the U.S. is about $30k/yr.
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.
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.
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.
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.
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).
That said, there are still clearly disadvantages to being coders.
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.
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.
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.
I graduated in 2012. From our CS department, every student who at least managed a B average walked right into a real dev job.
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™.
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.
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.
It takes more sacrifice than you think to learn new skills.
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.
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.
What have changed , just ruby on rails type frameworks , or something beyond ?
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.
Watch the curriculum of young children change. 10 years is all it will take.
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.
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.
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.
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.
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.
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.
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 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.
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.
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'.
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.
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?
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.
Because pointers and recursion are hard!
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.
"Winter is coming" :-D
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.
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.
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.
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.
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.
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 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.
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.
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.
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)
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).
Art major, advertising minor, employed as a Software Engineer right here.
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"
I, too, find myself assuming that if something is easy/achievable for me, it would be easy/achievable for anyone.
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.
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 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.
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?
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).
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.
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.
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
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?
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.
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)
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.
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.)
They were not good programmers but better politicians.
... 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.
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.
I think Drucker would argue that "Developers" are the new class of "Managers".
Drucker, Peter F. (2010-04-02). The Practice of Management (Kindle Locations 490-496). HarperBusiness. Kindle Edition.
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.
I'm guessing you aren't old enough to remember the dot com bust then...
I believe that I am able to judge programming competence, and my bar for labeling poverty is not inaccurate.
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.
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.
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.)
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.
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.
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.
I have never heard of a job this bad. Maybe the U.S. is just El Dorado for programmers?
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.
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.
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
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.
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.
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.
Isn't that happening today with the substantial number of developers who do freelance contracting/consulting?
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.
But when I do, I close it, stick it in a case, and put it in my backpack.
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.
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
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?
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.
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.
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...
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.
It hasn't even begun to slow yet, has it?
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.
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 :)
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.
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.
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.
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.
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).
web development which the author comes from is a tiny part of the IT industry as a whole.
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.
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.
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.
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.
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).
A developer just needs a computer, a compiler, and some motivation.
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)
There will be a lot more of the latter in the future than there has ever been.