I make music. It's all I make. I made a rap mixtape. I was in a band in high school. I'm more passionate about the rock and roll though. We played alternative psychedelic rock funk? What was our genre? We had a minor amount of clout. 5k plays on SoundCloud from just randoms. I tried to start a band in university, but we didn't really practice much though and wrote 5 songs. It wasn't the same. We were fearless. I used to write a lot of code. That was the original possession. I made websites, backend tools, regular games, flash games, an uncompleted platform game in Android, some nuisance program in C in the seventh grade. Tried to type in assembler to get my own OS to boot. For some reason I stopped doing all of this halfway through high school. I was so bored in programming class then I ended up getting suspended. I still produce music uncontrollably and made a teen angst novel but it was pretty bad. I am good at coding but the urge is gone. How can you lose passion for something? These urges pull me away from everything else. And like a lot of us I guess I beat up on myself too hard for not doing more. I need more.
Quite the eclectic person! In your opinion, if you had to start from scratch learning how to program what would be an ideal language & method? I've heard varying opinions, though notably it seems many recommend: "The Little Schemer" by Matthias Felleisen, "Think Like a Computer Scientist" by Allen B. Downey, and "Automate the Boring Stuff with Python" by Al Sweigart. About 4 years ago, I was consumed by the idea of making a new classified ads website in the same vein as Craigslist + more features. I got decently far (visible at real-list.herokuapp.com) BUT essentially only implemented what was thoroughly walked through in Michael Hartl's "Ruby on Rails Tutorial". My attempts to understand the Ruby language itself and fundamentals of programming (correctly writing loops, functions, conditionals, etc) were abysmal, so the intended features I could not locate Ruby Gems for were next to impossible to code by hand.
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.