A Game Studio’s Journey Towards Agility

Work in progress is a necssary part of everyday life. We need to schedule tasks according to priority. Having a clear understanding of what is necessary to complete the task  is required. The more complex the task the more critical getitng the order and timing of depenednt taks and activities right. Software development is very complex with high dependencies between people, tasks and things. To be effective, reducing the cycle time between tasks (the time between completing the current task and starting the next one) requires clarity on the task in hand, and clarity on who the collaborators to complete the task are.

In this paper, we discuss how we at Codacity moved from a high work in progress level with low developer productivity to one where we were on fire.

We thought we were good (doesn’t everyone?)

Because we were measuring progress on a pre determined cycle, regardless of benefit (thanks a bunch iterative waterfall), we felt that we were good enough. However we were unable to scale the (component) teams which meant that we were tying up all our resources to deliver fire drills and post warranty issues that were not billable, which ultimately destroyed profitability. This went on for ages until we did some pareto analysis on a particular project as a post delivery ‘retrospective’. We had to learn lessons otherwise we would be unsustainable as a game studio.

The analysis showed that we were actually doing a lot of things badly. Not to labour the point, we  were highligh ineficient, doing things that became a drag at various stages of delivery which cumulatively destroyed our release productivity.

Rocks in a Lake

In the above picture, the water level = cycle time (or WIP level)

Seen this way, our goal is straightforward: lower the waters (shorten the cycle time) to see the waste and weaknesses (rocks) in order to deal with them, not because there is a need to ship in short cycles but because we wanted to uncover the truth of our ineffciency. The picture is what we called the ‘Rocks in a Lake’, the hidden things charaterised by bad habits and unstructured processes and which, because we werent aware of them and we found ways around them, gave us a false impression of our greateness.

We thought that we were Agile: we had ‘excellent’ engineering practices, continuous integration, test driven development, even automated testing at the component level. Every 8-10 weeks we had iterative and incremental delivery: but we were continuously reaching a plateau in our capacity to deliver, react and scale. And we were building up technical debt.

The following picture illustrates how we were organised and the problems this caused.

How Scrum changed the landscape

We will not say too much about this picture, it is self-explanatory (did you though spot the big difference?); to get here we disbanded the component team concept that was low on efficiency and had no cross functional alignment on the final product vision. With feature teams the most important thing that happened was ‘visibility’ across the lifecycle of the product rather than a vertical slice of the constituent parts (components), also, end to end accountability was engendered within the teams.

We have split the work by function in that we have an Engineer| Build| Run model where Engineering are Product Owners who face off to the clients and are accountable for the delivery management as they engage both the client and the Delivery teams, who are our Build bloc capability. When an engagement starts the vital relationship is that between client and Enginering as this is the journey management.

Using this approach we can scale the feature teams as much as needed to achieve the clients’ product objectives. We deliver surge capacity when required and flex down as appropriate. The Engineering capability is always within 4 hours of the client so ‘virtualised colocation’ is available with requirement management done often in the same time zone if not plus 1 hour. Build teams are no more than 4.5 hours away and we deploy teams in the similar time zone as the client or no more than 1 hour plus.

We finally achieved concurrent engineering – that was massive: the component-based delivery model is a linear approach where each feature is built as a unit in isolation and is tested that way. Then you need to integrate the unit into other units (subsystem components) to achieve a whole system and product acceptance test. All along, you are risking creating regressions as you develop such projects on multiple feature branches that need merging and, due to the size of the merge, create test fails which cumulatively delays the release.

Returning to the Rocks in our lake, the issues that we uncovered forced us to take decisions on how we wanted to organise ourselves. The changes were not cosmetic, they were concrete and purposeful. We adopted a new way of delivery that forced us to think differently and invest in our people to deliver the turnaround. As a transition it was perhaps the most amazing and nerve-wracking we ever did. Amazing because the effect of transformation was 40% increase in productivity that reflected in revenue and net operating profit uplift, nerve-wracking as we were doing this transformation in-flight, while we were in production and delivering commercial projects. How we organised that will be for another blog, but suffice to say, the journey towards agility starts with commitment to the shared vision of reversing the negative consequences of the status quo. It takes leadership and conviction to see it through. Constant communication and adjustments along the way without being dogmatic on any process. Above all it takes collaboration.

About Codacity Informatica Group

We are at our heart, engineers who love change and delivery. That what makes us stand out. We recognize that systems must always start and end with clean code. CIG can power your software development transformation from ideation to execution and benefit delivery. We have more than 18 years of experience driving business change in many settings. We are ready to enable you today.