Just like the "prescribed foreign language course in middle school", a bit of programming practice may widen your horizon, and help demystify these seemingly opaque machines and networks.
It's about practice, not "knowledge" per se. Basic tasks, like: I have a folder full of files, how do I get the filenames into a text file or e-mail? Five-liners in high-level languages, the equivalent of asking for directions in a foreign tongue.
Of course, that idea comes from a time when one would own a universal computer, and own one's own data. You can argue that for many people, the filenames and text files I'm talking about are already a thing of the past, that it's all pinch and swipe, plus cloud storage.
The irony about your very valid benefits of having basic programming knowledge is that music programs, which have been proven to provide benefits in math and language and just general smartyhood, are the first to get their budgets cut in any given budget battle. That said, how many working people have ever had to face the problem of getting a list of filenames into an email?
> That said, how many working people have ever had to face the problem of getting a list of filenames into an email?
Few, because when tasked with a problem that this could solve, most people would immediately throw up their hands and give up. This is the biggest obstacle of all.
"Which pictures are you missing?"
"I don't know, I'm not going to flip through them all!"
edit: I did not know this- I just posted it because it is but one answer. For what it is worth, I agree with you- basic knowledge of programming is something everyone should know.
I have to laugh at this. I worked in strategy consulting, where my coworkers were all MBAs from Harvard, Stanford or, in our office, Tokyo University. We had many cases where people had tasks of various sorts that they would handle with the equivalent of this screenshot-of-the-data approach. I, a fellow consultant, often groaned when I saw such things and wrote little utilities for them, figured out how to dynamically generate PDFs for their presentation data, or whatever.
At one point, the general mgr of our office, said that these things were so valuable to everyone, and I was so good at it and seemed to enjoy it so much, that he was wondering if it wouldn't make more sense for him to take me off of my own consulting cases and make IT projects my only case. Of course, IT people were thought of as lowly support staff for the elite consultants, so it would mean a pay cut and end my consulting career. This wasn't a warning; he was just thinking that this might better serve the needs of the firm.
That day I stopped being a valuable IT resource for my coworkers and reserved my dev skills for my giving myself a "sustainable competitive advantage" in my own work on my own cases.
You should package up your tools and sell it to them on a subscription basis per consultant head. Make sure the total price is at least your gross salary and bake in a minimum subscription period. Quit your job, build all the tools you ever wanted and sell it to all other consultancies and their offices.
The powerpoint extensions I used in consulting were created by ex-consultants so it's not unheard of to do this.
And yeah, that's an option that I've considered it in the past, but never been able to validate it because it'd take me less time to just transcribe it (or I can find a glob pattern from their screenshot, etc.).
A lot of it is also the mental structures you form, so you understand what a computer can and can't do easily instead of thinking it's all magic.
You may not have the specific chops to write a program to do it, but you know that doing something to (x) files is just a loop with a if thingy inside of it.
I think part of the "learn to code" movement is also hope that currently non-tech-literate people will learn to help themselves. Once you've googled "how do I do this in python" and found answers enough times, you (hopefully) gradually replace "All of this computer stuff is confusing! I need someone to help me with it. My cousin is good with computers. I'll call him." with "I got this shit. What up, google."
I would say a general computer knowledge course would serve people better than trying to learn a programming language they'll probably never use, or want to use. Basic IT, networking, security, and simple scripting would probably serve the general public best.
And that's something that can be done in a single line at the terminal in Windows, OS X, or *nix. Learning how to use that effectively before learning how to code would already be a big step.
It's about practice, not "knowledge" per se. Basic tasks, like: I have a folder full of files, how do I get the filenames into a text file or e-mail? Five-liners in high-level languages, the equivalent of asking for directions in a foreign tongue.
Of course, that idea comes from a time when one would own a universal computer, and own one's own data. You can argue that for many people, the filenames and text files I'm talking about are already a thing of the past, that it's all pinch and swipe, plus cloud storage.