Recently I was quite critical of an article in the San Francisco Chronicle comparing the “Intels” (firms that hire H-1Bs directly) and “Infosyses” (firms that hire H-1Bs and “rent” them to other employers) regarding wages paid to their H-1B workers. Putting aside the ethical problems of the article, let’s look at the article’s main theme, which was that the Intels don’t underpay their H-1Bs, while the Infosyses do.
The Chronicle analyzed prevailing wage values in Labor Condition Applications (employer requests to hire H-1Bs). In my comments on the article, I noted that the prevailing wage, as legally defined, is actually well below the market wage that the given worker would command based on her qualifications, so paying above the prevailing wage does not imply that the employer is paying at market rates. The Intels do indeed underpay their H-1Bs, and I referred interested readers to my Migration Letters paper for detailed analyses.
In this post, I will make that point much more simply. A number of critics of the H-1B program base their analyses on the four experience levels the law sets for prevailing wage. Keep in mind that the law defines Level III as the overall average wage for a given occupation and region
The critics note that the Infosyses tend to hire at Levels I and II, i.e. below average. Since those same critics don’t mention the Intels, you would conclude that those firms are using H-1B responsibly, right? But that conclusion would be wrong. In this post, I will show that the Intels are also paying mostly at Levels I and II, i.e. below-average rates.
I am using the 2016 PERM data, which is for employer-sponsored green cards. This data is more reliable, because each record corresponds to an actual worker, while the LCAs are simply applications to hire a worker, unspecified, at some future date. However, if you prefer, you can download the LCA data and do a similar analysis. I restricted my analysis to software developers.
I found that 66% of Intel’s green card sponsorees were being paid at Levels I and II, i.e. below average for the given occupation and region. For Google, the figure was 96%. In the case of Facebook, it was 91%. I will include my code at the bottom of this post, so you can try some other firms if you are interested. But even with these few data points, you can see that the Intels are actually similar to the Infosyses in terms of paying below-average salaries.
Mind you, the Intels do pay more than the Infosyses. The Intels tend to hire people with U.S. Master’s degrees while the Infosyses hire workers with Indian Bachelor’s degrees. This in fact is why there are so many at Level II for the Intels. But Level II is still below average.
The H-1B issue is complex, as you can see. Indeed, some of you may be asking at this point, “Isn’t prevailing wage defined as the average salary?” The answer is that it is defined as the average salary for the given occupation, region and experience level, as opposed to just the average salary for the given occupation and region. In other words:
We are back to my favorite theme in the H-1B debate: Age. Younger workers are cheaper, and employers hire young H-1Bs in lieu of older (35+) Americans. The four-tier experience system in the legal definition of prevailing wage amounts to government-sponsored age discrimination, which is the core problem with H-1B.
In fact, the four-tier system was enacted in 2004 at the behest of the tech industry. It replaced the old two-tier system, with the new Level I (out of four) of course being lower than the old Level I (out of two). Keep that in mind whenever you hear an industry spokesperson or a politician say that H-1B wasn’t intended for cheap labor. Obviously that indeed was and is the intent.
Below is the promised code, in R. The PERM data comes in a .xlsx file, which I converted to .csv using xlsx2csv, a Python utility available on the Web. (I don’t have a Windows machine, thus no Excel etc., and the R Excel-reading packages failed on this data.) You’ll need the record layout and the SOC occupation codes. You can do analyses of the wage levels as I did above, or analyze degree levels, academic majors, nationality and so on. Enjoy!
p16 <- read.csv('perm2016.csv',header=TRUE) pr <- p16[,25] p16prog <- p16[pr=='15-1131' | pr=='15-1132' | pr=='15-1133',] intel <- p16prog[p16prog[,9] == 'INTEL CORPORATION',] table(intel[,27])