My advice to new college students is to invest in side projects. The value of side projects can't be understated, and I'm not alone in this philosophy. I have taken my own advice in the past. I created an iPhone app review website, on which I have published more than 100 reviews of (mostly terrible) iPhone apps. Unfortunately, it's been some time since I've posted anything there. On the back burner, I've kept a few other project ideas. Finding time for side projects has been difficult lately. I've decided, though, that it's time to begin a new project. I'm not abandoning my website, but perhaps a new project is what I need to reinvigorate myself.
The idea first came to me a little more than a year ago. During the past few summers, I've worked for iD Tech Camps, teaching programming in Java to high school students. A popular project is creating a text adventure game. (For anyone unfamiliar with the concept, think back to old computer games from the 1970's/80's such as Oregon Trail, or Zork.) Being beginners with only a week to learn and build, the games my students created were never very complex. Seeing their different adventures made me consider how I would make one myself using the more advanced concepts I'm familiar with.
I decided that I'd like to build a framework for building text adventures in Java. It's a project unlike anything I've done before and it seems like an interesting software engineering problem to explore. I spent a few weeks mulling over what I could call this thing. For some reason, the tale of Jack and the Beanstalk kept coming to mind as the example adventure I could create. I decided it was a pretty good name: Beanstalk. More formally, I'm calling it the Beanstalk Adventure Kit.
Now, there are a few ways I could approach this project. I could spend time looking up different object-oriented development patterns and do this "the right way", or I could just dive right in and start writing some code like a maniac. Neither of those two options feels very compelling.
What I've decided is to do a small amount of planning for basic structure and then just get to writing some code, learning as I go. If I dive in without any plan in place, I'm likely to end up with a total mess. If I spend too much time researching the "correct" way to go about this, I think I'll miss out on a valuable learning experience.
Each week I'll be writing a short post about my progress. My goal for the first week is to define the minimal feature set I'd like to have for the first beta and to begin looking at how adventures may be built with it. Follow along here on my blog or watch the GitHub repo to see how this evolves.
You may also visit beanstalkadventures.com.