The topic of education and programming is a terribly vast and complex one. Of course, I think learning to code is absolutely amazing; why else would I spend my whole days doing it? But whether programming should be taught in schools, and more importantly
how should it be taught is not necessarily an easy question.
Schools suck
It's tough for me to argue that we should add something to a system I believe is fundamentally flawed. Modern schools are
more akin to part-time prisons than an actual place where you'd learn something. And if they teach you one thing (well six things),
they're absolutely terrible. With their standardized tests and meaningless curriculum, the only actual skill I picked up in school is how to pass exams. I was good at it, which helped me getting good grades, but it's a completely useless skill once you're in the "real world".
I won't expand much on the topic, as it's a whole subject on its own. If you're interested, the two articles I link to above are a great food for thought, I highly recommend you read them. However, I could not start this post without mentioning that I don't think very highly of modern schools...
About this campaign
I grow suspicious of high-budget campaign showing you celebrities giving shallow advices like "Learning to code is useful" (duh! any skill is useful...). Some of these celebs include Chris Bosh who took a programming class once, or will.i.am claiming "none of us know how to code". And don't get me wrong, I loved Ashton Kutcher in That 70's Show, but I don't listen to him when it comes to deciding on what's best for my (future) kids education.
That being said, this campaign has the merit to start the debate on programming in schools, and by itself, it's a good thing.
The "Learn" tab has actually links to good resources available freely online and can constitute a good starting points for those interested.
About teaching Programming
Here's the thing: Programming, and Computer Science in general, are incredibly difficult.
Edsger W. Dijkstra, a legend in the field and arguably
the world's first blogger wrote once "Programming is one of the most difficult branches of applied mathematics" (
EWD 498).
Recently, the industry is plagued by people sticking simple business logic on top of a database, calling themselves "programmers" and hoping (sometimes succeeding) to make big money with it. This may sound elitist (and it may as well be) but it has profound effects on programming as a community. Java is a perfect example of the dangers I'm mentioning. It is a technology that assumes programmers are inherently mediocre and unreliable, giving them very little room to do
great things. And it was a natural reaction to the flock of mediocre engineers injected in the industry because of the common belief in the 90's that "programming will make you rich".
It's not. Don't learn programming because it'll make you rich. There's a high chance it won't. But there's a high chance it will make you feel inadequate, it'll make you feel like a hack for the rest of your life. The best programmers I know (some of which are here on the forum) are incredibly humble about how little programming they know. Programming should be taught to people who accept to spend a lifetime of learning increasingly difficult notion, and accepting the fact that no matter how much you learn, you'll only ever know extremely little about the field.
On a similar note, there's another paper by EWD that is of relevance to the topic at hand. It's not easy (nor particularly pleasant) to read. It's called
On the cruelty of really teaching computer science (EWD 1036). You might get surprised by the harsh tone of the article, but you better be warned:
"you probably know that arrogance in computer science is measured in nano-Dijkstras".
What do I suggest?
Obviously, there are benefits to giving kids familiarity with computer code, for the same exact reason I believe exposure to mathematics is a good thing. However, I think it's important we define
why we're doing it. I believe this will be the biggest challenge of education in the upcoming years.
If you believe that you should learn to code because you believe in understanding computers better, there's one book
I cannot recommend enough:
CODE - The Hidden Language of Computer Hardware and Software by Charles Petzold. I believe everyone should read this book. I mean
everyone.
Further reading
This topic was debated on Hacker News a few days ago.
It's worth reading.