When it comes to teaching beginners how to code I usually tell them to start with Python and get cracking, but only because Python is a high enough level language that it's easy to get into. Most people will say that. But really 99% of coding is understanding how to get what you want in any language. The skills transfer pretty easily. The concepts are mostly the same. The real challenge is in developing the intuition to say "hey, I want to accomplish x" and know exactly how to engineer a piece of software to do that. That goes beyond just telling the computer to do x, y, and z in a linear fashion. Sometimes you need to know if object-oriented programming and creating several instances of an inherited class is the solution. Creating a platform game? You bet Player inherits Entity and player.x and player.y are moved by a function that takes in user input and determines if they are colliding with any other sprites while simultaneously applying gravitational force, keeping them from moving through objects, and scrolling the screen to the right. So there are a lot of things to wrap one's head around, but once you do you usually go oh, I see how that saves time and makes everyone's life easier! Loops and functions are there so you don't have to say the same thing 800 times. I never read any books. I started in C++ back in the day from this tutorial. I think I was in the fourth grade at the time. I got as far as virtualization and polymorphism before my little kid brain couldn't keep up anymore. But there were other... applications. I then did the game programming tutorials using the SDL library from Lazyfoo. And so that was a quick segue into #include <windows.h> and dialog-box spam on the school computer. After which I later learned all the web markup languages and PHP, Python, Java, whatever. Never done Ruby though. An analogy is music. You can learn to play music, but the real thrill comes from creating music. It takes a lot of uncomfortable hours of experimentation to get to that point. Coding is the same. You have to want to create things for yourself that were completely your own idea, and figure it out on the fly. A lot of googling helps.