I built a time machine when I was six years old. It was one of the first computer programs I had ever created, and all it did was tell me how far into the future I had traveled. But in my imagination, at least, all I had to do was hit a key to zip through time like Will Robinson in Lost in Space.
Computer programming might seem like an esoteric hobby for a kindergartner, but now I think it’s really not too different from building with LEGOs, which allow kids to rearrange parts and satisfy the creative itch. This same feeling drove my interest in programming. Instead of playing computer games with fixed storylines, I wanted to “make my own” games. I started with Microsoft Visual Basic, a kind of “LEGO for programmers” that let me splatter a window with buttons and text boxes by drag-and-drop. Soon, I was looking for new projects to challenge myself, from resistor color-code decoders to databases of Pokémon statistics.
The First Days
It started when I developed an intense interest in computers. We had a family PC pretty early on, starting sometime around the days of Windows 3.1. Between the ages of 4 and 8 I remember playing many point-and-click graphical adventures—I certainly have many fond memories of The Magic School Bus, Putt-Putt, Freddi Fish, and Pajama Sam. They transported me into a rich world filled with mysteries to unravel and problems to solve. (Who could forget Ms. Frizzle’s stubborn tendency to get stuck in terrifying situations, forcing you, the player, to fly a school bus full of kids around the solar system to track her down?) Certainly, I feel like these games developed my curiosity. Eventually, I asked my parents, “How do they make games?” That was when I first learned what a “program” was, and that—if I wanted—I could even make my own.
If I wanted?! I could build my own universe with characters that could do whatever I wanted them to? When you put it that way, how could I not have been curious? The idea sparked my initial interest in programming. My dad helped me install Microsoft Visual Basic 5.0, a programming environment that let me drag-and-drop things onto windows.
My first “programs” were just interface mock-ups, like the Lost in Space-inspired time machine that spun a progress bar and, after a pause, alerted the user “Danger, Will Robinson! You have reached another time!” Yet I had enough fun (and imagination) that I was hooked.
One day my parents returned from a grocery trip to Costco having picked up a technical book, Visual Basic 6 from the Ground Up. (I guess this is what Costco carries when you live in Silicon Valley!) It was something like three inches thick! Yet, it was approachable enough—I remember spending many hours happily sprawled on the family room floor just flipping through the book. I would pop up every once in a while, run to the computer, and type up an example, awed at visualizations of fractals and the solution to the Tower of Hanoi puzzle.
The most important ingredient of all: “Meta-knowledge”?
When we got dial-up Internet, my parents generously left me with the connection password to use while they were at work. Every day after my grandpa walked me home from school, I would race to the computer and patiently wait for the loud beeps, buzzes and whirs to finish as the modem connected. My first stop would always be Planet Source Code, a big community of programming enthusiasts who shared tutorials and code samples. (It’s still around today!)
Hunting online for these tutorials felt like looking through aisles of LEGO sets. I would pick out, say, a cool-looking car and follow step-by-step instructions in the box. And like a kid strapping wheels and a jet engine onto his latest creation, I turned “accessing databases” into my very own “Pokédex,” an illustrated guide to 151 Pokémon! Through little projects like this, I learned to mix and match the basic bricks, plates, and beams of programming.
I would say that this was when I started building the single most important skill of my life: using the Internet to discover and learn on my own. The more I learned, the more empowered I felt. I’ve sometimes imagined that programming is like wielding a power tool, making tedious tasks simple. In elementary school, we were assigned a word search each week. Like everyone else, I started by combing my way through the heap of letters by hand. But searching was an ideal task for a computer, so I built my own special-purpose power tool, “Word Search Suite.” By the time I added the finishing touches (fancy graphics and the ability to create new word searches, not just solve them), I was overjoyed–it was just so much faster! I couldn’t resist showing my teacher, even though I half-expected to be berated for “taking the easy way out.” She surprised me with another assignment: a class presentation demonstrating my program!
Of course, now I realize that this was far from “the easy way out.” I could probably have solved a hundred word searches in the time it took to write the program. But that’s not the point. It felt easier because programming was so much more fun than combing through a maze of random letters. I felt rewarded because I made my creation work.
I’ve encountered many more situations where I could build my own power tools: the desire to search my music and picture collections for “similar items” evolved into computer science research projects for science fair. I built tools others could use as well, in freelance programming jobs.
Looking back, I realize that my interest in programming was really shaped by all the excitement I felt when showing my family, teachers, and friends my creations. Everybody loves to share originality, whether it’s art, writing, or LEGO creations. And for me, this was just a different kind of LEGO.