Small, Agile and fast: how to build a top 10 Facebook game

Philipp Moeser, CTO and co-founder of Wooga, talks about the key factors that have helped his agency develop successful social games

There have been countless events over the last few years about a subject thats remains a point of contention within the games industry: what is the best way to make a Facebook game? I don’t pretend to have a ‘one-size-fits-all’ answer, because what works for us at Wooga may fail elsewhere. But for those working on a project that looks as if it may just tail off, I’d strongly advise you to consider a few core principles that have helped teams at Wooga guide projects to success.

Last year I held a presentation with Mattes Groeger, one of Wooga’s Engineers, at Flash on the Beach in Brighton. There he talked about the numerous practical challenges of developing massive games with Agile methodology. He demonstrated these difficulties using one of our former Flash-based projects, although it can be adapted to any other language or platform.

My focus was on the overall view, and on what challenges occur during the production process and how to invigorate a project with efficient development. Highlighted in particular was a philosophy that has enabled Wooga to create great teams that achieve amazing things.

Philosophy of software: from Waterfall to Agile

It must also be noted that these learnings are not only based on my experience as CTO of Wooga, but also on my five years at Jamba where I used several project methodologies; from freestyle software development, to Waterfall (sequential planning and processing) and soon after Agile methodology (communicative processes and flexible software) at Berlin based Rocket Internet.

Before going into the specifics let’s first look at where Wooga stands today in terms of monthly active users (MAU) – the widely accepted standard for measuring the rank of a Facebook developer. We’re the number one social games developer in Europe, and have been for quite some time now. Worldwide, we are flittering between second and third place with EA, but for argument's sake let’s say we’re the third biggest in the world. Now these might sound like marketing facts but they also have important technical consequences.

Diamond Dash was one of the first mobile games to launch with a fully realised implementation of Facebook Connect and 64% of players are logging into Facebook to play with friends

Diamond Dash was one of the first mobile games to launch with a fully realised implementation of Facebook Connect and 64 per cent of players are logging into Facebook to play with friends

Translating MAU into requests

With 48 million players worldwide a month, one of our titles – one game – may see over 14 billion requests per month, or 100,000 DB operations per second. More information about this can be seen in the presentation ‘1,000,000 daily users and no cache’, held by Jesper Richter-Reichhelm, the head of engineering at Wooga, but the technical ramifications of these sorts of numbers are immediately apparent.

[slideshare id=9875360&doc=2011-10-24-splash-jesper1024x768-111025103448-phpapp01]

The work environment plays an important part in helping us deal with the weight of these numbers – in particular, how we create an efficient and successful developer team.

Making games work

The process of making games presents a multitude of unique challenges software-wise. One issue is having to quickly conceptualise and develop prototypes, not necessarily knowing what the end product will look like. Secondly, accepting that some features might have to be removed and then carrying out this task can have its difficulties for the team responsible.

Additionally, dealing with complex configurations or different business logic can create a lot of difficulties. A fourth challenge can be seen in extensive a/b testing that can take away time a team doesn’t necessarily wish to invest, or that simply appears to be a waste of time when there are other pressing situations that seem to have greater significance. These are all fair points, but I can’t stress the importance of taking that time to monitor and optimise the performance of a product before, and especially after, it has been released.

Wooga's creative room

Wooga's creative room

The Manifesto for Agile software development

Personal experience has taught me that dealing with these challenges requires a dynamic approach to management, or even better, a lack thereof entirely. Therefore we have applied the Manifesto for Agile software development as deeply as possible within Wooga’s work philosophy.

We try to put emphasis on individuals and interactions. This can be seen in our work environment where we always try to emphasise effective internal communication, and get away from caring too much about work tools and processes that have no purpose other than that of being a means to ponder subjectively about the best route forward.

Continuing on that point, the process of building prototypes (in effect creating working software through iterations) is more important to us than excessive and time consuming documentation.

“Move fast and break things”

“Move fast and break things” is a quote from Mark Zuckerberg that has since become infamous among tech companies. We encourage new employees to adopt this attitude right from the get-go. Making mistakes is allowed, and may even be necessary, in a work environment if this mantra is to be taken seriously.

Another important aspect of creating new software is to respond quickly and effectively to changes. Never follow a plan, choose the best solution and use that instead. Staying flexible is absolutely crucial for success.

A day in the life of Wooga

Wooga isn’t an ordinary company, and that’s something we’ve always been proud of. The cornerstone of this approach is the way our teams are structured. It allows freedom and flexibility – two fundamental elements for success – but it also surprises people.

At Wooga, we believe in small game teams consisting of only three roles: game designer, engineer and artist. No leader, frameworks or processes in the traditional sense are needed as the individual takes responsibility for the work done.

If something goes wrong, the team members cannot blame each other because all have participated. Equally, if the group does well, all share the success. As mentioned before, apt communication among the team members is vital for a team to work together well and for the outcome to be successful.

Over the years I've learnt that getting things accomplished is not about processes, and that being Agile always comes first. Our philosophy when dealing with all things from a/b testing to QAs is based on being Agile. Being open to new ideas, communicating efficiently and being able to react flexibly has helped Wooga create great social games that anyone can enjoy.

To appropriate Mark Zuckerberg once more: “Stay focused, and keep shipping”.