The H-1B Delusion
Maybe you're just not very impressive as a programming candidate
As an immigration restrictionist, I find the H-1B programmer debate irritating. Maybe, like me, you’re wary of the cultural change accompanying rapid immigration. Maybe you object to how such workers are treated, effectively being held hostage by their corporate hosts. Or maybe you simply don’t like the little ethnic enclaves that inevitably form inside big tech companies, rife with obvious nepotism in their hiring. But it’s hard to deny the basic economic driver of the H-1B program: US tech companies can’t hire enough qualified American-born workers to fill all the roles they want. And yet, for the twenty-plus years I’ve been paying attention to this debate, there’s been a steady drumbeat of dissatisfied tech workers voicing this exact denial. Read any Reddit or Twitter thread on the topic and you’ll find hundreds of people claiming that there’s no actual shortage of qualified US-born programmers, that the H-1B program is just a scheme to suppress native wages. Here’s a representative recent example.
Defenders of this system will tell you that we need foreign workers because Americans can't fill these roles. They'll point to skills gaps and talent shortages, conveniently ignoring the fact that we're graduating more computer science students than ever before.
If there's truly a shortage of qualified American workers, why are employment rates for new graduates in free fall? Why are starting salaries stagnant? Why are recent graduates taking jobs that don't require degrees?
The answer is simple: there is no shortage. There's only a desire for cheaper labor and more compliant workers. H-1B visa holders are tied to their employers and can be deported if they lose their jobs. They're less likely to demand raises, switch companies, or report workplace violations. They're the perfect workforce—if you're an employer looking to maximize profits at the expense of worker rights.
There are some true elements to this complaint which I don’t want to downplay. In particular, it’s certainly true that immigration, even of very qualified people, does drive wages down by increasing the size of the labor pool, all else being equal. (Yes there are complicated arguments about everyone getting richer even if there is more competition for jobs, but labor pricing does not become magically immune from the law of supply and demand if someone crosses a border). And it’s also true that H-1B employees can be easier to control or mistreat because of their limited mobility, although I don’t have the impression this is a major problem.
But there’s one element of this complaint that’s just not true: talented Americans are not getting crowded out of the market by immigrants, and there is in fact a chronic shortage of well-qualified programmers from any country. There is always churn and local market exceptions, but by and large a skilled tech worker won’t have much trouble finding a new job when he wants to. This is less true at the moment than it usually is because of factors that have nothing to do with immigration (more on that in a minute), but that’s the big picture.
How then to square the above claim with employment data for new CS grads?
The percentage of computer science graduates employed full-time within six months of graduation has plummeted from 73.2% in 2014 to just 64.3% in 2023. For those who specialized in computer programming, the situation is even worse—employment rates have collapsed from 69% to 50% in the same period.
Let that sink in: Half of our computer programming graduates are not in full-time jobs within six months of graduation. In the supposed golden age of technology, when every company claims to be desperately seeking tech talent, half of our trained programmers still need work.
Only 64% of new CS grads find work within six months of graduating. Why? This one’s actually quite easy: the employment rate for new CS grads is in decline because the new grads aren’t as good as they used to be. There are only so many 18-year-olds with the aptitude for computer programming entering college every year, but we nearly doubled computer science enrollment from 2014 to 2023. As a result, a greater than usual proportion of these new grads can’t do the work required of them by tech companies. It’s just math.
The complaint about underemployed CS graduates equates “trained programmer” with “someone who has a BA in computer science”. They have a degree, that means they’re qualified to do the work, right? Universities would never award English degrees to kids who can’t read Dickens, and they would never award CS degrees to kids who can’t code. For the majority of readers who don’t click links, I’m being facetious here. Universities will take your money for four or five years and stamp out a meaningless credential as long as you show up and put in some bare minimum of effort, with no consideration for what a reasonable person would consider “qualification” to hold that degree. Then, fait accompli, holding the degree is proffered as evidence of qualification. It’s a neat trick, and a surprising number of people still fall for it.
The hard truth people don’t want to face is that a lot of these new grads just aren’t very good. This was true in 2014 when there were fewer of them, and it’s even more true now that we’ve cranked the diploma mill up to 20,000 RPM. It was even true back in 2007, when Jeff Attwood wrote the infamous essay Why Can’t Programmers... Program? Back then, like today, tech workers on the front lines of interviewing programming candidates were dismayed at the proportion of CS grads who can’t write code, at all.
A surprisingly large fraction of applicants, even those with masters’ degrees and PhDs in computer science, fail during interviews when asked to carry out basic programming tasks. For example, I’ve personally interviewed graduates who can’t answer “Write a loop that counts from 1 to 10” or “What’s the number after F in hexadecimal?” Less trivially, I’ve interviewed many candidates who can’t use recursion to solve a real problem. These are basic skills; anyone who lacks them probably hasn’t done much programming.
After seeing enough duds, you learn to start small in coding interviews, what I call a pulse check. Just something to see if the candidate can write any code, whatsoever, before moving on to your questions that gauge their skill and experience level. This is the birth of the infamous FizzBuzz question:
Write a program that prints the numbers from 1 to 100. But for multiples of three print “Fizz” instead of the number and for the multiples of five print “Buzz.” For numbers which are multiples of both three and five print “FizzBuzz.”
Most good programmers should be able to write out on paper a program which does this in a under a couple of minutes. Want to know something scary? The majority of comp sci graduates can’t. I’ve also seen self-proclaimed senior programmers take more than 10-15 minutes to write a solution.
This isn’t a hard problem. Here is a solution in its entirety:
for (int i = 1; i <= 100; i++) {
if (i % 3 == 0) {
print "Fizz";
}
if (i % 5 == 0) {
print "Buzz";
}
if (i % 3 > 0 && i % 5 > 0) {
print i;
}
print "\n";
}And yet, very many computer science graduates struggle with this caliber of problem. These unfortunate folks comprise the lion’s share of recent grads who couldn’t find a job in six months. They aren’t getting their jobs stolen by H-1Bs. They would have a hard time finding work even if there were no immigrants in America.
I have racked up over 300 interviews over the last couple decades, and the 2007 FizzBuzz complaint matches my experience pretty exactly. My own pulse-check question is slightly harder than FizzBuzz, but still something anyone with a computer science degree should be able to crank out in five minutes or so. Less than a third of candidates I ask it to can get a correct answer in a half-hour phone screen. I am generous with hints and partial solutions, but a majority of the candidates simply can’t write working code on demand. This was true when I started my career decades ago, and it’s true now. In my experience, I need to screen 3 or 4 people to find one worth bringing in for an on-site round, and we need 3 or 4 on-sites to find somebody worth hiring. That’s less than a 10% acceptance rate, and it has been perfectly typical at every programming job I’ve ever worked. (This isn’t because only 10% of programmers can do the work — the pool of people looking for jobs has obvious selection biases that don’t generalize to the entire population).
And anyone with any amount of experience interviewing programmers is nodding their head in agreement right now. It is hard to find qualified programmers. The idea that the labor shortage is fake is laughable, and I automatically discount the opinion of anyone who makes this absurd claim. They’re either a malicious liar or they don’t know what they’re talking about.
As for the H-1Bs, I’ve worked with many dozens of them over my career, and they are about as smart and qualified as the native born guys. Which is to say: a mixed bag. But at least at places I worked, they passed the same hiring bar and got paid the same amount as the native sons. I know because I sat on those interview loops and saw the offer letters.
Finally, for people about to object that hey, it’s really rough out there at the moment, you aren’t wrong. But that has approximately nothing to do with H-1Bs. It has more to do with the fact that companies like Google and Facebook massively over-hired during the pandemic and then did huge layoffs a few years later, flooding the labor market with diamond pedigrees you’re now competing with for every opening.
Here’s another uncomfortable truth. Most programmers at large companies do not produce positive value. Google or Facebook could fire 70% of their workforce tomorrow and it would have absolutely no impact on revenue, because they are advertising monopolies that spend their ludicrous earnings on wild engineering bets that mostly do not pay off. This is a golden age of employment for anyone good with a keyboard.
But some of our tech-brethren are not good with a keyboard. It’s not their fault they got sold a lie by an opportunistic education complex and got way out over their skis. But it’s also not the fault of some Indian or Chinese guy looking to make ten times as much money in the US as he could at home. You can still not want them here, or want fewer of them here. But it’s not their fault that Johnny can’t code.

![OC] U.S. Computer Science Bachelor's Degrees Awarded by Year : r/dataisbeautiful OC] U.S. Computer Science Bachelor's Degrees Awarded by Year : r/dataisbeautiful](https://substackcdn.com/image/fetch/$s_!T3vk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2897d739-56a5-4036-a8c5-2284e292f7e1_1340x1140.png)


I started programming when I was in elementary school, and by the time I entered the labor market I had singlehandedly completed one successful and one complete-but-unsuccessful video game project, that I went out of my way to design to be challenging to write, in addition to several technically impressive 1-week game jam games. I've been working with LLMs since long before ChatGPT brought them in to public consciousness, and at a previous employer I led a major AI integration project that was so successful the CEO cut our timeline in half the first time we demoed it to him because we were advancing so fast and the project impressed him that much.
After that employer decided not to renew my contract (citing financial reasons,) I spent 8 months unemployed despite applying to hundreds of jobs per week on all public job platforms continuously, AND reaching out to everyone I've ever met who might know about openings. I got about one interview every other month, and several companies I passed their interview process, was made an offer, accepted it, and then was ghosted - they never sent the contract and ignored any followup communication.
I was about to go bankrupt and leave the tech industry for good because I'd maxed out all my credit cards paying for necessities, when I got randomly contacted by a self-described "DEI recruiting firm" who lied about my degree status to an employer and got me no-interview hired. I have no way to prove this but I'm willing to bet they lied about other demographic data as well, if you get my meaning.
Everyone I've talked to about this is in the same position; programmers with over a decade in the industry, who are absolutely in the top 10% of their field, having 0 success finding jobs. *Something* is severely wrong, and it's not just big-tech layoffs. I don't think it is H1-B, it's something else, but it's something.
Yeah, I don't buy it. Waaay, waaay too much evidence points to H1Bs being all about lowering wages (costs), and little else.
Take MS, there is no evidence from their latest layoffs that they screened their people before tossing them overboard to replace them with H1Bs, and no evidence that they are paying their imports the same or more. Given the public opprobrium they are accruing, just a smidge of evidence ought to be forthcoming. Absence of evidence isn't evidence of absence in a court of law, but in the court of public opinion it's damning.
I used to have a job fixing the godawful garbage that some corporate C-suite moron demanded be outsourced (this was electrical engineering, not programming), I have zero reason to trust these people. It's all about "find me bodies at lower cost" not "find the best programmers."