Hacker News new | comments | show | ask | jobs | submit login

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

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

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

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

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

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

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

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

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

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

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




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

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

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


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


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

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


You are exactly right.

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

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

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


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

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


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

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

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

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


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


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

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


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

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


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

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

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

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


Stop patting yourself on the back. Seriously.

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

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

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

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

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


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

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

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

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

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

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

If they could, they damn well would.


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

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

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

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

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

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

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

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


Totally disagree with that.

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

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

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


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

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

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

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

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

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


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

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

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

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


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

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

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


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

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

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


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

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


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


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

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

Title: "IQ Estimates by College Major"

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


You aren't the mass of unemployed people.

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


> Stop patting yourself on the back. Seriously.

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

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

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

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

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

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

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

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

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

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


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

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


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

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

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


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


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

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

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


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

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

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

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

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


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

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

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

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


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

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

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

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

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

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


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

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

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

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

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


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

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

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

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


Those drop out rates are appalling!


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

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


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

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


[Programming] requires critical thinking continually and learning continually.

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

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


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

They were not good programmers but better politicians.


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


Minor correction:

... still lack any educational curriculum.

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


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

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

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

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


Good comment, but I have to disagree with it.

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

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

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

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

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


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


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

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


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


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


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

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

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

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

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

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

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

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


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

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

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

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


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

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


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

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


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

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

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

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


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

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


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

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


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

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

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

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


Good old vocational education.


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

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


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

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


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

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

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

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


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


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


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


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


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

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

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

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


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

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

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


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

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


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

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

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


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

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

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


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


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


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

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


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

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

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

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

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

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


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

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

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

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

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


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

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

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

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


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


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

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


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


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

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


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


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

Because pointers and recursion are hard!


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


Many interesting arguments here.

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


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

"Winter is coming" :-D


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




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

Search: