Some make the argument that certain people just don’t have a high enough IQ to be software engineers: No, teaching blue collar workers to be engineers is not a practical solution. Jordan Peterson makes the point in this video that “the depressing reality is that 10% of the population (IQ less than 83) is not smart enough to be useful to society.” To make matters worse, the science seems to show that it’s impossible to improve your IQ. It’s like your height. No amount of training will make you taller or smarter for that matter. So the implication is that only people with a sufficient IQ could ever be successful at programming. These retraining programs are targeting blue collar workers that came from careers that did not necessarily require high IQs. Therefore, many of them can’t handle the complex intellectual rigor required to build software.
Although these types of statements feel quite harsh and disrespectful to the participants of these programs, they do point to a general truth that explains some of the failure. Excelling in certain careers requires certain skills and abilities. Some of these skills are learnable and some are not. Programming requires a fairly specific intellectual capacity. Most great programmers I’ve worked with tend to think in a different way than normal people (non-programmers). Their superpower is modeling problems in the messy real world using the completely unambiguous language of code. This probably does require a high level of intelligence. I’m not sure that simply correlates to a specific IQ number, but programmers need to have a special kind of intelligence to be successful.
But aren’t there various kinds of intelligence? According to the Theory of Multiple Intelligences there are eight types of intelligences including visual-spatial, verbal-linguistic, logical-mathematical, interpersonal, etc. Some programmers I’ve met are not particularly eloquent in their verbal communications, often to the detriment of their careers. But I’ve met some software analysts, trainers or help desk workers that have extremely strong verbal-linguistic skills. In fact, without those skills they would kind of suck at their jobs. When you look at higher levels of organizations, successful executives typically have strong interpersonal skills. In my opinion, most great leaders (and many entrepreneurs) aren’t particularly intelligent. Just look at Jon Snow in Game of Thrones ;-). Successful leaders passionately believe in a vision which is likely intellectually dubious yet have an uncanny ability to get other people excited about it. Many programmers are missing those interpersonal skills which is why they have so much trouble when they get promoted to a management position.
To be effective these retraining programs shouldn’t be teaching coal miners how to develop the next Twitter clone using HTML and CSS. They need to teach these people how to creatively solve problems using technology in normal businesses like retail, logistics, finance, manufacturing or health care. For example, why not teach a blue-collar worker that’s experienced in warehouse work to be an expert with a popular cloud warehouse management application? That’s far easier than learning Python Django and it leverages his past domain knowledge.
Of course that type of education program would need to be extremely personalized and therefore expensive to operate. It’s far more lucrative to sell a generic curriculum that scales and doesn’t require a high level of teaching expertise. That’s ultimately the root of the problem. Retraining the non-technical portion of our population to navigate the technical world will take an enormous amount of time and expense. How can we make this happen at enough scale to have an impact? With the looming threat of automation and artificial intelligence putting even more people out of work, it’s something society needs to come to terms with quickly.