Computer magazines often published source code print-outs of games where you were supposed to type over the source code, sometimes covering a few pages of code. Then you could run the code, and you could play a game! Magic.
That also gave me access to the source code of these games, and as I became better at reading the code, I started to figure out the anatomy of a game. At the center, there was a sort of event loop:
I made and sold three computer games three years later, which I am still proud of.
And this is how I learned to program. I started at the “top”:
All I had to do was define what the computer needed to do in each of these three processes.
Top-down is about starting at the top, breaking down a task into smaller tasks, and then figuring out how to implement these smaller tasks, again in a top-down approach.
Bottom-up is the other way around. You start by defining small building blocks. There, effectively, you are saying, “well, I don’t know what I am going to make just yet, but these are the building blocks I am going to need.”
If you program bottom-up, you may, for example, start by creating a module that allows you to handle files: open and close files, read from them, and write to them. Whatever you’re making, you’re probably going to need to be able to read and write files.
That sounds like a sensible approach, right?
I once ran into a situation where we were making something where we only needed to read from files on a platform where all the files were in memory anyway. So, instead of creating generic code that would “read” from a file—eg. copying the contents of a “file” from one part of memory to another, requiring extra time and memory—we could just refer to the memory block itself. This was way more efficient and resulted from top-down thinking.
Why am I telling you all of this, dear reader and artist, drawing aficionado?
Well, it struck me that you can apply this to how we study to create art also!
“Practicing Fundamentals” is a bottom-up approach. “Whatever I make in the future, I shall need to be able to do perspective. I shall be able to understand human anatomy, and I shall have to orient objects in space.”
The top-down approach is, “Hey, wow! That’s a cool comic! How did they make it! Let’s copy a part of it. Oh wait, I get it! Let me try to make my own comic. I’ll just start by making a webcomic.”
Top-down is seeing other people do something and wanting to figure out how they do it by trying it yourself, starting with the vision of a finished product you want to reproduce.
To me, the top-down approach is way, way, way more appealing. It’s the road to having fun with it. Does it take longer to learn this way? Why yes, it probably does. First ten years, I probably wasn’t that good a coder. But did I have fun! Ask me if I had fun! And did I learn it in the end? Yes, I am a great coder now, or so I like to think.
You start with what you want to make and then figure out how to do it along the way.
Jump, and figure out how to make a parachute on the way down.
Isn’t that also how children learn, little learning powerhouses that they are? They don’t practice the fundamental of standing before they do anything with that skill. Rather, they see a cookie on the table, and they try to get up to reach it, like the adults do.
There are added benefits: you practice finishing things—a skill in itself. And you discover what you want to change about your process which created that output. In the mean time, you also have finished work you can show or sell to people. Like I did when I sold my first computer games to a magazine at age fourteen.
Were the games good? Not really. But I had fun as I improved along the way, making one game after the other. I wasn’t torturing myself with fundamentals practice.
Studying the fundamentals is the bottom-up approach. You can often see people commenting after doing a “draw 250 boxes” challenge that they are depressed and unmotivated to keep drawing.
In truth, it can be a yin and yang thing: you can do both. Work on your comic or illustrations or Youtube videos or animation when you feel inspired, and work on fundamentals—only a little bit, until you start to resent it—when you’re not feeling it.
But put the weight on the fun part, with the thing you want to do. Start there.
As a game today, write down the one thing you’d like to do, and, just for the fun of it, just start! Analyze the work of artists you admire who are doing that, try to glean their approach from it a bit, and just start!
Previous article: #40 - Work LESS efficiently!