I have been programming more than 40 years. The other day, I got a bit depressed thinking about the rise of “coding” versus traditional computer science. As software eats the world, there has been a growing demand for people that can create it, and along with that demand a surge in training to create those skills. Overall, this demand is a good thing for the profession; it turns out that computers really are universal machines and they’re really useful. But it feels like this has resulted in a bunch of “learn to code” mills that churn out barely-adequate coders, as opposed to quality software engineers who actually understand computer science. Note that I’m not suggesting that everybody must go through a traditional university CompSci program; indeed, I have known some great software engineers who either dropped out of college or were informally trained. I’m more concerned about the end-result: coders who graduated from “Learn JavaScript in 21 days! Your path to riches!” programs and who don’t understand algorithmic complexity and can’t explain race conditions but who can string together a bunch of libraries downloaded from a package archive. Compare that to software engineers who actually know how to create quality designs that have strong theoretical underpinnings. To put it another way, the more software we need, the more mediocre coders we churn out, and the more buggy, unstable, and insecure the world gets. Is it just me thinking about this?