I've spent the last few weeks trying to write a blog post about why Agile software development is inherently more difficult for games than other software. I searched for some fundamental reason, such as games being works of art, or being entertainment, or being more difficult to test, or anything about their very nature that makes game development different from other types of software development.
I couldn't find one. Instead, I came up with reasons that are purely circumstantial, rooted in business models and development environments. Nonetheless, it is the situation we are in; the good news is, we can change it.
4+ Reasons Agile Game Dev is Tricky
Number one: the insane business model based on packaged games. Develop a game for years, market the hell out of it, ship it, profit, repeat. Crunching hard is probably in there, as is going bankrupt. Each year fewer and fewer games garner a larger share of the sales, and budgets are often reaching into the hundreds of millions of dollars to continue this model. This is pure insanity, so development methodologies of greater sanity, like those based on Agile principles, simply cannot thrive. Often they struggle to even take hold. Don't underestimate the depth of this problem. We have a generation of executives and marketers (and developers) who know only this model, and trying to explain to them how you need to be flexible and iterative with releases and develop with tests can feel like a losing battle.
Number two: We've equated Scrum with Agile. Agile embodies a set of principles, but we've equated those principles with a (limited) set of tools: the Scrum project management methodology (you can substitute Lean and Six Sigma in the previous example; this phenomenon is not unique to games). If you're ever tried to impose Scrum on an art team, you can see how much of a disaster it is. Rather than take Agile or Lean principles and ask "what is a good way to work that values these principles?", we just institute some form of Scrum. I've seen many people dismiss Agile because Scrum failed, which is a shame. And like Scrum, I've also seen forms of soulless Kanban implemented (soulless because it doesn't support the principles of Kanban, like limiting work and progress, managing flow, and understanding constraints).
Number three: Game development was late to the Agile party. Software has had about 15 years to figure out how to apply Agile to business and consumer applications and websites. While "flaccid Scrum" now seems common in games, that's relatively recent; combined with multi-year development cycles in these so-called "Agile" shops, there hasn't been much of the learning and reflection that underpins Agile. On top of this, Agile is in a period of maturity right now and is being appropriated by project management, so it is difficult to innovate in the methodology space to come up with an alternative to something like eXtreme Programming that works in game development.
Number four is pretty interesting: Game sequels are not iterations. It is very common to build up mountains of debt to ship a game, and then throw away and rewrite those mountains for the sequel. This worked okay because sequels were usually much more disruptive than innovative so there were more opportunities for rewrites. In contrast, consider that the MS Office UI stayed basically the same from 1993 to 2006. Now as games are entering a loosely defined "software as a service" model, our development priorities must change. We need to be able to iterate month-by-month on the same codebase and pull things forward. This is a new set of skills we need to develop.
There are a number of smaller items that are less important but still should be pointed out:
- Game development hasn't embraced open source and is on Windows. Many developers and executives I've met have a distrust of OSS (CCP's use and support of Python and other OSS is a source of pride for me and others here) and the majority of game development is on Windows. The Agile movement has strong roots in OSS and Linux, so aside from the cultural differences between the two communities (which should not be underestimated), there was just a lack of engagement between game developers on Windows and Agile evangelists on Linux.
- Game development reinvent wheels. The availability of lots of excellent open source middleware has given non-game developers a leg up on focusing on their core product. If you had to develop your product and webserver, you'd incur not just the cost of developing both but of splitting focus. Game development has historically done a poor job of using middleware and has often reinvented the wheel; this has probably historically been due to the desire for maximum performance and ridiculous deadlines and business models. With more hardware to spare, I suspect this will change and we'll see things like HTTP used between client/server instead of custom RPC stacks.
Reasons Agile Game Dev is not Tricky
Finally, there are a number of arguments I have thought over and rejected, including:
- Games are art and art cannot be iterated on like other software.
- Games require too much 'infrastructure' to make anything playable.
- Games want users to spend time, not save time.
- Games are impossible, or at least significantly more difficult, to test.
- Fat clients are difficult to distribute.
- Frequent releases are confusing for games, which are traditionally content-heavy.
Call to Action
There are solutions to all of these problems, but it requires getting to the core of Agile's principles, and even more importantly, the Lean principles those are based on. What game development needs is a new set of practices and tools, better suited to our technological problems, that fulfill the same principles and can be mixed and matched with existing Agile practices and methodologies. Some ideas or topics for discussion in future posts.
If you like this post, head over to my blog at robg3d.com. I only cross-post articles occassionally.