Top Banner
24.11.2009 1 © 20032009 Artem Marchenko and Mountain Goat Software ® Agile Planning Artem Marchenko AgilDays.ru, December 9, 2009 Artem Marchenko - background © 20032009 Artem Marchenko and Mountain Goat Software ®
17
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Agile Planning

24.11.2009

1

© 2003–2009 Artem Marchenko and Mountain Goat Software®

Agile Planning

Artem Marchenko

AgilDays.ru, December 9, 2009

Artem Marchenko - background

© 2003–2009 Artem Marchenko and Mountain Goat Software®

Page 2: Agile Planning

24.11.2009

2

© 2003–2009 Artem Marchenko and Mountain Goat Software®

What’s a good plan?

• A good plan is one that supports reliable decision-making

• Will go from

• We’ll be done in the third quarter

• We’ll be done in August

• We’ll be done August 18th

© 2003–2009 Artem Marchenko and Mountain Goat Software®

What makes planning agile?

Is more focused on

planning than the plan

Encourages change

Results in plans that

are easily changed

Is spread throughout

the project

Page 3: Agile Planning

24.11.2009

3

© 2003–2009 Artem Marchenko and Mountain Goat Software®

Starting assumptions

• We have a product backlog (prioritized feature

list)

• Items on the product backlog (user stories is my

preference) have been estimated in story points

or ideal days

• We have a team with a known velocity

• We’ll relax this assumption shortly

© 2003–2009 Artem Marchenko and Mountain Goat Software®

Sprint 2

Sprints 3-4

An example with velocity=14

Sprint 1Story A

5

Story E

1

Story D

5

Story G

1

Story I

5

Story J

8

Story H

13

Story C

3

Story B

8

Story F

5

Page 4: Agile Planning

24.11.2009

4

© 2003–2009 Artem Marchenko and Mountain Goat Software®

Release and sprint planning

Release Plan

Sprint

1

Sprint

2

Sprint

3

Sprints 4–7

8 hoursTask A

16 hoursTask B

5 hoursTask C

8 hoursTask D

© 2003–2009 Artem Marchenko and Mountain Goat Software®

•Sprint planning

•Estimating velocity

•Release planning

•Contracting on fixed-date

& fixed-scope projects

Agenda

Page 5: Agile Planning

24.11.2009

5

© 2003–2009 Artem Marchenko and Mountain Goat Software®

© 2003–2009 Artem Marchenko and Mountain Goat Software®

Two approaches

• Velocity-driven sprint planning

• Commitment-driven sprint planning

Page 6: Agile Planning

24.11.2009

6

© 2003–2009 Artem Marchenko and Mountain Goat Software®

Velocity-driven sprint planning

• “We finished 15 story points last time, let’s plan

on 15 story points this time.”

• Very unreliable in what will be accomplished

during an iteration

• Velocity is mostly useful over the long term

© 2003–2009 Artem Marchenko and Mountain Goat Software®

Commitment-driven sprint planning

• Discuss the highest priority item on the product backlog

• Decompose it into tasks

• Estimate each task

• Ask ourselves, “Can we commit to this?”

• If yes, see if we can add another backlog item

• If not, remove this item but see if we can add another smaller one. Possibly by splitting the original story

Page 7: Agile Planning

24.11.2009

7

© 2003–2009 Artem Marchenko and Mountain Goat Software®

It looks something like this

• Code the abc class (8 hours)

• Code the user interface (4)

• Write test fixtures (4)

• Code the xyz class (6)

• Update performance tests (4)

As a user, I want ...

2

• Prototype the UI (8 hours)

• Demo UI to 3 outside users (3)

• Code new UI (12)

• Update documentation (3)

As a user, I want ...

3

Team can commit, so they continue...

26

26

© 2003–2009 Artem Marchenko and Mountain Goat Software®

time

1

2

time

Page 8: Agile Planning

24.11.2009

8

© 2003–2009 Artem Marchenko and Mountain Goat Software®

© 2003–2009 Artem Marchenko and Mountain Goat Software®

How to estimate velocity

Use historical values

Don’t, until you’ve run

a sprint or two

Forecast it

1

2

3

Page 9: Agile Planning

24.11.2009

9

© 2003–2009 Artem Marchenko and Mountain Goat Software®

Forecasting velocity

• Just like commitment-driven sprint planning

• Estimate available hours for the sprint

• Repeat until full:

• Pick a story, break into tasks, estimate each task

© 2003–2009 Artem Marchenko and Mountain Goat Software®

An example

• Estimating available hours

Person Hours per Day Hours per Sprint

Sergey 4-6 40-60

Kimmo 5-7 50-70

Jarmo 2-3 20-30

Total 110-160

Page 10: Agile Planning

24.11.2009

10

© 2003–2009 Artem Marchenko and Mountain Goat Software®

... 20

... 50

8

6

12

Code the UI

Write test fixture

Code middle tier

Write tests 5

An example

As a frequent flyer, I

want to...3

As a user, I want to... 5

As a vacation planner,

I want to...5

As a frequent flyer, I

want to...2

Code the ... 12

Do the... 8

Document the... 8

Test the... 8

Analyze the... 4

Document ... 8

48 31

50

20

At 110-160 available hours per

sprint, what is the team’s velocity?

© 2003–2009 Artem Marchenko and Mountain Goat Software®

Put a range around it

• You’re unlikely to have precisely forecasted the

exact velocity the team will average

• So, put a range around your velocity estimate:

Known team, domain,

technology

+5%

−10%

Unknown team,

domain, technology

+25%

−50%

+10%

−25%

†Numbers based on PMI advice on progressive

accuracy of estimates.

Page 11: Agile Planning

24.11.2009

11

© 2003–2009 Artem Marchenko and Mountain Goat Software®

Expressing velocity as a range

200 ÷ 20 = 10

Estimated velocity

= 18

20

14

1.10

.75 200 ÷ 14 = 15

“Right now, before we start this project,

our best estimate is that it will take

between 10 and 15 sprints.”

Adjustments

from prior page

or intuition

Total of

estimates on

product

backlog

© 2003–2009 Artem Marchenko and Mountain Goat Software®

Page 12: Agile Planning

24.11.2009

12

© 2003–2009 Artem Marchenko and Mountain Goat Software®

Create a range from historical

data

Sprints

Mean (Worst 3) = 28

Mean (Last 8) = 33

Mean (Best 3) = 37

© 2003–2009 Artem Marchenko and Mountain Goat Software®

Predicting where we finish

At our long-term average we’ll finish here (5×33)

At our slowest velocity we’ll finish here (5×28)

At our best velocity we’ll finish here (5×37)

Page 13: Agile Planning

24.11.2009

13

© 2003–2009 Artem Marchenko and Mountain Goat Software®

Planning on contracted projects

Fixed-date projectsFixed-scope projects

• There are times you need to do this

• So let’s look at some good techniques

• Better though is try for a collaborative

relationship with your customer

• “You’ll have this team for each sprint, can

direct them at the start of each, and stop

when you have enough”

A caveat

© 2003–2009 Artem Marchenko and Mountain Goat Software®

Fixed-date planning

1. Determine how many sprints you have

2. Estimate velocity as a range

3. Multiply low velocity × number of sprints

• Count off that many points

• These are “Will Have” items

4. Multiply high velocity × number of sprints

• Count off that many more points

• These are “Might Have items”

How much can I get by <date>?

Page 14: Agile Planning

24.11.2009

14

© 2003–2009 Artem Marchenko and Mountain Goat Software®

Fixed-date planning: an example

Desired

release date30 June

Today’s Date 1 January

Number of

sprints6 (monthly)

Low

velocity15

High

velocity20

6×15

6×20

Will have

Might

have

Won’t have

© 2003–2009 Artem Marchenko and Mountain Goat Software®

Fixed-date contracting

6×15

6×20

Will have

Might

have

Won’t have

•You won’t likely win the contract

•But you’ll probably make money if

you do

If you write a contract

for just the will haves:

•You will likely win the contract

•But probably not make money on it

If you write a contract that

includes the might haves:

It’s a risk issue

Where do you want to be?

Page 15: Agile Planning

24.11.2009

15

© 2003–2009 Artem Marchenko and Mountain Goat Software®

Fixed-scope planning

1. Sum all the backlog items the customer needs

2. Estimate velocity as a range

3. Divide total story points by high velocity

• This is the shortest number of sprints it could

take

4. Divide total story points by low velocity

• This is the “most” sprints it could take

When will all of this be done?

© 2003–2009 Artem Marchenko and Mountain Goat Software®

Fixed-scope planning: an example

Total story points desired 120

Low velocity 15

High velocity 20

120÷20=

120÷15=

Page 16: Agile Planning

24.11.2009

16

© 2003–2009 Artem Marchenko and Mountain Goat Software®

Fixed-scope contracting

•You’ll likely win the contract

•But may not make any money

If you write a contract

for the short duration:

•You probably won’t win the contract

•But will make money if you

If you write a contract

for the long duration:

It’s a risk issue

Where do you want to be?

© 2003–2009 Artem Marchenko and Mountain Goat Software®

Ranges

• Notice in both cases we had a range

• For a fixed date project, use a scope range:

• “By that date you’ll have all of these features and

some of these.”

• For a fixed-scope project, use a date range:

• “It will take us between 5 and 8 sprints to deliver all

of those features.”

Page 17: Agile Planning

24.11.2009

17

© 2003–2009 Artem Marchenko and Mountain Goat Software®

Artem Marchenko contact info

[email protected]

http://AgileSoftwareDevelopment.com

http://twitter.com/AgileArtem