72 comments

[ 1.7 ms ] story [ 121 ms ] thread
I wonder if he doesn't realize companies are just always claiming a shortage so that they can import more cheaper H1B workers rather than hire domestic...
(comment deleted)
"If there's a shortage of programmers, we could pay programmers more money." - the idea is driving salaries down, unfortunately. Even Apple who happens to own the largest hedge fund in the world, was trying to keep salary level constant by entering the illegal agreement with Google et al.
One of the suggested solutions is for companies to raise wages. As far as I know, these companies already pay high five-figures for new, full-time employees.
Exactly right:

Tech companies wish to encourage people into code primarily in order to reduce their wage bill.

Zuckerberg and Gates are not credible authorities here.

There is not a shortage of programmers, there is a shortage of inexpensive programmers.
Alternatively perhaps the market undervalues the task of software development
Doesn't that imply that there is a shortage of programmers worth their salary?
Then...drop their salary? Are these companies being run by four-year-olds? "We lured developers with huge compensation packages because we only want rockstars, but we end up losing money on them!" Which is it? Is it a highly valuable skill that everyone should learn (why doesn't the company owner learn it then?), or is it "sneaky non-unionized-and-colluded-against-by-Google-and-Apple developers aren't "worth" their salary?" Gotta pick one.

Some companies are just not the best use of dev time, and should die if they require it to survive. I feel much better saying that about companies than people.

How could there not be almost nobody but "four-year-olds" in an immature and fast pacing technology sector?
But there are not. A sector being new is not a constraint on the individuals.

Plus, pleading about inexperience seems a little late. It's 2014. The Mythical Man Month was written what, 40 years ago? Maybe I'm off and it's 30. Still?

Honestly as I think about it, that is a book everyone should read. Managing software development is a more valuable skill than the actual development.

Yes. In the start-up world I suspect that crap idea or no market are more common reasons for failure than bad software.
true. there is a shortage of inexpensive programmers in the US.

More people coding = more entry level programmers that are cheap (because, ya know, outsourcing overseas is a bit of a hassle, H1B is a mess, etc, etc).

There are probably too many fucking programmers...

I would rather see developers in the community focus more effort into already existing libraries/frameworks and making them easier to install/setup/build an MVP.
After 25+ years of coding and reading other people's code I would submit that the REAL problem is that the people who do code don't do it very well, some are downright stupid.

There are a lot of people out there who will never be able to produce anything beyond "Hello World" and some will struggle to get that far.

What if we focused early on identifying kids with good problem solving skill and other aptitudes that might make them good programmers and encouraged them to explore those areas. What if we did that for every discipline?

No, that would mean taking an interest in kids instead of just herding them into classrooms where they can be safely ignored until they're 18. Let's keep doing that.

I don't agree with your approach at all. You seem to start with an assumption that problem solving skill is innate and cannot be learned, which I strongly dispute.

If you focus early on identifying kids with good skill, you might be pushing kids down the wrong path for them, or you might be excluding a lot of kids who will develop greater skill a little later, or exclude those with great creativity that could be applied to coding with a little tuition.

Creating a group of people who are pre-approved for coding careers seems to me like an awful idea. In fact, I believe that this already exists, and that's where your problem comes from.

Innate ability may be a large factor in programming success. See: http://blog.codinghorror.com/separating-programming-sheep-fr...

If true, it would explain the apparent contrast between many programmers' attitude of "C'mon, this is easy! I can't believe they pay me to do this." and non-programmers view of coding as abstruse and frustrating.

The study that Jeff comments on is dubious.

The 'double hump' he discusses is nonsense. The study evidences it from test results where a group of people scored nearly-full marks and another group of people scored a lot lower, i.e. the inevitable result of any test where each question is testing the same skill.

I didn't say "push" I said "encourage to explore" and I didn't mention any kind of cut off age where educators would stop evaluating kids, this would have to be a continual process not the "GATTACA" style career predetermination you fear.

Realistically, there is a segment of the population that will never be able to acquire skills that good coders have, or have acquired, regardless of how much you try to teach them. The "Hello World" crowd. I went to university with some of them.

If you stop and REALLY think about it "everyone should learn to code" makes about as much sense as "everyone should learn to repair their own car". Would everyone like to be able to repair their own car? Sure. Would this be a useful skill to have? Sure. Is everyone capable? Absolutely not.

How about this.. go and spend a few hundred hours to acquire a skill you may never use again. It has to be one with which you have had no previous exposure or proficiency. Sounds a bit stupid when it's put that way doesn't it? That's essentially what "everyone should learn to code" really sounds like.

> I didn't say "push" I said "encourage to explore" and I didn't mention any kind of cut off age where educators would stop evaluating kids, this would have to be a continual process not the "GATTACA" style career predetermination you fear.

You would have to be more specific about what you are proposing, because it really sounds like testing for career predetermination.

I think EVERYONE should learn to code just as everyone learns ARITHMETIC.

Imagine a world where only a few of us knew how to balance an account, or a few of us understood how much will they have left if they spent x amount at the gas station.

Now imagine a world where everybody has a basic ability to develop software.

All the above being said, the beginning is not programming, but learning how to Think, Read, and Write. Not programming language, but human language. When we have learned some basic thinking process (logic), then having the ability to easily program will follow.

(comment deleted)
>Now imagine a world where everybody has a basic ability to develop software.

Pointless, I think. They'll only be able to make the most basic of software. Existing programmers complain about bad code and naive solutions already. This will only compound the issue.

I'm not sure if programming teaches critical thinking, reading and writing any better than the existing subjects we have.

Pointless, I think. They'll only be able to make the most basic of software.

If every doctor could write their own SQL queries against their own data, if the dentist office manager could pull the list of customers who live within 2 miles, if the marketeer can put his own static site very quickly, if the scientist can write code the parses his text and automatically pull related text from wikipedia and links to relevant papers written between 1738 and 1776. Why must they wait for you and I to do this? Why the wait?

I'm not sure if programming teaches critical thinking, reading and writing any better than the existing subjects we have.

My point is that learning critical thinking, reading, and writing is what we should focus on because it ultimately makes better programmers.

For what is a good program if not a well thought through problem (logic) turned into a few lines of text (writing, reading) that provide the solution.

They get us to do it because we have more practice. They're going to be spending a bunch of time hacking away at a query or parse to make sure they have everything or else they might have missed some of that data. At worst, they make a decision with that bad parse or data. Language gotchas are a real pain for people at this stage. I agree it's not rocket science and any of those examples possess the capability to learn that sort of thing. The key difference between a doctor and I is confidence that we did it right.
How about this... go and spend a few hundred hours to acquire a skill you may never use again. It has to be one with which you have had no previous exposure or proficiency.

It sounds a bit stupid when it's put that way doesn't it?

That's essentially what "everyone should learn to code" boils down to.

There just isn't going to be any meaningful return on the mental investment unless coding is going to be your new career.

Imagine a world where only a few of us knew how to balance an account, or a few of us understood how much will they have left if they spent x amount at the gas station.

You're living in it. Math illiteracy is very common.

But Arithmetic is not. I am not making the case for Math, but Arithmetic. I am not making the case for Computer Science, but programming.
(comment deleted)
"Problem solving skills" is an overly broad, corporate word, which is just as bad as synergy, in my opinion.

You cannot test for "problem solving skills". However, you can test for more concrete definitions of intelligence (http://en.wikipedia.org/wiki/Theory_of_multiple_intelligence...). I am a decent programmer and I was never amazing at formal schooling. I always scored really high for visual–spatial intelligence in standardized intelligence while in school. My councilors told me I was good at reading graphs and maps and maybe I should go into geography. Fast-fowrard to today when I am a programmer and I've read that visual-spacial intelligence is one of the most clear predictors of a programmer's ability. Too bad my high school consoler thought I should go into geography and not programming. The real advice he should have given me was skip the whole college thing and learn how to program on your own, but that probably would not have flied with the powers that be.

I was intrigued by your comment about visual-spatial intelligence predicting programmer ability so I googled it.

What I found suggested it predicted computing careers (along with science and engineering, and negatively predicting Law, Social Sciences end Education) not talent at programming (or Law or Engineering etc.).

Also, it correlates with being male (though the researchers claim that female scores can be boosted with some training). It's not clear if that was taken into account when calculating the careers.

I think that one of the reasons we see so much bad code, is that customers have a very hard time evaluating the quality of the code, and therefore both problems could be solved by learning more people how to write code.

I feel that I can write as bad code as I want to, and still get away with it (not that I do it), since nobody realizes it is bad until another programmer works on it which might be years later, or even never.

If bad programmers were identified easier, they would be forced to go out of business or start to make better programs! And with more people that can actually code, people wouldn't be forced to choose the bad programmers.

Lawyers have to pass a bar exam. Doctors have to get through medical school and supervised internships. Real engineers have to go to an accredited school. Truck drivers have to pass a test and prove they can drive a damned truck before they get the job.

People aren't forced to choose bad programmers, they don't know bad programmers from good ones or even barely competent ones.

What do you have to do to get hired as a coder?

Put a few buzzwords on your resume, spout them back in an interview to someone who has no idea what they mean and frantically google whatever you don't know on the job.

This is why everyone wants you to take a whiteboard test before they'll hire you now. It's all the due diligence they can afford. Sadly, a simple FizzBuzz test would disqualify most "coders".

http://blog.codinghorror.com/why-cant-programmers-program/

"Companies could increase the representation of younger people in programming by paying extra money to programmers below a certain age."

With ageism being considered "natural", what about giving incentive for old developers to keep coding instead ?

Just pay extra money to all programmers.
Think a few steps further down these lines and you'll be able to separate the people worrying about "teaching everyone to code" into evil (companies looking for cheap labor) and stupid (people thinking there are problems that need solving where there aren't any and it is "solutions" that breed problems, in this case a surplus of professionals in one area at the expense of other areas and the workers who've needlessly entered this one area.)

Or maybe self-serving and naive/idealistic would be better terms. But you get the idea.

Indeed any consistent argument in favor of motivating people to program would at least mention aging programmers and no such mention is to be found, or at least I never noticed it.

I take offense to your " 'teaching everyone to code' into evil and stupid" comment.

When I say "everyone should know how to code" what I mean is that everyone should know how to open a spreadsheet and do calculations, conditionals, iterative calculations, &c. From there I feel it's natural to then teach them a little of something along the lines of Python to do some simple calculations and algorithms.

I mean that people shouldn't be afraid to use a computer to do (gasp) computations. I don't think everyone will be a coder, engineer, or architect. I don't even think most people will enjoy it, per say, but they should know how to do it (just like someone people complain about having to take math, music, or art), using a ubiquitous tool should be part of a basic curriculum.

>Indeed any consistent argument in favor of motivating people to program would at least mention aging programmers and no such mention is to be found, or at least I never noticed it.

I have no idea what you mean

>>Indeed any consistent argument in favor of motivating people to program would at least mention aging programmers and no such mention is to be found, or at least I never noticed it.

>I have no idea what you mean

Our industry has a fierce bias against older people, and indeed keeping an eye on HN for relevant stories shows that even top talent can be left to hang. If you're around at a company for long enough you'll see how some senior folk are fired and replaced by fresh college grads, sometimes after grooming those newbies for a while.

Absolutely none of that has anything to do with what I said.

Also, just because people have shop class doesn't mean that everyone will become a carpenter.

Thanks to everyone who downvoted without expressing your opinion. It's great to have a discussion with you!
I agree that money is the solution to such problems, however reducing the incentive once enough programmers have entered the workforce would compel people to leave the field and do something else. If it was known that this reduction would come, it's likely that it might not have a positive effect on programmers and many people would not necessarily pursue a career in the field.

Also, one has to take into account that most people will just not cut it as programmers, no matter how much time or even practice they may put in.

(comment deleted)
This is a rather forceful and coercive way to solve this (alleged) problem. I'd expect to see lots of mediocre labor pop up as a result.
It's not like the software world isn't full of mediocre labour to begin with.
I believe the "get more people to code" movement wasn't about "we need more programmers". It was about what Alan Kay might call "digital literacy".
And why do we need digital literacy any more than machine gun literacy or brain surgery literacy or anything like that? Except Alan Kay, everyone knows perfectly well how useless programming is to anyone but the professional programmer.
I think the "learn to code" movement should eventually evolve into "learn to X", where X is something that does prove to be widely useful, and for which "coding" is a prerequisite skill. Data analysis strikes me as a possible value for that X.
This is flawed in its effects. While it may result in more coders, they will be concentrated in the areas with the available money to pay them more. I'd argue that this is very similar to what we are doing already. Programming is chasing the money and not the most pressing problems.
(comment deleted)
I think that all this "get people to code" movement is bullshit. If you like programming you are going to do it no matter what. For some years I was without a computer, but I still managed to program in my smartphone. I will always like programming regardless of the outcome. If one day I become successful because of this great. If not at least I lived my life the way I like.
(comment deleted)
This is an understandable way to look at the problem, but I think it's largely wrong. You need to capture minds while they're still very open to learning. People are locking themselves into career paths by the time they graduate college, at least in America. Student loans means getting a second degree in something you rather do is largely impossible since you have to start paying down your debt when you graduate. A higher-paying job sounds great, but when it'll take an extra $400/month in debt for the next 10 years, it's pretty hard to justify. This leads to thinking "Huh, let's engage minds earlier".

Most people in high school aren't thinking super-hard about their careers. They're thinking about school and college. Even then, kids learn about "big" achievements - RNA, species classification, electron shells, WW2, White House scandals, etc. You're aspiring to be someone if you're in an area where you have scholastic resources, not just some programmer. You're not looking so hard at money. If you're in an impoverished area where graduation rates are abysmal and you're not even being taught science, the odds of being a professional athlete or pop star look about the same as going to college - a whole different set of challenges. Let's assume we're talking about high schools with resources to even have computer classes.

Paying more money doesn't make it a sexy profession - there are plenty of "famous" programmers that the HN crowd knows about, but none of their achievements are public. Creating a business like Amazon or Facebook doesn't have the same personal allure to most people like inventing a vaccine for polio does. I bet if you asked a classroom of high schoolers who Jeff Bezos is, 85% of the room would have no idea. There's no _personal glory_ to being a programmer.

With law, you can help people's lives directly - same with being a doctor. There's a social value to those professions that seems obvious and immediate (even though it might be far from the truth). Most people want to do good in the world, and being a programmer has no obvious correlation with that. It doesn't entice students because there's no history written about programmers, no scientific experiments you do in classroom, no math taught that correlates with programming. It's in academic isolation until college, and by then, it's too late.

"This is an understandable way to look at the problem."

Who says it's a problem?

The author. It's the heading of the first paragraph after the disclaimer.
The author also has scare quotes in the title and refers to the shortage as "supposed."
the student loan system is a mess, but with income-based repayment, taking on extra debt doesn't actually increase people's monthly payments until they actually get a high-paying job.
Let's get "more people to code well" first. Then let's get companies to compensate their employees fairly (i.e. more proportional to the amount of cash they generate with their if and for loops). Then maybe we can start thinking about enrolling more people in the game.
I second the first and last statements. As far as compensation goes, here, an average Java developer makes a least 3x of what is the average salary for the region in which I live. Yet all local companies are complaining about the quality of job applicants and interns. Those high salaries seem to be attracting quite a few lazy people seeking easy money.
This piece is genius. For those who don't get it, it's dripping in sarcasm. Not to say that the author doesn't think it would work (he may have some misgivings about just throwing money at developers), but that he's calling bullshit on the motives of those talking about "learn to code."

People are paid in more than just money. There's job security, interesting work, autonomy, and (more motivating than people think) social status. The vast majority of developers don't have anything but money, and frankly a lot of them don't even have money!

There are things more important than writing code (even good, well-engineered code aimed at solving real problems). There's: playing with your dog, going for a run, spending time with your family, and going out for a night with friends. People have chosen all these things over learning to code. Let them.

Is it not a BIG RED FLAG that the prime message is "Everyone should learn to code...well, everyone but me, anyway."?

(comment deleted)
There are things more important than writing code (even good, well-engineered code aimed at solving real problems). There's: playing with your dog, going for a run, spending time with your family, and going out for a night with friends. People have chosen all these things over learning to code. Let them.

This doesn't strike me as a particular good argument; for one, it implies that it's OK to not let people chose less important things than writing code (say, watch reality TV).

But besides, who exactly is trying to remove that choice? I don't see any advocate of "learning to code" saying we should force people to code.

Is it not a BIG RED FLAG that the prime message is "Everyone should learn to code...well, everyone but me, anyway."?

Maybe. But then again, many of those pushing the message are programmers themselves.

I don't see any advocate of "learning to code" saying we should force people to code.

Perhaps not. But anything a teacher tells a learner to do is basically force. What choice does the learner have? They don't know any better.

This would be fine if what they were teaching were worthwhile. But it won't be: it will be "How to use Rails" (rather than, say, Ruby) or "How to use Bootstrap" rather than actually learning CSS.

"Like all brilliant ideas, my solution is simple". Too modest.
Code is a tool. We don't want more people to code, we want more people to make cool new things and automate.
Programmers already get paid more than most people. You're proposing a solution which has already been tried.
It is a real problem in Germany where IT market has 0% of programmers' unemployment, so they introduced Blue cards welcoming programmers from Eastern Europe. And it helps them, they get the workforce of moderate price, ready to learn and speak German. Their work language is English. So if it was a Real problem in the US, they would do the same. So far, it seems like another buzz.
One idea that comes to mind is the creation of a website with a list of problems that could be solved by coding, if someone would step up and do it. Regular citizens that are impacted by these issues would perhaps think they have a shot at solving a real problem for them, by coding something.

The main point is, some people might not be interested in coding just for the sake of it...

Is there such a list? Social hacks? Coding for change? What resources I could show a fellow citizen to get him/her fired up about coding?

Asking the government to create more coders seems like a good idea until you realize that our government doesn't 'know how to code'. Who would validate the code being submitted for benefits was good? That the children were learning? I realize this proposal is slightly humorous, but that was my first thought.
I think there's some moral issues in taking taxes from people who earn $40k and giving them to people who earn $100k.

Anyway, I think the issue of "not enough programers" is different to "not enough people can code." To keep beating the old writing analogy. One is "not enough scribes" and the other is "not enough literacy." At some point in history professional writing and literacy stopped being substitutes for one another.

Normal literate people didn't compete with novelists. Or looking at it another way, printing presses and literate public completely removed the need for scribes and (I think not coincidentally) we got lot more writers shortly after: novelists, pamphleteers and scholars.

So nurses who can code will not replace the programmers who wrote healthcare.gov but they might do different useful things.

We're told that the software profession must be made more accessible, and that programming should be taught to all children. Great, I agree. No child without the command line!

Let's also consider another industry: cars. Car ownership per capita in the US is greater than the rate of households with Internet access -- 0.769 versus 0.748. [1,2] So professions related to cars have greater impact on people's lives, on average, than professions related to computers.

Furthermore, most car owners would agree that maintenance is expensive, very expensive. Not to mention the fact that most mechanics are men. Nobody has proposed that everyone should be a mechanic, let alone a mechanical engineer. The President has not called for more mechanics, more women mechanics, or for relaxed visa requirements for foreign mechanics. These things would be seen as ridiculous.

Until programmers form a regulated professional body, with its own lobby, they will continue to be singled out by the various lobbies of the IT and social justice industries (strange allies).

[1] 240 million car owners in a population of 312 million, in 2011. http://wardsauto.com/ar/world_vehicle_population_110815

[2] 74.8% in 2012. https://www.census.gov/hhes/computer/publications/2012.html

Maybe we should also pay people to study math as well. [$10] for each Khan Academy lesson they pass. It'd cost ~$2,500 to educate one person on the entire math curriculum.

I think it's plausible, in the future, we will be paying people to learn.