Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

So where does the idea that developers are highly paid come from? I think it's because very young people can get a six figure job right out of school, or even without a degree. That's pretty rare.

But then it turns out that compensation doesn't scale with experience as quickly as in other fields, and that a lot of people have to switch to management to progress in their careers, so the overall median across all experience levels ends up seeming low.

In general, software development seems like a really good field to get into, but a mediocre one to be in for the long haul.

This same phenomenon underlies our perennial debate about interviewing: it's actually great that you can get an amazing job just by doing some artificial programming puzzles on a whiteboard, but it sucks that after ten years building expertise, with a long string of successful projects under your belt, you have to do artificial programming puzzles on a whiteboard to get a job.

The other fields you mention have the opposite setup. It's quite hard to become a nurse practitioner, but once you're certified, employers pay well and don't constantly question your basic level of competence.



> I think it's because very young people can get a six figure job right out of school, or even without a degree.

DING DING DING!

It was a clever scheme, and it even worked for a while.

"We need a lot of people to study CS, but we don't really want to pay them so much and cut into our fat bonuses. Whatever shall we do?! Oh, let's offer eye-popping entry-level salaries, that will get them to choose the CS major and learn to program. Once they do, they're committed, so we can just freeze their wages indefinitely. What are they going to do, go to medical school at 35?!"

> it sucks that after ten years building expertise, with a long string of successful projects under your belt, you have to do artificial programming puzzles on a whiteboard to get a job.

That's an artifact of the unfortunate fact that references are worse than useless in the US.

There's no real way for a new employer to objectively tell how well you performed on a particular project in the past.

Casual references don't work and are typically misleading.

I'll give you an example.

One startup I worked with had two very different developers.

One guy was totally incompetent. Multiple years of "senior" experience on his resume, but couldn't complete a single feature.

However, he was great at socializing, so when he got kicked out, several developers were happy to get on the phone and tell prospective employers how great he was.

Another guy was quiet, socially awkward, and introverted. However, he was among the top 2-3 programmers on the team. Completed some of the most critical parts of the project.

I guarantee that he had a lot more difficulty getting any references. In fact, I guarantee the first guy had a much easier time getting his next job.

Most employers who just speak to both and check references would get the highly inaccurate picture that the first guy was far more crucial and competent than the 2nd.


That's true. Is the cost of firing really that high, though? And how good are the tech tests at determining that a software developer will be good at working on a product? It seems to me that you could be great at printing all paths in a linked list of numbers that sum to to sum of a different path in a binary tree, but really not all that good at working on a product.

I know that many companies are so concerned about false positives (hire a bad developer) that they are willing to tolerate a high incidence of false negatives (fail to hire a good developer). That's an odd position for an industry claiming a severe shortage of talent, but there's also a strong case that if you allow too high a rate of false negatives, you can make it so hard to hire a good developer that you end up hiring a bad one. In short, it's more likely that one bad developer will slip through the cracks than a good developer will make it through, if the good developers are a small percentage of the hiring pool and the false negative rate is very high.


It would be helpful to see more data on this. I consider the CS degree at a reputable university (doesn't have to be elite, just a proper curriculum) to be very challenging compared to many other majors. And I do know plenty of programmers who got MS degrees in engineering, math, or other fields. But you are right, it is possible to bypass the entire thing.

I suppose getting a grad degree and becoming a software developer is giving yourself the worst of both worlds. As you point out, it's tough to get an MS in Nursing to become a NP, but once you're certified, you don't have to prove your basic competence by re-taking your organic chemistry midterm at the whiteboard 15 years into your career every time you interview.

But if you major in CS and get an MS degree from a reputable university... yeah, you're still doing take-home and whiteboard exams when you apply for a new job.

I would point out while programming has low formal barriers to entry, it actually isn't a trivially easy field to enter. Yes, you can say you're a programmer if you read the first half of a book on "PHP and MySQL" (or if you don't and say you did). But almost every interview I've been on has asked me to do data structures and algorithms questions at the whiteboard. It isn't just fizz buzz. It's "fine all matching subtrees in a binary tree", or "find all subsets within a set of integers that sum to a different subset of integers within the set". Others have asked me to do elaborate take-home tests, though I now refuse to do that (this has cost me some good opportunities, but I'm just not willing to do it anymore).

So software development does have a set of entry conditions - it's just that unlike a proper profession, they are applied informally, erratically, inconsistently, largely in secret, and administered and graded by people with widely varying levels of competence, and you have to go through them every time you apply.


What would the data you want on this look like? Are you looking for a survey of hiring methodology across professions, or something else?


Oh, my apologies, I understand the question you were asking. You weren't asking for my opinion on how this should work, you were specifically asking about what kind of data is needed.

Ok, got it. I'm interested in how viable a career path it is to try to go into software development without any degree, without a CS or related degree, or without a MS or PhD. The reason is that I've been on interviews for "data science-ish" positions (this was before it was a term), and I was whiteboard quizzed on:

Tree operations Markov chains Formulating linear programs Set permutations (you know, all permutations of a string, but hidden in a different question) Database normalization and queries.

I have an MS in industrial engineering, so I've studied this stuff, but I definitely have to hit the books and re-study for my midterms every time I go into an interview like this. I could look it up on the job, but to have it sharp and ready enough for a whiteboard quiz, I definitely would need to study.

So I guess I'd be interested in knowing the salary bands, job title, and degree. But here's the thing, that only tells you who got the job. To really analyze this, you'd need to know the percentage of people who apply and get interviews. I definitely think that having an MS from a top program does increase my odds getting some of these interviews. The difference is that it doesn't save me from having to re-take the exam every time I interview, unlike many other professions that have a more formal process for taking entry exams and keeping credentials up to date.


I don't have an answer to that question that I'm completely satisfied with, but I can give you my thoughts on it.

I'm extremely wary of formal ABA or AMA style licensure. It's not that I oppose it in theory, but requiring (for example) three years of formal law school (about 50k a year at UC Irvine, less at some publics, more at some privates) isn't something I'd want to see happen to software development. I also worry about who would control licensing. I've butted heads with the "no code in JSP" crowd that wanted to replace everything with tag libraries (until Rails, with ruby code in the page, more or less swept them aside), and I watched the test-driven development crowd start suggesting that people who even questioned the value of the methodology should be unemployable, likening this to a physician questioning whether washing hands is important. I imagine what software development would be like if these people got control over licensing, and I don't like it. I also really like the fact that a math major or similar can become a programmer, that you aren't compelled to do a very specific degree or path.

There is the actuarial approach - a series of exams that don't require a specific degree, but you will need to acquire substantial math (calculus, differential equations, linear algebra, vector calc, numerical analysis, and more, followed by more industry specific topics) to pass. I like this because you can major in whatever you like, or even self study. Senior actuaries with a decade aren't quizzed at the whiteboard on whether they can do a complex integration by parts, partly because it probably doesn't matter, and partly because they have already passed a proper exam. This one doesn't scare me the way the "law school" style licensing does.

Other ideas floated are unions along the style of Hollywood unions, which provide some worker protection but allow the flexibility for high variance in talent and compensation.

All said, though I'm not sure any of this is necessary. What I actually think we need to do is just let the market work. I think we need to accept (well, powerful Silicon Valley companies and investors need to accept) that if smart and talented people don't want to become software developers in SF/SV, that's the market's answer. People respond to a wide range of variables - working conditions, quality of work, nature of work, career stability, job flexibility, compensation, the risk of age discrimination, barriers to entry, and so forth. It appears that many of the people who are able to become software developers are choosing to do something else. That's not just ok, it's great. It's human freedom.

What we have, though, is a government that, at the behest of these powerful tech companies and investors, created a shadow immigration system run by and for the interests of these corporations. We actually set up a system that creates a large pool of workers who aren't free to engage in that decision making process I described above. And I want to be clear here as I have been in the past - I am perfectly happy to see talented people move to the US! I'm not happy to see Facebook empowered to decide who is - and isn't - allowed to come here. That prevents the market from working, and it's why we continue to have "shortages" that, well, aren't.

I enjoy talking about this on HN, but I'm actually at the point where I think there is no possibility of any of the above happening. Software Developers will not organize. Congress will continue to hand Silicon Valley control over the immigration system. Immigrants who come here under tech work visas will not have the right to become florists, dental hygienists, or drywall installers, they will have to do the job Facebook says the have to do as a condition of living and working in the US. The green card system is designed to take forever, so that by the time these immigrants have freedom, many career options are closed or come at a much higher cost. That's the intent of the system, it really is. Billionaires like it, which is why it will not change.


You're right, this didn't respond to my specific question, but I enjoyed the comment anyway, and agree with much of what you say.


Yeah I realized that a little after, I posted an answer to your actual question above


This is exactly it. New grad salary for developers is great, and within the first 5-10 years you can expect growth. But after that you pretty much plateau to the point where switching jobs doesn’t even get you an increase. At that point you have to get out of development for further career growth.




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

Search: