A shortage of human programmers: A core problem for Intel and other leading tech companies, according to Justin, is that they are running low on senior developers – a shortage that crimps the amount of programming across all industries. According to code.org, there are 500,000 open programming positions available in the U.S. alone — compared with an annual crop of 50,000 graduating computer science majors. A similar shortage can be found across the European Union. In the programming jobs market, Justin says, at best only 10% of the people filling those jobs have the computer science training to become top-level advanced developers. With today’s heterogeneous hardware — CPUs, GPUs, FPGAs, ASICs, neuromorphic and, soon, quantum chips — it will become difficult, perhaps impossible, to find developers who can correctly, efficiently, and securely program across all of that hardware.
Now is the time: Machine programming is a fusion of different fields. It uses automatic programming technique, from precise (e.g., formal program synthesis) to probabilistic (e.g., differentiable programming) methods. It also uses and learns from everything we’ve built in hardware and software to date. Researchers have dabbled in machine programming since the 1950s, Justin says. “But today is different. We’re at an inflection point with new machine learning algorithms, new and improved hardware, and rich and dense programming data. These are the three essential ingredients that we believe enable machine programming.” One example is illustrated by recent genetic algorithm (GA) research from Justin’s team, which illustrates how the fitness function of a genetic algorithm – a complicated machine learning heuristic developed by expert programmers – can be automated. Justin says this work likely wouldn’t have been possible just a few years ago.