> 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.
I did upvote you, i thought you contributed thoughtful responses :)
"but I think most people who suggest programming to be tought as a universal skill don't expect everyone to become a professional programmer"
wow, that moment when you realize it is possible that you have misunderstood an entire ongoing, industry-wide conversation.
"but I think it's far less important as a basic skill nowadays"
That's true, the average person does not need to make their own chairs anymore. And programming would be more useful to more people. But I sometimes like to think of high school as sampling things that you might be interested in pursuing further. Though I think we could get rid of one shop elective for a mandatory basics of computer programming type course.
Also, it is still a job, projected job growth 2014-2024 is 6%, which is average. [1]
"Like, soldering simple circuits, that kind of stuff"
Oh cool, we didnt have that. We did have metalworking classes, but I went with the computer ones. We had some cool stuff in middle school, like using radio broadcasting equipment.
"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."
I see your position, but I have seen so many people who think of using a program in a step by step manner who would need this. Perhaps a basics of computers/programming type course would fix the "navigate the program like a maze" mindset? Perhaps we are experiencing a filter bubble like effect where we have lost touch with people who are not into software, and how they do not just grasp things like we do?
> I did upvote you, i thought you contributed thoughtful responses :)
More importantly, that unexpected upvote was what made me look for possible late replies ;-)
> But I sometimes like to think of high school as sampling things that you might be interested in pursuing further.
Yeah, sure, but then, there is so much that you potentially could cover, and only so much time to fit it in, you have to somehow select those few that do get offered.
> Also, it is still a job, projected job growth 2014-2024 is 6%, which is average. [1]
Well, I would argue that woodworking class is much closer to what cabinetmakers (used to) do than to a modern-day carpenter's job, and that really isn't much of a job anymore. I mean, people don't only need to build their own chairs anymore, they don't need to build any chairs anymore, except for some for artistic reasons maybe.
> Perhaps we are experiencing a filter bubble like effect where we have lost touch with people who are not into software, and how they do not just grasp things like we do?
Well, it's difficult to say, but I suspect that the way it tends to be taught is part of the problem. If you aren't ever shown the map, it's kinda hard to figure out the overall structure from being led through the maze. And from my experience, those people teaching this stuff often haven't ever seen the map either.
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.