Hi,
Here is a long mail to start the discussion on how we can use scrum in our project.

For those of you who don't want to read everything, here's the abstract.

   * The idea is to implement scrum in our projects, adapting it to two
     of our main needs :
         o decentralized : we need online tools that simulate all the
           scrum process that is usually implemented within the
           physical space where the team works
         o video games : this requires to tweak a little bit the scrum
           process, mostly because of the heavy dependencies between
           teams in video games
   * I found an open source online scrum tool that might fulfill part
     of our needs, called Agile42
     (http://www.agile42.com/cms/pages/agilo/).
   * Suggested next step : anyone interested could test it (Xav I have
     questions on installation for you at the end of the mail), and
     then we discuss during our next friday meeting how we want to
     start using it


Now, if you want to read more about Scrum (not a theoretical approach but a description of how i used it myself), here it is. Tell me if you want more details on some aspects (you can also check http://en.wikipedia.org/wiki/Scrum_%28development%29) :

   * Scrum introduction :
         o Theoretical objectives, in no particular order : improve
           reactivity and adaptation to change, reduce the chain of
           command, write less documents, base relations on customer
           collaboration rather than contract negociation, plan all of
           the time and not only at the beginning.
         o Description :
               + Overview :
                     # The core element of scrum is small iterations
                       called _sprints_.
                     # All the possible features of the game are stored
                       in a _backlog_, where they are called _user
                       stories_. These stories are prioritized, and cut
                       into elementary tasks and time estimated. At
                       each beginning of sprint, a list of user
                       stories, to be finished during the sprint, is
                       selected from the backlog, based on the previous
                       pace of development. At the end of the sprint,
                       the pace of development is measured again and
                       updated, and so on.
               + Sprint :
                     # typically 1 to 2 weeks
                     # The delivery at the end of the sprint must be
                       playtestable
                     # useful to define one release every 4 or five
                       sprints (a release = measurable impact for the
                       final player)
                     # Meetings :
                           * every day, 5-10mn scrum meeting (each
                             member of the team says : what was done
                             yesterday, what is going to be done today,
                             anything blocking. Should be as short as
                             possible)
                           * each beginning of sprint : the team takes
                             the user stories with highest priorities
                             in the backlog, cut them into tasks (each
                             task must be < one day) and estimate their
                             time, measures this way the time taken by
                             each user stories (for instance using
                             poker planning), and decide how many can
                             fit in the sprint, according to the pace
                             of development of the team until then. The
                             time unit for measuring the length of
                             tasks can be the 'ideal hour'
                           * each end of sprint, a sprint review that
                             includes : post mortem, updated measure of
                             the pace of development, updated backlog
                     # make sure the sprint doesn't become a waterfall
                       =>important to parallelize all tasks :
                       conception/production/integration/test
                     # 2 tools to track progress of tasks :
                           * task board, with various columns (not
                             started/in progress/pending/completed).
                             And for every task of every user story, a
                             card is created, that is moved across the
                             columns according to the progress of the work
                           * burndown chart : X for the time remaining
                             before end of sprint, Y for the quantity
                             of work remaining (remaining cards
                             multiplied by duration of each card).
                             Gives the average number of 'ideal hours'
                             (the time unit used on the cards) done
                             each day by the team and therefore the dev
                             pace.
               + User story :
                     # must show  benefit for the player. So it should
                       follow the following structure : "As a <user
                       role>, I want <goal> [so that <reason> - this
                       part is optional]"
                     # When a user story is too big to fit in a sprint,
                       it's called an _epic_. For instance, 'As a
                       player, I want to be able to manage a department
                       of humanity project'. Too big. Then the epic is
                       kept in the backlog, prioritized, and cut into
                       smaller pieces (user stories).
                           * the epic is cut into user stories only
                             when its priority becomes high. The same
                             way a user story is cut into tasks only
                             when it's a candidate for the next sprint.
                     # When the duration of a user story is unknown (no
                       consensus within the team), it's always possible
                       to create a small user story which goal will be
                       to estimate the duration of the user story

         o Team :
               + size = 7-10 people. Beyond, implement a scrum of scrum
               + roles - very shortly :
                     # scrum master : in charge of organizing the
                       scrum, of ensuring the team has the ownership
                     # product owner : has the A on the content of the
                       project (more specifically the backlog and the
                       priorities of the user stories)
                     # same person can have both roles
         o Scrum adapted to video games.
               + Two main elements to be taken into account
                     # Three separate phases in vg production :
                       conception/pre-prod/prod. Sprints must be
                       adapted to each phase. For instance, sprints in
                       conception tend to multiply various prototypes
                       in order to create knowledge, and in pre-prod,
                       the main function of sprints is to setup the
                       pipeline of prod and address the various risks
                       by creating knowledge before entering in
                       production.
                     # Strong dependencies between jobs (ex of creating
                       a map : concept -> level design -> art -> audio
                       -> polish).
                           * The sprint organization needs to be
                             adapted accordingly, so that when one task
                             is finished by a team, the other team is
                             available to do its part on the same asset.
                           * One of the way to adapt is to add to the
                             task board a set of columns that describe
                             the status of an asset (map, character,
                             etc) and each column represents a team of
                             the pipeline (design/prog/art/etc).
               + Each user story can be owned by a game designer, where
                 he does not write complete specifications but
                 exchanges extensively with the team and refines the
                 design across the sprint.
               + Scrum works quite well in video games. For instance a
                 large part of Ubisoft studios use it - I personally
                 used it the three years I spent over there.

   * what we need with the online tool we'll use in order to start a
     simple scrum :
         o must have :
               + usual task tracker functionalities (status, users with
                 roles, etc)
               + user stories with priority level, and breakable into tasks
               + backlog to range the user stories and sprints where
                 the tasks are listed
               + task board for the follow-up of the sprint
         o nice to have :
               + tools to help measure the pace of development (like
                 burndown chart)
               + adaptation to video games (specific roles, specific
                 task board for instance)

   * Choice of tool
         o I had a look at pivotal tracker which seems like a good
           scrum tool. But it's not open source.
         o So I looked for open source tools. I did not see anyone that
           seemed as good as pivotal, but there is one which seems to
           answer our basic needs, it's called Agile42
           (http://www.agile42.com/cms/pages/agilo/). I haven't
           completely tried it but I think it's worth giving it a shot.
               + I think that to have the task board available, we need
                 to purchase the pro version. We can start without it
                 and buy it later if we like the tool.
               + Even if it's not the perfect tool, i think it's worth
                 trying it because we will then learn more about scrum
                 and about our needs, and with this knowledge it'll be
                 easier to find another tool if needed.
               + Once you have access to the tool, you can use
                 Help->Process Overview to understand how to start
                 using it.

   * conclusion and next steps :
         o I suggest that the ones interested tests the tool, and then
           we could discuss how to start using it during our next
           friday meeting.
         o Xav -> Installation of agile42 : I installed it locally for
           now. For anyone here to be able to test it together, how
           should we proceed - should we install it on our live server
           ? Can you help me on that part ?

_______________________________________________
Farsides mailing list - [email protected]

Wiki:  http://farsides.com/
List:  http://farsides.com/ml/
Forum: http://farsides.com/forum/
Ideas: http://farsides.com/ideas/
Chat:  http://farsides.com/chat/

Reply via email to