an introduction to agile development

41

Upload: elliando-dias

Post on 27-May-2015

927 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: An Introduction To Agile Development
Page 2: An Introduction To Agile Development

August 14-15 2006

Agile Game Development:Tales from the Trenches

Noel LlopisSenior ArchitectHigh Moon Studios

Page 3: An Introduction To Agile Development

August 14-15 2006

Coming upAgile Development

Organization Agile Techniques

Programming Agile Techniques

Lessons Learned

Page 4: An Introduction To Agile Development

August 14-15 2006

PART 1: Agile Development

Page 5: An Introduction To Agile Development

August 14-15 2006

MotivationUnknown technical constraints

Changing requirements

Finding the fun factor

Page 6: An Introduction To Agile Development

August 14-15 2006

What is Agile Development?

Maximize work not done

Just-in-time decisions

Adapt to change

Page 7: An Introduction To Agile Development

August 14-15 2006

Scrum

Page 8: An Introduction To Agile Development

August 14-15 2006

Extreme Programming (XP)

Page 9: An Introduction To Agile Development

August 14-15 2006

OthersEvo

RUP

...

Page 10: An Introduction To Agile Development

August 14-15 2006

PART 2: Organization Agile Techniques

Page 11: An Introduction To Agile Development

August 14-15 2006

Short IterationsScrum suggests 30 days; XP 2 weeks.

We tried both, and we're doing 2-week iterations.

Each iteration attempts to create a true vertical slice.

Use results to feed into next iteration.

Yes, you can do a lot of work in 2 weeks (hard to believe at first).

Page 12: An Introduction To Agile Development

August 14-15 2006

Page 13: An Introduction To Agile Development

August 14-15 2006

SchedulingCustomer == Person who cares about the ultimate outcome of what the team produces.

Customers come up with priorities.

Team estimates how long things will take and signs up for most important tasks in available time.

Conversation between customer and team.

Page 14: An Introduction To Agile Development

August 14-15 2006

Page 15: An Introduction To Agile Development

August 14-15 2006

Team CompositionSmall teams (8-12 people).

Collocated in open work environment. This is huge for quick discussions and communication.

Originally only programmers; now, totally cross-functional.

Scrum of scrums to scale to larger team sizes.

Page 16: An Introduction To Agile Development

August 14-15 2006

Who Does WhatTasks are created and estimated by team

People pick whatever task they want to work on

Great for morale and spreading knowledge

Careful how to deal with domain experts

Page 17: An Introduction To Agile Development

August 14-15 2006

Long-Term ViewWe create working software instead of documents.

Important to be in total agreement with publisher.

Try your publisher. They may resist change at first, but then they realize they get to have more say in your project.

Backlog

Long-term planning; three-month release cycles.

Page 18: An Introduction To Agile Development

August 14-15 2006

Page 19: An Introduction To Agile Development

August 14-15 2006

PART 3: Programming Agile Techniques

Page 20: An Introduction To Agile Development

August 14-15 2006

Pair Programming

Page 21: An Introduction To Agile Development

August 14-15 2006

Pair ProgrammingIs output 2× of what one programmer can do? Not quite.

It's a bit less (1.6 - 1.8×), but it also has other huge benefits:

Much higher quality

Spreads knowledge & philosophy

Promotes team spirit

In the long term, it is a huge win

Page 22: An Introduction To Agile Development

August 14-15 2006

Pair ProgrammingNot everybody likes it, but a very large number of programmers do.

Some teams use it almost all the time; some other teams not as much.

Another benefit: Intensity and concentration. You never have low moments, little breaks, or anything. You work 8 hours and you end up exhausted!

Page 23: An Introduction To Agile Development

August 14-15 2006

Page 24: An Introduction To Agile Development

August 14-15 2006

Test-Driven Development

Check inCheck in

Writetest

Writecode

Refactor

Page 25: An Introduction To Agile Development

August 14-15 2006

Test-Driven DevelopmentQuick idea: test-code-refactor cycle

All code unit-tested; written by programmers

Design methodology

Much easier to refactor/optimize

Page 26: An Introduction To Agile Development

August 14-15 2006

Test-Driven DevelopmentUnit tests are:

Small

Self-contained

Fast

Code doesn't have to be written with the future in mind.

Instead, we can change when/if the time comes. Huge win!

Never refactor for its own sake; always because we want to do something.

Page 27: An Introduction To Agile Development

August 14-15 2006

Test-Driven DevelopmentGet a unit-test framework (UnitTest++)

Running on the Xbox 360 is a bit more challenging, but do-able.

Need to be able to run a program, capture its output, and return code.

Xbrun should really do it.

Page 28: An Introduction To Agile Development

August 14-15 2006

Continuous IntegrationMany small, very frequent check-ins (maybe every 3-5 minutes)

As soon as any code is checked-in, build is triggered

People are notified right away of any failed builds

Unit tests are very useful for keeping things stable

We use CruiseControl.Net—it's great!

Page 29: An Introduction To Agile Development

August 14-15 2006

Page 30: An Introduction To Agile Development

August 14-15 2006

Continuous IntegrationHouse rule: Nobody leaves without making sure his last check-in resulted in a successful build.

The faster your builds, the better; so, pay attention to logical and physical dependencies (feedback time for normal checkins is around 10-20 seconds).

Much slower for Unreal projects.

Page 31: An Introduction To Agile Development

August 14-15 2006

Collective Code OwnershipReally means collective code ownership, not "no code ownership".

Anybody is free to modify any code as long as it's because they're working on it.

Really relies on unit tests and shared knowledge.

Page 32: An Introduction To Agile Development

August 14-15 2006

Sustainable PaceWhat's one of the big problems in the industry? Crunch time.

Work as hard as you can, thinking of the long term. That means about 40-hour work weeks. Intense 40 hours, though!

People come back refreshed and ready to do work.

They also have the time to learn things outside of work and feed that knowledge back into work.

Page 33: An Introduction To Agile Development

August 14-15 2006

Automated TestsUnit tests from TDD are huge, but only part of all the automated tests.

Functional tests: Test whole program or parts of it.

Fully automated. Run them on the build server at least once a day. (We have them running every couple of hours.)

Run them on your target platforms as well.

Great for testing systems involving multiple threads

Page 34: An Introduction To Agile Development

August 14-15 2006

PART 4: Lessons Learned

Page 35: An Introduction To Agile Development

August 14-15 2006

How Is It Working?We're discovering the important stuff first

Much-improved code quality

More robust builds

People are really happy

Page 36: An Introduction To Agile Development

August 14-15 2006

What Can Be Improved?Team composition

How many resources are shared

How to fully integrate people with different ways of working and thinking (programmers, artists, designers)

Page 37: An Introduction To Agile Development

August 14-15 2006

What Can Be Improved?Team self-organization

Big goal of scrum. We’ve made lot of progress, but it can be taken a step beyond.

Team needs to realize they're empowered to do whatever it takes to get their tasks done.

Sometimes some leadership will still be needed

Page 38: An Introduction To Agile Development

August 14-15 2006

What Can be Improved?Non-productive time

Scrum recommends 1 day for reviews and 1 day for planning.

That's 2 days out of 10 “wasted”; even worse with multiple teams.

We recently changed things to minimize down time, and we do reviews and planning on the same day.

Page 39: An Introduction To Agile Development

August 14-15 2006

Adopting Agile Development

We have customized a lot of the standard scrum rules to fit game development.

However, it's best to start with the default rules, try them in earnest, and go from there.

Tweaking too many rules from the start can lead to wasted time and failed attempts.

XP was easy to adopt without any major changes.

Page 40: An Introduction To Agile Development

August 14-15 2006

Resources

Games from Withinhttp://www.gamesfromwithin.com

Agile Game Development http://www.agilegamedevelopment.com

Questions?

Page 41: An Introduction To Agile Development

© 2006 © 2006 MicrosoftMicrosoft Corporation. All rights reserved. Corporation. All rights reserved.This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

DirectX Developer CenterDirectX Developer Centerhttp://msdn.microsoft.com/directx

Game Development MSDN ForumsGame Development MSDN Forumshttp://forums.microsoft.com/msdn

Xbox 360 CentralXbox 360 Centralhttp://xds.xbox.com/

XNA Web siteXNA Web sitehttp://www.microsoft.com/xna