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

It's all about education. We just got lucky that we picked IT when we were young.

My wife always laughs at me when I refuse to take a job, because "it only pays $60 per hour". Her friends and her don't have any high tech education, and $20-30/hr is their ceiling, most of them making less, and at the same time the jobs they do seem so much more boring than creating websites or building apps.

We are truly lucky, guys. Enjoy the ride it while it lasts.

I learned programming a little later in life and then got into professional software development. I would say the huge thing that makes programming (not IT in general) relatively lucrative is not about education but about skill. Good programmers are hard to find and therefore expensive because they have put a lot of time into developing their craft. If you look around at other fields, having a specific skill that requires practice and time to develop almost always pays off (especially if the skill is a practical one). Highly skilled carpenters, electricians, and plumbers make salaries very similar to good programmers. And at the more extreme end most of the highest paid people in the medical world are surgeons, who are also valued for a highly practiced skill.

If you have a practiced skill that takes years to develop you are, in most cases, valuable because this is a rare thing. Truth be told very, very few people have the patience and enthusiasm to learn a skill well, so it's almost always valuable when someone does.

Around here a major project had to be shut down simply because the contractor could not find enough welders to do the work.

No, the contractor just didn't want to pay them by the market-determined rate.

If he were offering the right money, welders would come out of the woodwork. They would leave other jobs or relocate.

ABSOLUTELY. It's not about education as commonly taken to mean "college degree." It's about having devoted the effort to develop a skill to the point where you can practice it with high competency.

This is exactly how I feel. I can't really take a lot of credit for thinking practically or rationally when I chose my profession. Just like everyone who studied history, philosophy or nothing at all, I am doing the thing that appealed to me most. Of course, not everyone is like me, but in talking to other programmers whom I respect, the vast majority are doing this because it's their passion.

The fact that it happens to align with a huge economic need, and that it's an amazing profession from every possible vantage-- that's just pure luck and historical happenstance.

Of course there are others who did go into programming for purely practical reasons. I had a colleague once whom I regarded as kind of a mediocre and passionless programmer. He was a cool guy though, and we got to talking one time. I started asking him about programming stuff and he stopped me. He said, "Man, I do this because it pays the bills and provides a nice home for my family. I'm a painter, not a programmer." To be honest, I had a huge amount of respect for that guy after that.

I don't think it is education per se, but having a job that people are unwilling or unable to put at the other end of the world. I have friends that have a high school education, but have skills that command $50 - $80/hr. They are in vocational jobs working the ND oil fields. Automation is nowhere near good enough to replace them, and at -20F when a pipe needs repair you need good, skilled people now.

I guess depending on how broad your definition is, then it my scenario supports your assertion. All vocational people have a training period (modern version of an apprenticeship).

I'm not sure a lot of IT is actually that safe. Companies have a lot easier time outsourcing IT to another country then welders. Silicon Valley has inertia and good laws to foster innovation and startups, but others can change their laws and unfunded liabilities of the state government might not allow for stable conditions long term. SF's attempt at taxing might not be an anomaly but a trend.

Would you rather work in an oil field in -20F or creating a website in an office while sipping your morning coffee?

For myself, I pick the website. For some of my friends, my job would be a death sentence and they would pick the oil field.

Depends whether you ask on a Monday or Friday.

Programming isn't that hard - why don't any of them want to join us? You could become a passable programmer in 3 years and there's no school admittance board you have to impress with test scores!

So I periodically think this is true, and wonder "Why do I get paid so fantastically well for just drizzling some AJAX goo on top of pre-existing APIs?", and then I actually talk to Real People (TM) and remember that I inhabit another planet from them.

On their planet, being able to calculate the area of a rectangle reliably, the first time, makes you anomalously good with math. The notion of programs as long strings of instructions, followed sequentially, with predictable results is a fantasy: computers are observed to operate mostly randomly, all of the time. Some days I go to my Googles and it's the Googles with the box in the middle,a some days I go to my Googles and it's the Googles with the box at the top. Why does Microsoft keep changing the Googles? THIS IS SO FRUSTRATING.

You and I might think there is a distinction between programs and data, and we could describe how these exist in different places in a hierarchical file system on a computer, which is an abstraction over sectors on a hard disk. Every technical word in that sentence is scary juju to most of the population. There are many otherwise intelligent people who cannot open MS Word without a document emailed to them first. If you took away the document, they wouldn't know how to open Word and wouldn't know how to correct that.

In addition, many folks who are unemployed or underemployed in the United States either cannot read this post or cannot understand enough of it to answer simple questions like "Does Patrick think that programming is hard?"

You can certainly become a passable programmer in 3 years starting from being well-educated, intelligent, and reasonably skilled at knowledge work in the information economy. If you're 3 for 3 on those, you don't have a problem right now.

Every technical word in that sentence is scary juju to most of the population.

This is why I hate to get into small talk with someone I've just met. One of the first polite questions I get is "so, what do you do?" and to judge by reactions its as if I immediately start talking like the adults in a "Peanuts" cartoon. And even if I try to be as nontechnical as possible ("I do website work") you can see they just don't want to continue the conversation at that point.

"I make websites. No, not the pretty graphics and stuff, the bit that make them do stuff. You know that little "e" up in the corner? Whenever that's spinning around, my stuff's happening."

"sound exciting"

"Yeah, it's almost exactly that exciting. So what do you do?"

Yeah, when this happens I always feel like I end up being way to high level to actually give the other person a good idea of what my startup does and they lose interest pretty fast.

> On their planet, being able to calculate the area of a rectangle reliably, the first time, makes you anomalously good with math.

So true. I work in an industrial environment, so I end up helping a lot of people out with math. High school geometry might as well be wizardry.

> You and I might think there is a distinction between programs and data

I know you're talking about the difference between word.exe and data.doc, but you're probably going to excite the Lisp programmers with a statement worded that way.

> High school geometry might as well be wizardry.

And yet does anyone doubt that they could learn highschool geometry if motivated to do so?

"You and I might think there is a distinction between programs and data"

Not if you are a Lisper.

I used to be very interested in education during college (stil am). One thing I found really interesting from the writing and research I did on the topic was international comparison.

Here's a fact I learned that has stuck with me for years since: in China, everyone learns algebra in 4th grade, no exceptions[1].

Now the point of this isn't that the Chinese educational system is so awesome (I actually think that there are some really bad tradeoffs they make), but rather that the thing that we think is so difficult for highschoolers can actually be done 100% by every single person in 4th grade. It's an existence proof that for quantitative knowledge it's just a matter of training and context.

Anyone who is reasonably conversant with a computer (in the sense that they know how to type, they can use a mouse, etc.) can be taught to program. It's no harder than algebra. It's within their capacity. The problem I think is that it's just not conceivable. It's not really taught in schools, and it requires you to learn an entirely new set of skills and vocabulary.

I will grant that perhaps 3 years is an underestimate; it might take 6 years. I haven't run any actual experiments. But programming is not cutting edge research; you're not writing a PhD.

I agree with you that most of of the population really truly does not understand computers right now, I just disagree that if motivated they couldn't learn and quite quickly.

[1] Well of course there are a lot of exceptions: the mentally handicapped, children who live on the farm, children who have to work in factories all day. But for students pushed through the system, they all learn.

Programming isn't that hard to you, it's extraordinarily hard to a large percentage of the population. There are plenty of things I perceive as hard that people who specialize in it do not (I can't draw for the life of me!).

You might try Henning Nelms Thinking with a Pencil, it is a great source for learning practical sketching and drawing.

Drawing is actually a skill, you can learn it. It just takes time. Make 10-20 drawings a day of real life objects, and in 3-4 months you will see how much better you are.

This is completely true. I took a 1 year drawing course in highschool and was shocked by just how good I got, practicing 5 hours a week.

Most skills are not as difficult as people think they are with consistent effort over time. People are not born with a drawing module in their brain that makes them different than you, and that's true for programming and pretty much everything else as well.

To be a good programmer is hard. It requires knowledge of a lot of areas - math, logic, algorithms, particular languages, operating system, networks, databases, particular technologies.

Just think of what it really takes to create even a simple dynamic website.

I think to be a good/great programmer is hard. But to be a good-enough programmer to make a well-above-average living isn't that tough.

Exactly. Even below average programmers can find a job and feed their families.

I can honestly say that I hardly ever really use math in the programming I do. The rest I agree with.

EDIT: To clarify, I hardly ever use math at the level I was required to study in my comp. sci. degree curriculum. Of course I use basic arithmetic calculations often enough.

Yes and no.

Do we not use many of the concepts?

* boolean algebra / simplification of terms?

* vectors, matrices, tensors (er, strings, arrays, objects)

* functions? functions of functions?

* set theory?

* graph theory?

* "closure" of operations (e.g. - what are the limits / bounds of this operation / function? Can I encode every character / code-point in this output representation? -- no? prepare to get hacked, then)

3 years of learning will only land you very junior level positions. In 3 years you will barely learn how to write crappy code and a few technologies.

I've written a few times here about how I interview people. Most of the candidates have BS degrees in comp sci, most of them have 3 to 15 years of work experience. Most of them cannot write a (correct) function to reverse a string.

Yes, this is true. They'd only be a passable programmer after 3 years, not a good one. But the main point is that a very junior developer position is actually a really good job for most people.

Where are you interviewing? Are you putting tricky restrictions like you can't allocate a second array and other things like that?

I recently had 2/5 candidates with Master's degrees in CS unable to give me a number in hex. I didn't ask them to write a program to do it, just to include it in the email subject when replying to a posting. Another 2/5 of them gave me awful code to do it. It's kind of sad.

I interviewed at a very large corporation. 3-4 interviews a week.

We accepted any correct solution.

You've said correct twice, but what do you mean by it? Do you give a spec they have to meet or a test set to compare against? Must they handle encodings/Unicode, or fail predictably in edge cases? Or are you talking about characters swapped, even/odd lengths/ empty strings, that's all?

Oh, we usually ask a very simple version - function to return a reversed string that's passed as a parameter. It consists of English letters, it's not blank. You're not allowed to use the standard string reverse function/method.

It never gets to edge cases. Most people can't even write the simple version.

I'm pretty sure nobody can write the unicode-safe version during the interview, even the smartest developers I've worked with (I guess that depends on the language though).

Indeed. I occasionally wonder what I'd be doing if I had been born a hundred years ago. I figure at best a stockbroker, more likely an accountant doing lots of manual arithmetic.

I get the feeling a good chunk of programmers would have tried their hand at early electrical / mechanical engineering. Planes and cars were in their infant stage. Computing-Tabulating-Recording Company (IBM in 1924) would have been interesting.

// Some in the IT field would have been selling snake oil, because they do it today.

I think I would be a blacksmith or carpenter. I think building things is the underlying common factor in things that I like to do.

This. As a kid, before getting into computers I built model ships (from scratch, ie. from plywood), played with Lego, fooled around with electronics and generally tinkered a lot.

I find that similar to programming: designing and improving a project in iterations, understanding how things work by analyzing their internals, remembering processes that work, etc.

So I guess that 100 years ago I would have been either into mechanical or electrical engineering or some other more traditional skilled work like carpentry.

I'd most likely be a homemaker because that was all that was available to most women 100 years ago. I often count myself lucky that I was born in an age when women can become programmers.

As a man, I count myself lucky that I was born in an age when a man can become a programmer. In the early days of the industry, programming was relegated to a "woman's job". I think it goes to show just how ridiculous gender biases are.

As for what I would be doing, likely a farmer, as that is a job I still do today. Though I'm not sure I would want to give up some of my modern conveniences.

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