This post is inspired by a tweet that I came across today from DigitalOcean:
We asked developers in Vancouver: What was the first program that you can remember writing? Here are the answers: https://t.co/UqmM1P1Ftn— DigitalOcean (@digitalocean) October 2, 2015
I was really impressed with a lot of the responses in the video. I certainly remember my first program, and it was nowhere near as awesome as building a FTP client in C++. Sure, there’s a lot of websites described in the video and I certainly had a few of those around the same time, but in keeping with the idea that HTML isn’t a programming language, my first real program was written in Python.
After essentially giving up on programming for a while, I decided to try again with a new approach. I was fascinated by Linux at the time, so working in C# wasn’t a great plan (I was nowhere near advanced enough to get Mono working at the time). Instead I started to learn a different language that seemed to be popular on the platform (and one that I still use often): Python. This time, I learned a bit differently. Instead of relying on a book that’s laid out for easy reading, I threw myself straight into the (fantastic) documentation using what little bits of C# I had retained as a guide. This time around, instead of learning recipes, I learned how ingredients can work together to create masterpieces. I started with control flow, glossed over loops (no, I didn’t realize how important they were at the time) and started hacking away at a little program that printed various bits of data to the screen. This would eventually evolve into a text-based “Choose Your Own Adventure” game that really started to tie things together. Sure, there were no classes or objects as far as I knew them, but I sure could write if statements. Ultimately, my simple little program was, as you might imagine, a bunch of if conditions with some user input wrapped up inside of a while loop, which I vaguely remember writing something like:
x = 1 while x == 1: Do things if Game Over: x = 0 Yeah, I guess I never really considered `while true` loops.* Sure, it was very predictable and I don't recall my story being nominated for any awards, but it was mine. That experience would stick with me and I reapplied those basic concepts in a few other Python programs before getting to college.
If we go forward a few years to today, I’m proficient in Python and (ironically) C# among other languages. My programs are a bit more sophisticated these days (I created more classes today alone than I had between the ages of 1 and 15), but those basic concepts that I learned all those years ago have definitely not left me. While I may not have a cool FTP client or fake login screen to look back on, I think that my experiences in the dawn of my programming career were really important in teaching me how to start thinking like a programmer and, more importantly, taught me how to learn. This is one of the reasons that I tell fellow undergrads (those who aren’t staring graduation in the face, as I am) that the most important skill they can take away with their degree is knowing how to learn. Know how to learn so that they aren’t required to take a job in Java simply because they learned it in school. Know how to learn so that they can stay current and marketable, even 20+ years removed from the classroom. Know how to learn so that changes in development strategies at a company don’t necessitate changing jobs.
I digress, thinking back on my early programming memories are an interesting way to see how far I’ve come in a relatively short time. While there are times that I wish I had started earlier, I’m of the belief that if one is set on learning something, there’s no age too old to start.
*One of the earliest lessons I can remember from a Freshman CS course is that any loop that relies on a
break should be refactored to avoid doing so. I suppose in some way, my loop was doing something right.