I’m of the opinion that all software developers who have free time should spend some time making video games.
Video Games are fun, expressive software. They contain many left-brained notions such as aesthetics, behavior, and interactivity, which are not always involved in our day jobs. And even if our day jobs include them, they are not always distilled into pure, palpable form like they are in video games. What better way to cross-train than by making games?
The problems one solves when making video games often teach you a great deal about programming in general. Similar to automated test writing, one quickly discovers the limits of a language’s code structures and begins to push on them.
Control structures in video games are one example where this seems to come up. Although many things occur at once in a video game, the programmer must manage each bullet and each enemy during each frame to create that impression. The pain of managing those similar, yet different elements leads to all manner of innovation.
Frankly, I also have purely selfish reasons for promoting this idea. I play games, and especially enjoy those that come from new points of view. I would love to see an upswing of game development coming from fresh minds. The video game medium is in the process of becoming an acknowledged, legitimate, and thoroughly unique art form, capable of expressing ideas and feelings in ways that other media cannot.
So go make video games!