Exactly. This. <arbitrary Internet jargon indicating agreement>.
This article is the best-articulated explanation of why programming should be a core part of the college, and even K-12 curriculum I have ever seen. I just can't agree more.
An anecdote.
When my girlfriend was still in school she needed to collect a great deal of data for a project. It was available for sale from industry groups and such, but she didn't have tens of thousands of dollars for a membership. So she resigned herself to harvesting it manually.
When I noticed what she was doing I pointed out that I could make this process easier for her by writing a small computer program. A few lines of Javascript and Python later she had her data, and in a small fraction of the time it would have taken her otherwise.
I explained, in general terms, what was going on in the program and why it worked the way it did, and explained some of the changes I could make if she needed it to work differently. The programming involved here was not in any way difficult or clever. The interesting thing was that she had never even considered the fact that her problem could be solved using computer programming.
She commented to me a couple months later, after I'd helped her with a couple other small problems in the same vein, that she had started to see problems that could be solved easily with a little bit of code everywhere she went. I didn't coach this response out of her, she was honestly amazed at what could be accomplished and she continues to view the world differently because of this exposure.
Now, she certainly hasn't become a "computer programmer" since (and she likely never will). But gaining a basic understanding of what can be accomplished using programming tools has actually changed the way she views problems.
Edit: I noticed people are concerned that having too many people with just enough knowledge to screw things up might be a bad thing. In my girlfriend's case the opposite has been true. She hasn't all of a sudden decided she can solve every problem by writing some code (or convincing someone else to write code).
On the contrary, she actually has a better appreciation for how computer programs work and why writing a new one may not be a good idea in all cases. For example, she understands why a custom application requires maintenance, and that maintenance isn't just some trivial thing that you hire an intern to take care of. In fact, she has actually talked her boss out of having new applications created because she realized that the projects would likely end in failure.
It was basically one of the best days of my life when I was explaining to my grandmother a project I did at work. I said "I wrote some computer magic to make this job easier". She pointed to my laptop and said "can you show me? Can you explain how this works?" My grandmother was a homemaker wife to a farmer her entire life, and uses the computer simply for email and pictures of my newborn niece.
She might not be able to write a single line, but when I was explaining it at a very high level going through the code, it felt like she was trying to see how the computer would think. She's still of the belief that a computer can think on its own and we're simply asking it to do something for us (like you would a horse on a farm), but she really did want to know how I could teach a computer to do something it didn't know how to do before.
This article is the best-articulated explanation of why programming should be a core part of the college, and even K-12 curriculum I have ever seen. I just can't agree more.
An anecdote.
When my girlfriend was still in school she needed to collect a great deal of data for a project. It was available for sale from industry groups and such, but she didn't have tens of thousands of dollars for a membership. So she resigned herself to harvesting it manually.
When I noticed what she was doing I pointed out that I could make this process easier for her by writing a small computer program. A few lines of Javascript and Python later she had her data, and in a small fraction of the time it would have taken her otherwise.
I explained, in general terms, what was going on in the program and why it worked the way it did, and explained some of the changes I could make if she needed it to work differently. The programming involved here was not in any way difficult or clever. The interesting thing was that she had never even considered the fact that her problem could be solved using computer programming.
She commented to me a couple months later, after I'd helped her with a couple other small problems in the same vein, that she had started to see problems that could be solved easily with a little bit of code everywhere she went. I didn't coach this response out of her, she was honestly amazed at what could be accomplished and she continues to view the world differently because of this exposure.
Now, she certainly hasn't become a "computer programmer" since (and she likely never will). But gaining a basic understanding of what can be accomplished using programming tools has actually changed the way she views problems.
Edit: I noticed people are concerned that having too many people with just enough knowledge to screw things up might be a bad thing. In my girlfriend's case the opposite has been true. She hasn't all of a sudden decided she can solve every problem by writing some code (or convincing someone else to write code).
On the contrary, she actually has a better appreciation for how computer programs work and why writing a new one may not be a good idea in all cases. For example, she understands why a custom application requires maintenance, and that maintenance isn't just some trivial thing that you hire an intern to take care of. In fact, she has actually talked her boss out of having new applications created because she realized that the projects would likely end in failure.