How Gaming Influences Software Development
How Gaming Influences Software Development
The gaming convention E3 wrapped up a few weeks ago and got me thinking about how gaming has influenced and shaped development over the years. Apart from the development skills one learns by working on games, many ideas and concepts are embodied in game development that have spilled over into the general world of software development.
Building within a Restricted Environment
The XBOX® 360 was released in 2005, and except for a few upgrades to the hard drive (newer models come with more storage) not much has changed since. This creates a very contained environment for developing new games. The interesting part about it is that even six years since the release of the first XBOX 360 consoles, games and graphics have continued to dramatically improve.
In many cases, enterprise systems are built with the idea of limitless resources. What I mean is that developers often do very little to consider the hardware constraints of the system they are working with. If something takes too much memory, they’ll just upgrade the storage space. If something takes too long to process, they will just improve processing power.
But that is not the case with games, especially console games like the XBOX, PlayStation, or Nintendo Wii. These must be developed with a close eye on the hardware limitations of the system. We are also seeing it in smartphone app development now too. As developers understand the systems better, they can do more to take advantage of the existing infrastructure and create amazing results with the same hardware resources.
This type of mentality is obviously vital in game development, but translates very well to enterprise development. Even though the resources might be more flexible in an enterprise environment, enterprise systems tend to scale much bigger.
For example, let’s say you create a process that takes 10 seconds to complete. Ten seconds may not be very long, but when the process is repeated and duplicated thousands of times, that time adds up. Now, if you were to find a more efficient way to complete the same process in only 5 seconds, you have doubled your efficiency, and you leave more time for other processes.
As we use the mindset of limited resources, we focus more on creating efficient solutions that scale very well. This means that a small company that depends on a certain software system can continue to use that same system framework as they grow and expand. Of course there will be some limitations eventually, but the general idea is correct.
Performance
There are a few performance factors that can make or break a game:
- Load times
- Feedback delays
- Display lag
When building software applications for businesses, these factors are equally important. To take Apple’s® motto, things should just work. This means creating software that can start up quickly, that is responsive to user inputs, and that can process data in the background to prevent lag and delays.
As mentioned above, developers cannot depend on virtually unlimited processing resources and so they must find ways to make the software more efficient.
The other aspect of this is that they must understand the end user and what the business goals of the software are. This perspective helps design the software around critical purposes and focus attention on the most important aspects of the software.
Intuitive Use
One thing I’ve learned in my career is that very few people like to read the manual. The manual explains how to program your VCR (do people still do that?), get your universal remote working, and what that ‘check engine’ light probably means.
In fact, we spend a lot of money hiring mechanics and computer savvy teenagers to do things that we could do if we would read the manual.
But I’m not sure that it is our fault we don’t. In most cases the manual only explains that the designer decided to create some wacky and overly complex method for doing something that should be fairly simple.
This is one aspect I enjoy about gaming – it almost always has intuitive controls. Perhaps in some cases it makes many games feel pretty much the same, but on the other hand players can pick up almost any game and pretty much know how to play it without needing a complex tutorial.
Making programs intuitive to use makes them accessible to a wide variety of users. It is okay in complex programs to follow the adage of “easy to learn, hard to master,” but they should be as accessible and intuitive as possible.
Even tech savvy professionals don’t have the time to waste navigating through complex menus and displays to find important items of information. Make software usable, customizable, and accessible. This is why many hardware and software interfaces are tested by gamers because they understand how things “should” work, and often the simplest controls are the best. I’ve even heard that the controls for the F-22 fighter jet were designed and tested by professional and amateur gamers to make sure they were as intuitive as possible.
Data Visualization
Games usually do a very good job of showing you the most vital information at the most important time. This lets a player know how many bullets they have remaining, or the health of their character, or money or valuable resources available. The importance of a particular piece of information may change at different times, and the games do a good job adjusting to the immediate needs of the player.
Games also understand that players need information quickly. Players don’t have time to examine spreadsheets or manage pivot tables, and so games try to display information in the clearest and most understandable way possible.
Of course business systems are a bit more complex and granularity is often vital, but we can still learn much from the way games present and manage information.
Data should be:
- Displayed by priority and prioritized by necessity and urgency
- Clear and easily understandable at a glance
- Able to be broken down into manageable parts
- Easily navigable to the granular level when necessary
- Up-to-date, or near-real time when relevant
And most importantly, data displays should help the user quickly identify problems and opportunities.
Being able to have a heads up display or an information dashboard gives businesses a huge competitive advantage in agile markets. Many businesses already gather the information, but businesses and developers need to focus more on how that information is presented in order to make it more useful.
Compatibility
One aspect of developing any type of commercial software is the challenge of compatibility. This can be creating a multi-platform application for gaming consoles, or it could be creating a PC-only application that must be compatible with most PCs.
The challenge is not so much creating a compatible piece of software, but in creating a compatible piece of software that also performs well. With commercial software, this is more of a marketing decision as the increased development costs are factored against the potential gains of a wider market.
But for enterprise software applications it is important to anticipate how the system hardware and software will change throughout the lifecycle of the application. Specifically, designing and building the software on defined standards and best practices will often alleviate many of the challenges associated with upgrades, as well as designing the software with compatibility in mind.
Wrapping Up
I don’t mean to say the only way a developer can learn these things is through designing games (embedded programmers, for example, deal with these constraints constantly—games are just more fun to talk about!) However, by understanding the needs of the end user and having a business oriented perspective, developers can create software that accomplished more than what is directly specified in the requirements.




