>>And I will be very frank with you, programming is not the same as building web pages.
Totally disagree. Let's assume you're just talking about HTML/CSS, as Javascript is clearly a programming language. Many fundamental concepts that you would learn by understanding HTML and CSS are also foundational in programming languages. You have to understand abstraction, and the use of textual markers to represent those abstractions. HTML attributes are pretty similar to parameters in functions and the tag names would be like function labels. With just learning markup you discover the power of using text to represent things and how the computer/browser can interpret that data to actually do stuff.
Of course there is plenty of things missing, loops and conditionals, state management, functions as data, etc. but 1) if you're teaching how to build a web page properly you will be covering javascript and these concepts and 2) even if you don't cover Javascript just learning html/css is still a start towards those other concetps. I've recently started teaching high schoolers how to code and it's amazing the sort of fundamental concepts you completely take for granted as a developer that these kids have simply never been exposed to. These are the low hanging fruit that you're assuming is not important.
Also, embedded systems are becoming increasingly cheaper to develop with, Raspberry Pi's and Arduino's cost $25 and that space is also becoming more and more open. There is a long way to go but it's certainly happening.
Finally, of course computers and internet connections cost money but these are things that people acquire regardless of whether they want to learn how to code or not. I'm not naive enough to say everyone has easy access to these things even in affluent countries, but they are goods that are acquired for many more reasons then just learning how to code. The idea that it's free and more accessible comes from that aspect, that the same tools you use everyday to browse Facebook or do a Google search are all you need to become proficient at coding. Most other engineering disciplines have higher barriers to entry then that.
Again I don't see how this is in any related only to programming.
Programming was introduced to me in school and was the most boring subject of all. Because the problems we solved looked totally irrelevant to not just me, but every kid in the school. I was glad I opted out of it and did physics experiments instead. It made whole lot sense. Had I continued working on brain dead sorting, and arithmetic problems I would have developed permanent hatred towards programming. I was already learning simultaneous equations, quadratic equations in the Math classes without understanding why and what they even meant. Why learn another such subject?
Physics was a place where I saw application of pure mathematics to real life scenarios.
Skills that you need to be a good programmer by and large the very same that you need to indulge in any creative activity. Clear definition of the problem, deconstructing it into smaller parts, apply a definite science in assembling smaller solutions, going into a build-feedback-correct cycle etc. You will have to do the same if you do physics, chemistry, biology, math, painting, music, history and may be anything on earth.
Programming doesn't make much sense unless there is a larger context and scope of your learning in helping solve some meaningful problems gets visible. Other wise the kids will just be doing yet another routine boring math kind of work without knowing its true application.
Remember kids building tree houses, That requires nearly the same kind of stuff required to be good programmer, or to take part in a science exhibition. Or a essay writing competition. What is important is to teach kids learn to discover how to work on creative problems.
Totally disagree. Let's assume you're just talking about HTML/CSS, as Javascript is clearly a programming language. Many fundamental concepts that you would learn by understanding HTML and CSS are also foundational in programming languages. You have to understand abstraction, and the use of textual markers to represent those abstractions. HTML attributes are pretty similar to parameters in functions and the tag names would be like function labels. With just learning markup you discover the power of using text to represent things and how the computer/browser can interpret that data to actually do stuff.
Of course there is plenty of things missing, loops and conditionals, state management, functions as data, etc. but 1) if you're teaching how to build a web page properly you will be covering javascript and these concepts and 2) even if you don't cover Javascript just learning html/css is still a start towards those other concetps. I've recently started teaching high schoolers how to code and it's amazing the sort of fundamental concepts you completely take for granted as a developer that these kids have simply never been exposed to. These are the low hanging fruit that you're assuming is not important.
Also, embedded systems are becoming increasingly cheaper to develop with, Raspberry Pi's and Arduino's cost $25 and that space is also becoming more and more open. There is a long way to go but it's certainly happening.
Finally, of course computers and internet connections cost money but these are things that people acquire regardless of whether they want to learn how to code or not. I'm not naive enough to say everyone has easy access to these things even in affluent countries, but they are goods that are acquired for many more reasons then just learning how to code. The idea that it's free and more accessible comes from that aspect, that the same tools you use everyday to browse Facebook or do a Google search are all you need to become proficient at coding. Most other engineering disciplines have higher barriers to entry then that.