Everybody should learn to code, but….
I suppose I should be thrilled with the "everybody should learn how to code"wave. To be honest I think what's happening is pretty bad.
I dedicated much of my time to teaching over the last five years. I taught a course at university and trained over 2000 people on 3 continents. I don't intend to ever be a full time teacher. My motivation for teaching is purely selfish, I want a better area to work and I don't see that happening with that "everybody should learn to code" wave.
Misconception and gold rush
Don't get me wrong. I'm big fan of the idea that everybody should get a basic understanding of software. I do believe in programming as literacy and I think it'll make the tech field better.
But most of what we're seeing today is pure marketing. People think that working through a few tutorials or taking a few courses will land them good jobs at Google or give them the skills to build the next Facebook.
I've been doing software for the past 11 years and spending thousands of hours to try and improve but I still find myself struggling occasionally to build good software. All good developers I know do.
Just because, today, we can do much more with less doesn't mean it's trivial. All the tools we have are only abstractions and shortcuts on top of things we did before, but we still need to understand everything underneath to be effective. All abstractions we have today (Frameworks, Languages, Databases, Browsers, OS, etc.) are rudimentary and error prone. We need to be prepared to deal.
Going through a quick course or reading a book will not make you a good developer. Maybe it will teach you how to code something but you'll not be hired by a great company with an awesome salary. Neither be able to build successful software based companies after that.
We don't have scarcity of coders like some people think but we do have for talented developers. They are the people that get hired or build great companies.
And to be a talented developer you need a deep understanding of how software development works and it's far beyond coding a few web pages. Trying to make it look like trivial will not help, the only path towards that is through a lot practice.
But everybody still need to learn how to code
After all this, I do think it makes sense to learn how to program. It's an excellent intellectual exercise and really teaches you how to think rationally and solve problems.
Programming can also make things like physics, math and many of the daily things more interesting if taught the right way. Can be a very good tool like knowing math and how to write are.
Knowing how to code will not make you a software engineer for the same reason that knowing math doesn't make you a mathematician or knowing how to write doesn't mean you'll publish a novel.
But by exposing everybody to programming we'll be able to get more people interested in being professionals and dedicate their lives to that.