specialization of labor. different people are good at different things. some people have great people skills, but are poor at math/logic. they might make great salespeople, but poor engineers. why not use everyones' strengths?
"when the only tool you have is a hammer, every problem looks like a nail" I remember my creative thinking class, we were asked to brainstorm a solution to clearing the sidewalks of snow. I proposed a snow shoveling robot. the mechanical engineers had ideas like magnifying glasses above sidewalks to heat them, or making the sidewalks black so they absorb more heat. those were probably more elegant/cheaper solutions. society benefits from different viewpoints.
I think that argument at best supports the claim that there might be some things that not (almost) everyone should know/should be able to do, but certainly not that programming specifically is amongst those. Your argument would equally apply to arithmetic or reading and writing. Would you say that we should drop those from the school curriculum as well? If not, what distinguishes programming from those that it should not be a skill that's taught to everyone?
sorry for the late reply, i somehow didnt see this.
"I think that argument at best supports the claim that there might be some things that not (almost) everyone should know/should be able to do, but certainly not that programming specifically is amongst those"
true, good point.
"If not, what distinguishes programming from those that it should not be a skill that's taught to everyone?"
reading/writing are useful as they are important for conveying information. world news, stop signs, history, etc. Programming is useful, but I wouldnt call it a fundamental the same way reading, writing, math and history are. when people cant read or write, they can cause traffic accidents. They can vote foolishly(if they can find the polling place). People who cant do math will not understand their personal finances. People who dont know history will repeat it. I dont see society falling apart because people can't make their own apps.
Now for what its worth, I think it might be worthwhile to teach people some basic shell or python scripting, as that could make their jobs more pleasant by reducing the repetitive, boring work. But would we add a year of mandatory schooling? or would we cut something else? Because I do think those other subjects are necessary.
I just dont see why everyone should be a programmer, and I dont think I've ever heard a good reason, other than asserting that it's the future, and there is no other way.
> I dont see society falling apart because people can't make their own apps.
But wouldn't people have made the same claim before literacy and math skills were (almost) universal? And wouldn't they actually have been right? In the world as it was, you obviously could survive without those skills. The question is: (1) how useful will it be in the future, and, even more importantly (2) which opportunities could humanity be missing if programming doesn't become a universal skill?
> Now for what its worth, I think it might be worthwhile to teach people some basic shell or python scripting, as that could make their jobs more pleasant by reducing the repetitive, boring work. But would we add a year of mandatory schooling? or would we cut something else? Because I do think those other subjects are necessary.
Well, I think another aspect is much more important: People should learn enough programming to be able to understand how the world works. Certainly, the goal should not be to enable everyone to build highly-reliable highly-scalable high-performance distributed systems, or whatever. Just as the goal of language and math classes is not to produce authors and mathematicians.
Now, I don't think that being able to create your own "Apps" would be out of the question. The only reason that's somewhat difficult nowadays is because the platforms and SDKs suck, not that it's somehow fundamentally a complex problem.
But overall, I think the goal should be to (1) give people some idea of what happens with their data behind the touch screen, so they can understand the power structures that result from the software's inner working (because they otherwise will repeat history because they don't notice how those new-fangled systems encode power structures that previously were determined to be dangerous for a society), and make informed decisions on how to use information technology and (2) give them some idea of how to approach problems with mechanical solutions and possibly encode these solutions as software. With the latter, the point isn't even necessarily that they should be able to implement it themselves (though that certainly should be an option for sufficiently easy tasks), but that they have an idea that software could even be a solution, maybe how they could explain their problem to someone more specialized.
In any case, the idea would not be to teach the details of, say, the Android API. The idea would be to teach general principles of automatic information processing.
As for other subjects to throw out? Sure, throw out woodworking and electronics classes (where that hasn't happened yet), but replace them with computer science/programming rather than with Microsoft product endorsement classes.
"But wouldn't people have made the same claim before literacy and math skills were (almost) universal? And wouldn't they actually have been right? "
Good point.
"People should learn enough programming to be able to understand how the world works."
Ah, I was responding to the assertion that every should be a programmer. I might have misinterpreted this to mean professionally rather than passing knowledge.
"But overall, I think the goal should be to ..."
I agree, and I do get frustrated when people are surprised that their cloud storage files are on someone elses hard drive, or other similar situations. They really need to understand the implications of their decisions. And it would be good to give them another way to look at problems, another tool to use.
"As for other subjects to throw out? Sure, throw out woodworking and electronics classes ... Microsoft product endorsement classes"
Hmmm. Not sure I disagree, but woodworking is a valuable skill, and I think its important for people to be exposed to different types of careers so they can make an informed choice. My dad does woodworking for a hobby, and I would rather have nice handcrafted furniture available, rather than cheap plywood crap. I suppose they could learn to program cnc routers, and make beautiful machine crafted furniture. Not sure what you mean by electronics classes? As far as the office classes, there are people who really struggle with computers, and teaching them skills they will need in an office is useful. Maybe teaching them some basic ui design principles would do more to enable them to learn these programs, and others?
Well, you were lucky I saw your message at all :-) (you did upvote mine, didn't you?)
> Ah, I was responding to the assertion that every should be a programmer. I might have misinterpreted this to mean professionally rather than passing knowledge.
Well, obviously I am only speaking for myself, but I think most people who suggest programming to be tought as a universal skill don't expect everyone to become a professional programmer (though I guess chances are programming in some form or another could become pretty pervasive at least in jobs that typically require some kind of higher education).
> Hmmm. Not sure I disagree, but woodworking is a valuable skill, and I think its important for people to be exposed to different types of careers so they can make an informed choice. My dad does woodworking for a hobby, and I would rather have nice handcrafted furniture available, rather than cheap plywood crap.
Sure, but I think it's far less important as a basic skill nowadays, and it's not really much of a job anymore either. So, if resources are limited, I think teaching computing/programming basics would be more important. Nothing wrong with offering optional courses/clubs/whatever, though, I guess.
> Not sure what you mean by electronics classes?
Like, soldering simple circuits, that kind of stuff.
> As far as the office classes, there are people who really struggle with computers, and teaching them skills they will need in an office is useful. Maybe teaching them some basic ui design principles would do more to enable them to learn these programs, and others?
I think so. And in any case, I think that teaching a proprietary product in public schools is completely inacceptable, pretty much no matter how useful a skill it currently might be. Schools always should teach generic, transferable skills, not products. It might well be that Casio calculators are useful. But that doesn't mean that we have Casio classes; we have math classes that teach arithmetic, and possibly the use of calculators.
Not all programming is about math/logic. Programming is as diverse as writing. Saying only one kind of person should program is like saying only one kind of person should write.
I'm not saying they cant program, just that not everyone should be a professional programmer. Not trying to exclude people here, anyone who wants to can. But I dont think everyone needs to be a programmer.
"when the only tool you have is a hammer, every problem looks like a nail" I remember my creative thinking class, we were asked to brainstorm a solution to clearing the sidewalks of snow. I proposed a snow shoveling robot. the mechanical engineers had ideas like magnifying glasses above sidewalks to heat them, or making the sidewalks black so they absorb more heat. those were probably more elegant/cheaper solutions. society benefits from different viewpoints.