I’m supposed to know that?!
The journey of a confused Computer Science student.
As we’re nearing the end of the term and finalizing much of the work on our adventure game, I’ve had a lot of opportunities to solve problems and I would like to share some of the techniques that I’ve learned in this blog post.
Sometimes when starting out on a software development endeavor, people ask “What language should I use?” as a common question. If one were to ask this question in a Reddit forum, for instance, there are many different answers but it always ends up with a response like “it depends.” Throughout the journey of creating a text-based adventure game, I’ve learned a lot of things about living with language decisions that have downstream impacts on aspects of game development that I didn’t know before. I would like to explore this and other dynamics of game development through the lens of project management, project distribution, and other interesting things I’ve learned throughout this process.
Have you ever been intimidated to learn how something works because in your mind you made it more complex than it needed to be? In computer science, this happens a lot and I’ve felt it happen over and over again during my journey through this program and I’m also learning how to recognize it and overcome it.
At this point in the capstone project, we’re well underway designing, creating, and thinking about “the machinery” of how our game will work. Today I would like to take some time and talk about some of what I’ve learned along the way.
First, let’s talk about architecture. We’ve all probably seen some code we wrote a year ago and been a little offended that it used to be our best work. Sometimes it’s even what some might call “spaghetti code”. As it happens, I’ve developed a fine taste for untangling this tasty treat in my job and in school. One of the key rules that I personally follow as a result of these impromptu refactoring sessions is to always start with a good foundation. As it relates to code, this means constructing classes, modules, and functions in a way that they are composable, yet separated. I know, easier said than done.
Have you ever stopped to look back at where you started in your educational or career path and thought, “How did I get here and what’s next?” I know for myself as a computer science student I have often thought these questions for myself and at each step of this journey I am continually surprised by how often I’m humbled by how far I’ve come.
I found computer science by sheer accident and frustration of doing boring “business” work. One day I was sitting at home with my kids and I was playing one of those free HTML games and thought to myself, “This sure would be interesting, how hard could it be?” Boy, did I learn.