Lately I've encountered quite a few posts about teaching coding to EVERYONE. Some were pro the subject and some against it, some also changed their minds or decided to clarify their intentions.
I must admit that I belong to that last group. I read Jeff' Atwood's excellent post Please Don't Learn To Code and I couldn't agree more. Jeff went out against the whole "everyone should be a programmer" trend that seems to be sweeping the internet and his ideas seem to agree with my own. Coding should be left to professionals, people should do their own jobs and you don't want your mayor turning into a script-monkey and start hacking Perl. He should do what he does best, which is run your city (or at least I hope that is what he does best). Jeff's post apparently brought a lot of anger and he later published a clarification post that he didn't mean people who want to learn coding shouldn't, but at the time I tended to agree with his original post more, most people shouldn't code.
I believed, and still believe, that coding should be left to those of us who like to code. In my CS studies I've met too many people who had nothing to do with computer and they only came to do the degree for the high salaries the field offers. They plunge themselves into a field which they know nothing about, and this is something they are supposedly going to be doing for a very long time, it is no wonder to me that these people usually make poor programmers and often turn out to be disgruntled employees.
I believe that a programmer should be someone who lives the code and enjoys doing it. There are exceptions of course, but for the most part I do think that people who enjoy what they are doing (and there for will also invest their own free time to explore, improve and develop that skill) will make far superior employees to those who don't.
But I am getting off-topic here, what I really wanted to talk about is if everyone should learn how to code, and I do. This may sound like a contradiction to what I've written above but it's not. Computers have become such an integral part of our lives that I think everyone should know how write their own programs just like everyone should know how to write. However, that does mean that everyone should be a programmer, just like not everyone are writers.
So what made me change my mind you might ask. Two things. The first (which actually happened after the second item) is reading 'The Matrix is a system, Neo': Ten reasons coding literacy should be a human right by Daniela Capistrano. This article certainly lit some bolbs in my head, and only strengthened the thoughts I was having because of the second item (which happened a few days earlier), this second thing is an incident that happened to me with my project partner. In our project we need to process hundreds of very large text files. On this specific milestone my partner was required to run the program he wrote in order to process about 90 text files in a folder. My partner sent me the results by email and when we met I asked my partner to change something in the output. A very small and simple change.
After a few minutes I noticed my partner keeps editing and restarting the application. I asked my partner what is going on and was amazed to learn that the application had a single variable for the name of the file being processed, and my partner changed that variable for each file and restarted the application. My partner had done so last time for the 90 files, and now my partner was going to repeat the process again for all the files.
When I asked why didn't she just read all the files in the folder into a list and make a loop to go over them my partner said the idea never crossed her mind.
My partner is a senior student in CS with decent grades and she passed all programming courses.Yet my partner is so foreign to how computers work that the thought of the computer doing all the work for her never crossed her mind. I wish I could say that this is an isolated case, one in a million, but it isn't. As CS becomes more main stream, more and more people who don't understand computers graduate. And this is what needs to be changed (the understanding of computer ways, not the graduation. Maybe that too).
Children need to be thought about coding and how computers work in school. They should learn to write small scripts that can ease their lives and make them understand the true powers of computers (and no, it is not Facebook).
Imagine how empowered all industries will be if everyday workers would understand computers. If the secretary in the office knew how to make the computer create personalized documents for her, instead of opening the document for each employee and changing the name. Or if the archeologist would be able to search all databases one just one click, instead of going into several sites and searching one by one. Or just imagine how many catastrophies would have been saved if someone in every home and office knew how to automatically copy files and would build a backup utility for his network.
I don't think everyone should work in programming, and programs can quickly become so complex that writing them is better left off for professional programmers. However when the masses have the knowledge and power the possibilities and ideas are endless. Just try and think of all the things we haven't yet thought about.
Update: I think I found a very good example of how helpful it would be if everyone would know how to code, just think of all the sleepless nights it can save or the money you'd spent on an expansive cradle.