The Old Days...I began coding when I was 8. The first computer language I learned was BASIC on our brand new TRS-80 model 1 (complete with a total of 14k memory).
"How did we learn to program back in 1978?", you may ask. The internet wasn't around, at least not in the common form it is today. You couldn't turn on the TV and order your "How to Program in BASIC DVD" video course for $19.99. There weren't any schools or classes available in most places. So how was one ever to learn the joys of seeing your name scroll endlessly across a black and white computer screen? We read books and magazines, made lots of mistakes, and experimented like crazy.
I had a bookshelf full of books like "Programming BASIC", "50 Great Games for your TRS-80", or "Basic BASIC: An Introduction to Computer Programming". Inside these pages were not only basic lessons on programming, but they also included the actual programming code for dozens of games. Pages after pages of code, hundreds if not thousands of lines of computer programming code.
As a kid, the biggest problem in the early days of home computing was finding interesting things to do with your new high tech computer. There were only a handful (yes, a SINGLE handful) of games available at the tiny local computer store...if you were lucky enough to have one nearby. And there was no xBox Live or PlayStation Network where you could browse and download the latest games.
At best, if you were lucky enough to have a modem and the right phone numbers and login, you might be able to hit an online bulletin board and download a program or two from there.
Unfortunately for me, our family never splurged on the modem hardware.
The process for learning a programming language back then was relatively simple, you read the lessons that explained the basics, then you put the lessons to use by typing in and debugging actual code. After a few lessons, and thousands of lines of code, you may start to experiment with things on your own. You'd experiment with how you thought things were going to work, and then try to figure out why they didn't.
I spent countless nights (and early mornings) spending the night at a friend's house where we would take turns entering thousands of lines of code so we could play a simple game on his computer.
That was it. That was just how it was done. It was very similar to the same method of learning any new language; like Spanish or French. First you learn the basics and structure. Then you memorize and practice with common pre-built words and phrases before setting off on your own and trying to put together your own sentences. Then you try to figure out how you ended up at the library when you asked for directions to the restroom.
These DaysToday the process is quite a bit different. Want to build a game today? No problem. There is a plethora of game development software to choose from. Many of which include drag and drop interfaces and don't require any actual coding at all. Many have online stores where you can purchase extra extensions and plug-ins that give you added functionality if you wanted to do something outside the scope of the default development software.
Even if you were to do a little coding yourself it only takes a few smart searches online to find extra pre-build libraries and code snippets that you can instantly download that allow you to easily add that missing complex functionality in your game.
While all of this software and easy access to cut-and-paste code libraries has no doubt made the process of making games easier and faster, I'm not sure it's a helpful tool toward learning. In fact, it's completely possible to create your own game without learning a single thing about programming. While I agree it's much "faster and easier"...I don't feel "faster and easier" make it "better" in the long run. As a result, this is creating a world with many more games, but many fewer programmers. That seems a shame, in a world that's relying more and more on digital interfaces and computers.
Without knowing how the code works, you limit yourself to the features provided. Personally, I hate being limited.
My Challenge to Those Making Games
I'm not trying to say, "Making games is a waste of time." or that "Game engines are bad.". I feel quite the opposite in fact, making games can be incredibly valuable on many levels. But for those that are making games and don't know anything about programming, let me suggest taking a step back and programming a little by hand before jumping directly to the drag-and-drop interfaces. Take the time to step through some coding tutorials in whatever language you are using. If you use snippets of code from the web then at the very least copy the code yourself by hand instead of resorting to copy and paste. If you're using a library then take a little time examine how the library is constructed, and figure out "why". Who knows, you may even find ways to improve it.
Will it take more time? Yes. Will you have to work through some frustrations? Absolutely. But I promise you'll get more out of the experience in the long run.
Drag-and-drop game engines, downloadable code libraries, and plug-ins are great for speeding up development of applications. But don't deny yourself the opportunity to expand your knowledge so that the tools that you use don't become the barriers to what you want to do.