| > 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. 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). |