Are Game Programmers Good Enough?
Computer Gaming Weekly released their first 100 magazines for free download on the net a while back. I was reading through the first issue (November 1981) and I stumbled across an article containing a section entitled “Programmers: Are They Good Enough”. While this is a nostalgic and interesting read, it begs the question: 25 years later, are programmers good enough?
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.
Conclusion
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.











Buddy in the original article likes his wargames.
Very good reading and interesting points made. I try to teach programming at University using games as task to code with the hope that it will not be that borring for those who don’t get programming. It works out good with simple games like pacman in Pascal, so maybe game programming is not that hard
Just joking, but still maybe we all should say instead of game programming is the hardest form of soft dev than game CREATING is the hardest form.
Roman Budzowski-
I’d agree that the simple games are quite easy to do, and this can lure people into even more of a false sense of security that ‘coding games is fun’.
Yes, along with game programming being hard, the entire creation process is extremely difficult. Why else would most games run over time, budget and end up being only half as fun as was anticipated. I’d like to discuss why most publishers and producers don’t know what they’re talking about and are also not up to the challenge either, but this may get me in trouble with too many people that control my pay cheque’s
.
The Prima Donna thing is a horrible problem to the industry. All these people with their mad skillz and all that. It’s annoying. But you find that in other computer app development as well in it’s own way, but at least those people try to be civil about it.
But that pay problem is that main reason that I’m not professionally in the industry (I’m an Indie/hobby developer). The thing is I make way more money doing business apps than I probably ever would working at some game dev house. I might, and just maybe, be able to make what I make now after 10 years or so in the industry but by then I’d probably be looking to get out it anyway way before then if I’m like the average developer.
I like the challenge of game programming. That’s really the sole reason why I still do it. If I just did it for the pleasure of building my own game I’d probably be out almost as I got started. You’re right it is super tough, and what’s cool about it is if you think you’ve sorta got a good handle one aspect of it there are a ton of other things that you can get into and ticker with that you have no idea about. That’s another thing that I love about it, but is exactly why it’s so hard and complex.
About the people with their mad skillz again, I’ve found it’s very hard to convey the difficultly of game programming to people that haven’t really took it on before. They just assume they can do it with what they know at the time. I think it may be because people look to great games to emulate and those games make it look even easier than bad games because they hide all that complexity incredibly well. I had to do a ton of study for a long long time to even get started, and I’d been doing programming in general since I was like 12 or something. I was like 30 at the time.
Also, I’m guessing here, people sort of tend to think of games as like toys, which they definitely are for the players, but seem to equate that to their construction as well. Like, “it’s just a game you know, how hard can it be?” People don’t have this same perception of becoming a physicist or other similar thing but game programming can be just as complex I believe. Like all disciplines it can go as deep and as complex as you like.
Yes, game programming has the cool factor/fun factor appeal that helps drive wages down, since it’s a “privilege” just to be making games you love. Helps keep the work conditions low as well. That will change some as the larger game studios continue to grow and become more professional. Of course, we’ll lose some creativity too, but such is capitalism.
“Like all disciplines it can go as deep and as complex as you like. ”
Truth. But really, anyone who thinks game writing is in any way on the less-complex side just isn’t aware. As dool mentions, not only is it a significant technical discipline, but it requires combining that with fun factor, poor pay/work conditions, all combined with the necessity to be cutting edge, which necessariliy involves many new problems each time. It does lack some of the stress that another..say, brain surgeon endures, or lacks the insane patience/risk of a physicist who spends 30 years only to fail at the one task they set out to acheive…but it’s no doubt a serious, challenging technical field.
I think the biggest problem is the difference in the end product between a game and other complex software development tasks. People confuse the fact that people have fun with our end product with the fact that developing it is not just a ‘fun activity’. Whereas it’s easy to see that a complex accounting package is a complex system that is hard to both create and use.
Once people realise that game software development is just as complex (if not more) as most software development jobs we might get a little more respect.
I think the difficulty really rises along with the complexity of the project. One man games, such as Pac Man, Donkey Kong (well, they can be created by one man -today-) are relatively easy because there are less factors which you have to consider. Less complex gameplay elements, less elements, and typically far less art assets to control.
As the number of people involved in a project rises, as do the collaborative difficulties associated with that project. Team dynamics break down at a certain point (depending on team member personality and number of members) so that is why you see this industry becoming more tightly controlled -> someone needs to be a chief, and the rest indians.
It’s a shame, but if you look at the history of human endevour, this is a pretty obvious step for anything that becomes significantly large i.e requiring the efforts of a large number of people.