I don't buy this explanation. I fall into the category the author is talking about but I'm not in an underrepresented group unless you consider enlisted war time veterans one.<p>Some background so you understand context: I dropped out in 2009 because I lost the programming job I used to pay the bills. At the time I mostly worked on PHP web apps and did some microcontroller testing for a local business. I joined the military shortly after, served my time, and worked my way from desktop support to network engineering, to "DevOps" (in it's early stages), to being an SRE-SE, to a SWE again over the course of six years. I never did go back to school, I can go into the myriad of reasons that affect the statistics that the DOD and VA will happily show you on the way out the door but don't seem to post publicly, but I think that's for another post. I could not get a job programming again. Logically, no one wanted a programmer four years out of practice, but I quickly learned that big tech has a major shortage of Systems Engineers and an even much more major shortage of Systems Engineers that can write full applications as opposed to scripting.<p>Large firms <i>tend</i> to focus on one skillset and that is mathematics. The reason for this isn't very illusive, they hire mostly people with mathematics degrees (CS and CE) and interview based on the skillset they know best. The problem is that the people who dominate this group know nothing to very little about systems. I have been on countless interview panels and often I find that people will pass abstract systems design but when you make them directly apply this theoretical knowledge to an OS they will fall flat on their faces. Ask them questions about network sizing and you'll get networks that are incredibly huge or don't make sense at all.<p>The problem is that the reverse is true too, when you take a Systems Engineer who could walk you through kernel process scheduling, the order of operations in calling execve on a binary, etc they often struggle in algorithm <i>application</i>. They may pass your algorithm test if it is pretty plain to see what algorithm needs to be applied and it requires pretty straight forward implementation but if you tweak the process a bit, they fall flat on their faces. This doesn't disambiguate from Systems Engineers <i>that can't code</i>, I'm purposefully excluding these folks because we're talking about variants of programmers. I have spent years trying to get myself up to the level that college graduates have with algorithm recognition and application.<p>I'll stop here and say if you find yourself in the same boat, frustrated and upset over interviews, I see you. Cracking the Coding Interview and Leetcode are okay for practice, but if you're struggling to identify less-common data structures and algorithms or how they relate to one another there are two books that helped me infinitely: Introduction to Algorithms by Cormen, Leiserson, Rivest, and Stein and Algorithm Design by Skiena. Python and Java are good for playing with most of these. It took me about two years to get up to par with college graduates.<p>What people from bootcamps struggle with, in my experience, is the same thing that systems engineers who can code struggle with. Algorithm recognition, selection, and application skills are not on par with that of a newly minted mathematician.<p>Do <i>you</i> want to solve this? Teach. I teach programmers about systems all the time, mainly because if programmers want to learn about systems there's a myriad of books like The Linux Programming Interface to Linux Kernel Development that are all very indicative of how nix systems and kernels work. These assume a pretty cushiony set of knowledge to begin with, so their foundational knowledge has to be increased first. Unfortunately, there's not a lot of material on the internet for this beyond shallow tutorials on Linux and Unix commands, some StackOverflow answers, etc that will inevitably guide a trainee in more wrong directions before they find the right one. If your career counts on this knowledge this is doubly sub-optimal.<p>Go teach foundational math and logic at your company. Don't just buy courses for engineers or throw the UCSD Discrete course from Coursera at them; get up in front of some people, answer questions, and show them how to love math the way you do. Stop using mathematics as a gate and use it as an opportunity for investment. That's how you fix it.