When most people look at the programs that run on computers all they see is a bunch of pretty images. Yes, they may know that there are a bunch of zeros and ones that run underneath but it is not as simple as that.
What these people do not know is that there are a lot complex layers hiding underneath those graphics that they see. And it takes a bunch of layers to make these complex systems work together. And just when you start to learn one layer there is another layer that is hiding right underneath that one and you have to see how it interacts with the layer you just became familiar with. So when you become a programmer there are a lot of systems that you have to learn to do your job right.