Why Every Developer Should Make A Game.

In early August I got a new job, a fact I’ve mentioned several times on this blog.  What I talked much about is how my game development career (short as it was) has affected my ability to be successful at said job.  I learned a lot doing game development; a lot about game development, but just as much about software development in general.  I learned so much, in fact, that I’ve come to believe that creating a game should be a part of every software developer’s education.

It articulates programming concepts very well.

Many programming concepts are difficult to explain in the context of business software.  Sure, they make sense in a general way, but those concepts can be far easier to understand when you see how they work using objects that you can physically see.  Game development gives a physical nature to a lot of these ethereal ideas in a way that no other type of development can.

Everything, from for-next loops and if-then-else statements up through object oriented design concepts like inheritance and polymorphism.  Everything that you try to do in a game has an effect either on the screen or through your speakers.  Let me give you an example…

If you’ve done much object oriented programming, you’re probably familiar with inheritance.  It’s a pretty simple concept to understand, but it’s one that can often get lost in your learning because it’s usefulness isn’t always apparent in simple programs.  In games though, inheritance is incredibly powerful.  Inheritance allows you to create a single base class for something like an enemy, and then sub-class that into different families of enemies, and further into the individual enemy types themselves.  But, you can still go back, make an alteration to the base class, and have that change automatically cascade down through all of your sub-classes.  This makes it incredibly easy to make fundamental changes to large portions of your game without doing massive amounts of work.  In fact, inheritance was so useful in my game development odyssey that it’s a concept I’ve used heavily in every project I’ve worked on since then.

Game development encourages performance tuning.

Games are performance driven in ways that typical business applications simply aren’t.  Unless you’re working for Google, managing billions of website hits per day, you’re almost certainly not that concerned with application performance.  In fact, if you’re a professional developer, how often do you even really consider performance, when making design decisions?  My guess would be, not very often.  That doesn’t make you a bad programmer, either.  It’s simply the way of the world.

The average business application simply doesn’t require the type of performance that even simple games can demand.  That’s ok if you never have to write a large-scale app.  If that day should come though, are you prepared to develop an application for a performance intensive environment, or will your code crumble under the weight of any serious demands.

Game development helps teach about performance in the sense that games scale like enterprise apps, without the enterprise overhead.  You can’t exactly test your website’s ability to handle a million hits if you can’t get  a million hits.  What you can do is create a game where you fight a single enemy, and then see what happens when you fight one hundred, or one thousand enemies.  Does that bring your system to a crawl?  If so, are there things you can do in your code to improve that performance?  If you can figure out how to performance-tweak your game, you can apply the same concepts to enterprise-level software design to great success.

Games are sexy.

Let’s be honest, there’s nothing cool about business software.  There’s nothing inherently intriguing about writing business software.  Here’s the funny thing though; once you start writing software of any kind, it all starts to become interesting.  If you can get into programming by writing a game, you can certainly stay in the field doing business development.

Games are a great way to visualize your code in a way that feels cool, and by doing so, you can help yourself to stay motivated to keep learning.  Games also represent something fun, and beautiful.  They’re easy to imagine, and magical to create.  Game development accentuates all the best, most satisfying things about programming because the product created is something that everyone can appreciate.

Code is code.

Finally, writing a game isn’t really that much different than writing business software.  Even if you’re a 3D graphics programmer, your skills still translate to many fields outside of game development.  For virtually every other aspect of game programming, this is even more true.  Games are just a subset of software and as such, all but the most game-centric concepts are applicable to a great many areas.

Coding a game can help keep a new programmer engaged, and an old programmer excited.  It can help give us a reason to strive to learn new concepts and paradigms.  It helps us remember why code is cool.  Games are beautiful pieces of artwork that take an immense amount of technical skill to create.  They represent the most artistic part of computing, and the part that most often speaks the loudest to us.

Advertisements

4 thoughts on “Why Every Developer Should Make A Game.

  1. Nice blog Steve, keep up the good work!

    I would like to add that inheritance is often a mis- and overused concept, particular in Entity/Game Object component systems and that it not only lead to clumsy design but also tends to have a side effect on how you end up laying out the data in memory which further affects performance. Composition is a must better way to go in many cases, particularly for Game Object component systems.

    Nevertheless, agree that game development is a great way to learn about programming 🙂

    BR

    Eirik

    Like

  2. Nice article,

    Even though I’m not into the Game Development Business, I have programmed some games by hobby, and I agree that a lot can be learned from coding a game.

    Games tend to have a more unique code base than most business softwares out there, coding a game forces you to find (or create) solutions to problems that you would most likely not have on other software. The challenge, facing new development problems, pushes you to an upper level.

    Like

  3. Studying games majoring in programming I always get “another one, everyone wants to do games” sort of responce or mentality when I answer what I do. But this sums up everything that I feel when I get that response.

    Like

Leave a comment!

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s