Recently, I have seen different problems that people have had when starting to learn programming.
It isn't that programming is very difficult, it is just that people assume too much. The main problem that kids have when learning to program, is that they do it expecting to make a simple game within a few days. Unfortunately, though, it's not about programming visually. They don't fully realize the fact that 'programming' is to write code similar to mathematics in a simple text editor, and not dragging and dropping objects onto a 2D or 3D plane. I found this problem when looking through a few Youtube (yes, I know, usually a bad idea) comments on indie game development or showcase videos.
The way they see it, it is really easy. For example, this person implemented a variety of different attacks in a few hours. It may sound easy, but you have to really know all of these things. You can't expect half of the code (collisions, health, movement, etc) to be already written for you, so that all you have to code are the attacks and armor. My point is, you CANNOT start your programming with complicated 3D Java and Unity stuff. You have to start with things like Python, and get used to programming and it's methods. I've seen tons of people disappointed because they realize that they have to do a lot of things before they can create their game. It takes time, dedication, and work.
Some people have the idea that creating game-making programs that are more like what kids would expect would help; however, I don't think that is what you need to do. This is why I dislike Scratch. Scratch is a popular animation and game maker, with things like logic. While there is no code written, you can drag and drop things like if/else statements, create variable, and so on. However, I find this a bit misleading. It is NOT programming, and one should not try teaching using a game or animation environment.
Most of these things I found out when trying to teach my (then) 8-year-old brother to program. I got him started with Learn To Program by Chris Pine, on how to start programming for beginners with Ruby. It was the same book I learned from, and even where I had gotten interested into programming in the first place. The book was not originally for me, it had been for my oldest brother. However, he was not very interested in it after a while, and eventually gave up. I picked it up, and started reading it. It was very interesting to me, especially creating text interactive games with input and if/else conditions. This was before I even played video games (three years ago, though, there was still Minecraft and other popular games), so I didn't have any big idea of what to make.
When I gave it to my brother, he got about as far as printing text and if/else conditions before he had a problem. In a way, I expected it to happen. He was used to seeing me make Minecraft mods, walk around in a self-coded environment, and do many things with Minecraft Pi. I don't really know what he expected coding to be like, and there was no way I would have him get started with Java. He asked me when he could start doing things like what I was doing. Stuff like making games, and modding Minecraft. I tried to explain to him that it required lots of learning and work and memorization and practice to get as far as I was in programming (3 years of programming in total).
For some people, programming can be interesting and fun. For others, it is a chore, like learning Algebra. You have to program not for the end result, but because you like doing it. If, for example, I only programmed to make a 3D game, I would lose interest fast. Doing all that 'work' of learning Java and it's methods wouldn't be worth it. However, I don't do it for the finished game. I do it because I like doing it, because it is fun for me. This doesn't mean that I'd lose interest in programming if I had to do it for work and the end result was the most important thing. In my mind, programming is what I like best, not the end result.