The fundamental problem with all of this is, programming does not teach you anything about how computers work, even at the assembly language level. Don't believe me? Go spend six months learning VHDL or Verilog and make a CPU core with an FPGA, then you will have some idea about how computers work. Until then, learning to code is just an exercise in understanding the tools people use to solve problems with computers.
Learning to code in order to learn about computers or the Internet is the wrong approach. Knowing how to code does not magically give you insight into how problems have been solved with programs and computers, any more than knowing advanced math gives you insight into how NASA put a man on the moon. It might give you more of an appreciation into the scale of the problem solved, but that's about it.
Back in the 80's when home computers were getting popular, the only people who owned them were geeks, and most systems came with BASIC in ROM. You could play crappy games or code. Now that computers are a commodity, it does not mean the number of geeks has increased, but easy access to getting started with programming is orders of magnitude larger.
Seems analogies are popular here, so I'll use one for the sake of making my post larger. Cars are a commodity and everyone has one (and no, learning to drive is not analogous to learning to code). Of the people who can operated a car, only a few can fix a car (auto mechanics). And of those who can fix a car, even fewer can engineer and build a car.
Just because there are billions of cars and drivers in the world, being a mechanic or engineer does not make you a better driver, it does not stop accidents, it does not stop drunk driving, etc. Having a world full of educated drivers who can change a flat tire does not make cars or roads any better or safer.
Programming is like a puzzle. It is problem solving with a specific tool, and it can be fun - sometimes. Do it because you enjoy it.