| >Only a small portion of population would personally benefit from programming skills without doing it as a job. I disagree entirely on this premise. Not because it is wrong, but because it has become less and less true over the past few decades. Anyone who performs any trivial or repetitive task on a computer benefits from being able to set up a small (think 3-5 lines thrown in a for loop) script to automate the task for them and there is an increasing amount of people who perform trivial and/or repetitive tasks on computers. If it is only an hour once a week and they can have a small program turn that into a few seconds - they save 52 hours of doing a mindless, boring task each year. Having 52 hours to do literally anything else is a personal benefit. Minus time spent on automating the task of course. [0] It's death by a thousand papercuts - except most people are failing to see the papercuts because they don't have an education enough to see what they could be automating with little effort. They go through their daily routine doing the same trivial tasks hundreds of times because the possibility of automating those tasks never crosses their minds. Are the benefits minor? In most cases, yes. Just like the benefits of being able to properly phrase your Google searches is also minor. Leave programming a photo-recognition app to the professionals. The average person won't need to know how to program that. Creating a small AHK macro that writes today's date? "Life changing"; actual quote from a coworker. The "life changing" program? :R*?:mdyy::
FormatTime, CurrentDateTime,, MM/dd/yy
SendInput %CurrentDateTime%
return
>It won't make or break your life but it will make it a degree easier.[0] https://xkcd.com/1205/ |
I agree, this is the main reason (nearly) everyone should be taught to program. I often draw parallels between levels of programming and levels of mathematics. Not in a sense of understanding, but of complexity, and often when describing languages.
But I think that's a useful comparison here. Few people would say that teaching everyone arithmetic is a bad idea. Because being able to count is essential to surviving in our society (just from handling your own basic finances). More, but still few, people would argue against teaching everyone algebra (the high school sort, not the abstract sort). Because it enables people to take their understanding of arithmetic and extend it with variables, create more complex expressions and solve them for common problems. Same with geometry. Trig and calculus are where the "everyone should learn" part stops, those topics are for everyone who's going into STEM fields, and other (non-STEM focused) students that are sufficiently advanced and interested.
The parallel to programming:
Everyone should learn basic algorithmic thinking. Writing out a series of steps and understanding looping and conditional expressions and subroutines. These are the things that BASIC, shell scripts, and other (relatively) simple languages provide. These are the skills needed for automating many office jobs.
Fewer people need to know low-level bit twiddling, network code (to the point of implementation of protocols rather than application of libraries that implement protocols).
Fewer still need to understand more complex data structures, more complex algorithms, and full-blown application development (whether it's server-side, mobile, web-app, desktop, doesn't matter).