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.