Game Developers long suffered the stigma of the lone, smelly, poorly groomed and overweight, pizza eating bachelor that spends countless late night hours in his (yes, his, not his/her) basement cranking out the next big thing in games. While this stigma may have been well earned in the 1980’s and even a little in the 1990’s, the industry has since pulled away from that stigma.
Still, game developers, like most software engineers, tend to be male, most are required to work many hours under tight schedules with little if any additional compensation. As a result, many tend then to have little or no family life (though that is far from “all” of them). Some who don’t sacrifice personal or family lives for whatever project they’re on at the time find themselves first in line for layoffs when the inevitable budget crunch comes around.
But game developers have something that many software engineers lack – passion. It is their passion that calls them into game development and it is their passion that sees them through the hard times and long work hours. But most of all, their passion helps them learn much more about software engineering for a single project than many software engineers learn in a career.
Why? Because games are among the hardest software problems in existence. They must make use of the latest hardware for graphics, sound, user input, squeeze every drop of performance out of memory, CPU, file system, network, and other resources. They deal with concurrency, complex algorithms, artificial intelligence, and security. They are often distributed, run intricate simulations, and predict user actions and involve dozens of developers working cooperatively.
But on top of being extremely hard to create (relative to many types of software), games are fun, exciting, and sometimes even educational. Think of the last game you played. Do you remember how fun it was to play? Now imagine creating that game. I find my enjoyment of writing a game is at least ten fold greater than my enjoyment of playing one.
That is why I would recommend to everyone out there who is attempting to teach or learn computer science, software engineering or and form of computer programming: create games. Students will learn more, they’ll enjoy it more, and they’ll be more driven to keep learning if they are making games. The best part is games can be simple – or complex. Basic games can involve only a little knowledge, take less than a day to write and be tons of fun both to write and to play. The more complex games will obviously take more time to create but will also teach the student more software principles. The learning here won’t just be an act of regurgitation as so many homeworks and exams are, they’re true learning experiences.
So, go play a game and appreciate the hard work of those that made it. Software people, go write a game. You’ll learn more than you think, even if you’ve been in the industry your whole career.