Scrum Task Boards and the Production Team
At
the start of a Sprint, the Scrum team will commit to completing a set of
tasks that they estimate. Those tasks are placed on a task board that
everyone reviews every day. Many of the tasks can be worked on out of
sequence, or in parallel.
If one task is held up waiting for another task,
then work can continue on other tasks. This organic flow of task execution
fosters communication among the team and prevents impediments from stopping
them cold. Scrum task boards are great for showing a large number of tasks
that can be executed out of order for a number of Sprint goals.
However,
when we have a long string of sequential tasks that must be completed in
order, then we lose some of the benefits of parallel execution of tasks.
Tasks have to be finished in order and work must flow though in a predictable
way to ensure that the many specialists we have on a production team are not
starved for work. Scrum task boards fail to represent this flow of work
through long assembly lines of production.
Scrum task boards represent three or four states of a task:
-
Not started yet
-
In progress
-
Needs approval
-
Done
This is sufficient for many tasks in preproduction. There
is a lot of back-and-forth between different disciplines behind the scenes
that occurs while a task is in progress, and that's fine. However, when we enter production, we can
have a long chain of tasks that need to occur before we see some production
assets in the game. Take, for example, the steps that need to occur for a
single level to appear in the game.
This is
a simplification of the large number of tasks and hand-offs that need to occur
for every level in the game. Each task in this stream has to occur before it
is handed off to the next step.
If one step in the stream fails or is delayed,
the repercussions will travel through the rest of the stream. Let's apply
this to a Scrum task-board as a set of tasks:
This
task board above tells us that the script is done and concept art needs to be
approved before level design can be started. One problem immediately appears
-- the visibility of the entire stream cross-dependency isn't shown task
board. Perhaps the concept art approval is stalled.
What
does this mean to the other tasks? It means that they are all delayed! Who
pays for this delay? The person doing the tuning pass, perhaps even the audio
design. The main benefit of task boards is to provide visibility to the team
about the work they are doing. In this case this visibility is lost due the
inherent dependencies in the stream. They just aren't visible here.
Another
problem with representing streams on the Scrum task board is: what are the
disciplines at the bottom doing while the first set of tasks are being worked
on? What are the audio designers doing while the concept art is awaiting
approval?
They could create environmental sounds or some other filler work,
but that isn't the most efficient use of their time. Scrum task boards empty at
the end of every Sprint. In production, we don't want to empty the production
line. We want it to be continuously filled so that everyone in the stream has
work to do every day.
So What Use is Agile During Production?
We
need to remove some of the iterative nature of development and become more
prescriptive during production. We don't want to abandon the ability to react
to change, however. Production is never 100% efficient.
We are never able to
predict every potential problem. We can find massive improvements in our
pipelines right until we ship the game. For
this reason we don't want to abandon agile entirely.
If
we establish fixed schedules and deadlines, the best we can hope for is to
meet those schedules. Unplanned problems will continue to appear and threaten
those schedules. What we need are practices that are still agile; practices
that anticipate not only change but focus our attention on continually
improving how we produce assets.
Lean Production and How it Applies
Lean
Development and Production has roots going back to Toyota in the 1940s.
During the 1990s, many car manufacturers and other manufacturing industries
adopted the principles of lean thinking.
This past decade has seen its
adoption in many industries that aren't considered in the traditional
manufacturing arena, including software development. Lean principles
concentrate on eliminating waste, delivering fast, empowering the team and
seeing the whole (Among others benefits -- see the book references at the end
of this article).
We
can apply these principles to game development as well. Like automobile
manufacturing, in production we have long chains, or streams, of work that
need to be performed by specialists in order.
Like automobile manufacturing,
the cost of labor and mistakes are by far the greatest costs. We need to
employ the full skills of everyone "on the line" to improve what we
do and how we do it. The automobile industry discovered decades ago that
assigning everyone on the line a fixed set of tasks does not achieve the best
results.
|
Can we have more like this, please :) Implementations of quantitative software engineering and such in the game industry are always wonderful to read.
The first question is how a team would transition to Kanban production from pre-Production Scrum.
Logicaly I would assume you would move each group over incrementaly from the heijunka board, transitioning them from pre-production to production. Yet I didn't pick up on you stating anything about the transtion. I have missed things before, but I think you should elaborate on that, as it seems like it would be a prime area to find waste.
I'm also wonding a little bit in regards to the skills and responsibilities each of the groups had. For me the 'Script' group causes the most confusion. Are they Programmers or are they Writers?
Also, if I have software engineers developing new technology or I'm implementing middle-ware, how would that affect my project's heijunka board?
Ken - Agreed! Continuous improvement is a cultural change. Sometimes you can't even get near enough to the horse to saddle it;)
Tommy - I'll try to answer your questions:
Preproduction is partly about designing the value stream that will produce the assets. You build your heijunka board based on the value stream. This can transition at the end of a sprint.
For this example, the script referred to the story since it came before even concept art. I should have clarified that!
Ideally you develop tech that production is dependent upon before you enter production. If you have programmers within the same Lean team, they can work with their own Scrum task board, but they mainly support the production team. Outside the team, they can still be doing standard Scrum Sprints.
Hope that helped...thanks for the great questions and comments!
It's been used in a wide variety of projects. Time-boxing tends to allow for smoothing over volatility a bit, but you are right that volatility can occur. It can also occur on scheduled tasks as well, correct? Isn't it better to deal with it using an empirical pull system?
Also I didn't spend a lot of time on reducing other wastes in the value stream that is also quite effective.
Clint
Clinton, keep the articles coming!
In my head, I’ve been battling with the process conflicts of applying Agile to games development for years. Finally, it seems like someone is getting a good stab at the whole thing. A lot of pieces have fallen into place for me over the last couple of days, and reading this article certainly helped. I also read your blog on Alan Cooper’s Agile 2008 keynote. I’ve been a big Cooper fan ever since I first came in contact with Interaction Design, and that he now is focusing some energy on our industry, is really good news.
As I see it, one of the most fundamental issues still remains: Often we don’t know if what we’re building will really work until we can experience it in a greater context. Most elements of traditionally software is successful if it’s technically sound and user friendly, but with games we also have to get the fuzzy and elusive elements of aesthetics and gameplay right. Often that require us to go back and change things over and over again even when we’re in production. Sometimes that far exceeds what we can comfortable label as polish and tuning.
To avoid excessive waste, that would logically call for a more iterative process. I guess the confidence in our level designs could maybe be improved if they were mocked up or prototyped in pre-production. Expanding this part of the project, however, comes with it’s own drawbacks and might not even be possible. Another option would be to add some sort of flexibility to the suggested production process, but I can’t really see how to do that without messing up the fine-tuned Lean process.
Anyway, great read. I need to think some more about it.
How would you deal with using Kanban methods for dealing with multiple software projects that change regularly? Is there any way a more dynamic team can combine Scrum with Kanban to identify waste?
>Another option would be to add some sort of flexibility to the suggested
>production process, but I can’t really see how to do that without messing
>up the fine-tuned Lean process.
We didn't see that. The one week takt time allowed some iteration within the co-located team.
Dennis,
That's a good question. I know that people are dealing with this in the Kanban space. I don't quite believe that Kanban is better for more iterative software development, but not everyone agrees.
Clint
A couple of things:
- The example in the article suggests some kind of hard requirement from left to right, whereas often there are 'branches' to the pipeline, where multiple streams of work can be carried out at once. How do you elegantly describe these scenarios in diagram and 'signal card' form?
- How do you introduce elements such as qa passes, or external feedback passes (say in a outsourcing context). Do you add extra loops into the board? Do you feed 'failed' stuff back into the beginning?
Branches and loops can be represented in the vertical space of the kanban board. You can also draw lines for the handoffs on the board as well. These are all implied in the simple example from the article.
Clint