A bit of background
Game programming is one of the hardest forms of software development I’ve worked on. From my experience, most poor saps can’t even program, let alone create complex games. I used to work as a business applications programmer and I’ve found that games have one particular ingredient that makes them far harder to develop than most other apps. That ingredient is ‘fun’. You can’t easily measure it, set up a list of requirements nor do test cases to make sure it’s there.
Another area to discuss is languages. The article talks about Basic and Assembly, and thankfully we’ve moved on from these horrid things. While it’s great fun to hack away in close to machine language, the fact we have much higher level languages means we can spend more time making the game, and less making the computer do what we want. Many people believe that C++ is old and useless; however it’s still the best choice for making games. While it’s better than assembly, it’s still quite low level, allowing us to directly access memory and have lots of fun with raw pointers. Many people still can’t get their head around such things (they’re called Information Systems majors). While java and .net may be good for beginners, all the work they abstract or hide means the programmer doesn’t fully know or control what’s going on. Don’t get me wrong, I’d love to start using a language like C# to make games, however at this point it isn’t really an option, but that’s for another blog. Enough background, lets get on with the real story.
The Good News
A lot of the game programmers I’ve worked with have been up to the challenge. Game programming is still in its infancy and we have much to learn from general software engineering practices. A lot of the proven techniques to help with the complex task of developing software aren’t that difficult to learn, we just need to devote some time to learning them. One of the hopes of this blog is to share some of the general software engineering principles I’ve learnt and share them with the game programming community.
The other good news is that not every position requires a John Carmack. Even with little 3D and complex math skills there are plenty of areas of games development that programmers can work on to make successful games. For every one hardcore engine coder on a project there are many gameplay, UI, script, etc programmers who must rely on creativity more than just pure programming skills. With engines such as Unreal 3, a lot of the complex work is done for programmers, leaving them with the task of making a fun game, rather than writing the fastest rendering system they can.
The Bad News
While I’ve met many good programmers they are, unfortunately, few and far between. There are plenty of programmers out there that can’t even put simple desktop applications together. While making games sounds like fun, it’s also extremely complex, and a lot of these useless programmers just can’t hack it (if you’ll excuse the pun). If you haven’t been coding since you were knee height to a grass hopper then you’re in for a long ride. Programming is one of those things that people either get, or they never will. Even if they ‘get’ it, games are so complex there’s a high chance they won’t be good enough to understand all the complexities. It’s one thing to write code that performs a desired task, a lot of programmers can do that, but to write it efficiently enough that the game can still run >30 frames a second is a hard task. It takes only one piece of poor code within the inner game loop to be slow and the entire game will bog down. This is only getting worse as games become larger and more complex. Add to this the fact each different console comes with its own complexities, pitfalls and challenges means that programmers must be completely comfortable with their language and general programming skills.
As game programming requires only the elite of the programming world there is an unfortunate side effect, the ego. Game programming is one of those jobs that nearly any kid would love to have, and with so many people not being good enough, some game programmers take that as an opportunity to think they are the most amazing people in the world. They often forget that their colleagues are in a similar situation and instead think they are better than everyone around them. This is often called the “Prima Donna Syndrome” and I’ve seen it all too often from game programmers. Awesome game programmers are like good looking people, it doesn’t matter how good they are, if they think they are the best, and act that way then it basically negates all of their ‘goodness’. The problem here is that game development is a team exercise. Programming is only part of the puzzle and people need to communicate well if the team is to succeed. Within the small group of good enough programmers, there’s an even smaller group that can communicate well and don’t think they are God’s gift to the game development world.
The Pay Problem
Back in the beginning of game development, programmers were paid less than their regular counterparts. The article paints a pretty picture of how it will be in the future (now) though. Aren’t we lucky then that games are pulling in billions of dollars around the world? Surely things would have changed since 1981 and this complex profession of ours would be receiving the remuneration we deserve, unfortunately not.
The majority of game programmers I know would take a massive pay rise if they left the games industry and used their genius elsewhere. Combine this with much overtime, poor working conditions and generally badly run companies and there’s little incentive to stay in the industry these days. Why else would the average years in the industry be as low as 5 these days? Without having the pay to back it up, the industry is only ever going to get diehard gamers who wouldn’t dream of doing anything else. Thankfully I’m one of them, and the current shortage in good programmers works out well for my peers and I, however for the industry in general it’s a problem. This pay problem is only making it harder to find programmers that are good enough. A large chunk of the programmer market is simply not interested in the low pay and bad working conditions a lot of studios make them put up with.
So the simple answer is, yes, programmers these days are good enough. The long answer is ‘kinda, it depends who you ask’. There are plenty of Carmack style genius’s around at the moment. There’s also plenty of people looking to the future of games from Tim Sweeney to David Jewsbury (who gave an excellent speech at game connect). We have some excellent tools at our disposal, many different languages to choose from and an ever increasing budget to work with. While I’ve met countless bad programmers, I’ve also met enough awesome ones to know that the games for at least the next five years are in good hands.