Are companies lying about STEM jobs?

I would agree with this (or some variation of this ratio). There are some people who simply don’t get it. It’s the sort of field where you can have one guy who builds an entire web app in his dorm room overnight, a whole bunch of competent to very competent programmers, and a bunch of people who care barely understand the concept of a FOR / NEXT loop unless you give them very detailed and specific requirements.

Well, from where I’m sitting this is how I often see it. I’m a process development chemist. I like being a process development chemist. I could, if I had to, make a move fairly easily into discovery chemistry. If a company is willing to do some training, I can learn polymers or formulation or the nitty-gritty of analytical work. I may not want to take a job in any of those fields, but I could do it if I had to and was given the chance. I probably can’t easily make a move into computational. I definitely can’t get one of those IT or engineering jobs with a lot of additional study. The best I might be able to do relatively quickly would be a chemical engineering degree.

But I’ll be damned if I can figure out how to take two degrees in chemistry and five plus years in process development and find a job in a different field without taking a position off the bench while already employed as a chemist first. Much less getting even an interview through the disaster of a hiring process often used by companies these days.

Barry Boehm, in a paper from the '70s I think, showed that the best programmers were 10x more productive than the worst or average programmers. His advice was to spend more to hire the best. I don’t think he broke it down by bands like you have.

I did a decidedly unscientific poll using our internal directory (no comment on where I work, but it’s a well-known Silicon Valley company with several thousand people).

I counted the number of people with the top 5 Hispanic surnames (Garcia, Rodriguez, Martinez, Hernandez, and Lopez) vs. top 5 US surnames (Smith, Johnson, Williams, Jones, and Brown), specifically including only STEM positions. I get 17 vs. 53.

I think it really depends on the problem. For churning out reams of business logic, I’d posit that there’s not a tremendous difference between average and top programmers. But scale the problem difficulty up, and the ratio approaches infinity. Certain problems can’t be solved by someone below a certain skill threshold. I certainly have had challenges where I simply had to hit the books and review the basics before I could make forward progress.

In terms of programming concepts or the application area?
I think Boehm’s work was on business programming - I don’t recall which level. But I think a good programmer could still be ten times better in this field also. She can just type the code, having done something similar before, where the less competent guy would be slowly working it out.
I saw this kind of delta when grading CS200 type programs. Some kids got it, some didn’t.

Google just recently revealed that 3% of it’s workforce is hispanic and 2% is black, lending weight to the assertion that essentially no non-asian minorities are being hired in tech.

Both, I suppose. There’s a limit to how big a program a given person can fit in their head. Once exceeded, productivity goes way down (again, I’ve observed this in myself). A better programmer can fit more in her head at once than an average one, so given a program that lies between these two thresholds, the better programmer will be vastly more efficient. For a smaller program, the difference isn’t so drastic.

I suppose I should add that “fitting a program in your head” isn’t just a matter of memory, but also storage efficiency–for very large programs, you can’t know every line, but you can know where to look for a piece of code.

And yeah, concepts too. This one is more of a judgement call, though–if you tell me to implement a game pathfinding algorithm, I’ll have a hard time and will spend time reading the literature before getting started. For someone with experience, it might be a trivial task. Does that make her a better coder, or just someone with more experience?

Personally, I’ve found that the areas where my own productivity had gone up most are in areas where I can build elegance into the system. Find an abstraction that models the problem at hand well, architect the code around that, and you end up with easy to read code with minimal duplication. Someone else might accomplish the same thing with buckets of spaghetti code.

However, I find that certain types of code (like web coding) aren’t amenable to that. Maybe they have lots of annoying logical cases that don’t quite have enough commonality to merge. Maybe it requires complicated text formatting that again has enough differences between the cases that they can’t be easily unified. Mainly, when code is subject to volatile external constraints, it becomes difficult to write elegant code, and spaghetti code is the norm.

There’s definitely a dichotomy at that level as well–I certainly recall seeing the difference as an undergrad. I was by no means a fantastic coder at the time, but I could at least produce a small, single-task program that was reasonably elegant and bug-free. Lots of others could, too. But a certain set could never do it. I hope they aren’t doing anything too important.

“Top 5 Hispanics” may get more Fernandez than Hernandez, it probably won’t make a difference in this case but you may want to check both, as well as Gonzalez, Perez and Sanchez.

Mainly I just wanted to see if we’re in the ballpark of a decent distribution, and it seems that we are. It’s always hard to judge this kind of thing without bias, so I wanted something approaching hard data.

One strange thing I’ve noticed is that our company seems to partition into national cliques. There’s the “Russian mob”, and the Polish, and the Chinese, and so on. For some reason, it seems the Hispanics were clustered in technical marketing. Is this due to hiring biases (not necessarily malicious–more like people hiring others from their school)? Just random clustering? I don’t know.

Employers complaining that there is a shortage of high tech workers are like women complaining that there is a shortage of rich, handsome men, and men complaining that there is a shortage of young, beautiful women.

It is in the interest of high tech employers to flood the country with employees with H1B visas. It is the interest of American citizen high tech employees to keep those H1B visa people out.

Many people who favor more restrictions on immigration are motivated by irrational bigotry and ethnocentrism. Nevertheless, it is a legitimate economic issue. The more people there are looking for a job, the harder it is go get a job, the less one is paid who gets a job, and the easier it is to lose that job. The high rate of immigration is a major reason for the growing income gap.

I see this as well, and as someone who immediately “got it” it’s hard to remember that not all students get it. Slowing down the lectures, simplifying the examples, doing more in class helps, but I’ve had the talk with several students that they should be looking at other careers (such as network admin). I’d hate to send them to a job that would just be frustrating for them.

Google’s hiring is heavily weighted towards people with advanced degrees. Its rare to find someone at Google that doesn’t have at least a Masters degree. When you are looking for minority, particularly African American and Hispanic candidates, but your minimum hiring requirements include an advanced degree, you have a very small pool of candidates. And just having the last name of Lopez and a master’s degree doesn’t mean you are a good fit for Google, whose hiring process is pretty focused on getting people who are good fits. Lots of White, Asian, and Indian people with Master’s degrees don’t make it through the interview process.

On top of that, they tend to prefer people from ivies. Unfortunately, the number of ivy league graduates with advanced degrees doesn’t include a large number of non-asian non-white minorities. That’s even before you factor in personality fit and relevant skills (Google doesn’t particularly need computer graphics specialists, for instance).

That’s an interesting concept. However the program one fits in ones head is not just code. The experienced programmer has a library of techniques which can be swapped in. While the new programmer can see a problem as requiring 100 lines, the experienced programmer sees it as 10 or 12 lines. I have some common code which I can type as fast as cut and paste. Grandmaster chessplayers do the same thing,

Elegance or the right hack. Things should only be as elegant as they have to be, no more. I do lots of special purpose tools. 80% of the time they never get used again - I can improve it for the 20% of the time it does.

The secret of a good architecture is understanding volatility and planning for it. The system I build had no specs worth mentioning - the user community had never done this before, and had no real idea of what they wanted. Knowing this upfront I was able to build a general framework and make it extensible. Three years later it is still nice and solid and does not need a rewrite, despite handling stuff I would have said would never, ever have come up.
Computer architecture (which I did my Ph.D in) teaches you how to architect software systems also, in being a good way of looking at stuff.

I don’t know Google’s college list, but I do know ours, and unless you define “Ivy” very broadly we’d much rather hire someone from say Stanford than Dartmouth.

Agreed. That’s along the lines of what I meant by “efficiency,” though I was thinking more in terms of working within an existing codebase alongside other team members, where the code may be suboptimal. You still need to grok the system, even if the code is not how you would have written it. Still, what you say still applies–there’s value in the kind of mental compression you describe.

Oh yes. A while back, we had need for an assembler ASAP. I said I could write one in a day; my co-worker said no way, with $40 on the line. He was thinking of something written in Yacc or some other nonsense. I knew that it was a constrained problem and that a parser generator would be massive overkill; just writing the grammar and getting it “hooked in” to a program would probably take a day. I wrote a special-purpose program and test suite that covered 100k test cases within the day. It’s proven reliable and extensible. Right tool for the right job.

All true, but you have to be careful to avoid the inner-platform effect. You don’t want to make your system so flexible and extensible that it is as complicated as the system it resides within. It takes a light touch (and I could use some refinement myself: I think this is just something cultivated over time).

Whenever some business guy goes on the news talking about how his industry has a shortage of workers, I always think of the handbills in Grapes of Wrath

Of course, now they don’t even have the expense of printing the handbills. They just issue some press releases and go to interviews with credulous reporters.

Agreed. My father taught me that on my first job, right out of high school.

You live in the East. The market over there has always been more about industries that mostly have solved problems. The region also tends to attract companies which typically can’t be called innovators anymore. Many are fighting for a shrinking part of a once profitable market and thus the bad job prospects in the area. I can promise you that we aren’t being picky at my work place, but we just can’t hire devops engineers who have massive knowledge gaps. Those are the candidates you see. Lots and lots of people who get siloed and don’t keep expanding their knowledge.

FYI, we have 25% of the job openings we have are FTE software engineering jobs, with good benefits and good pay. If you lived in the west you would be getting dozens of calls a week for good local jobs by simply posting your resume to linkedin, dice and monster.

You may complain about moving to a tech hub but H1B visa holders are willing to move, we would rather hire you.