Improving your Agile Process

78
Improving your Agile Process

description

Slides from my lightning talk at DevDays DC on how to improve your agile process by gathering small amounts of data and using it to make decisions.

Transcript of Improving your Agile Process

Page 1: Improving your Agile Process

Improving your Agile Process

Page 2: Improving your Agile Process

First...who are we?

Page 3: Improving your Agile Process
Page 4: Improving your Agile Process

We reduce home energy use

Page 5: Improving your Agile Process

We reduce home energy useby showing people how much they use

Page 6: Improving your Agile Process

We reduce home energy useby showing people how much they useand then they actually use less!

Page 7: Improving your Agile Process
Page 8: Improving your Agile Process
Page 9: Improving your Agile Process

Agile means:

Page 10: Improving your Agile Process

Agile means:short iterations

Page 11: Improving your Agile Process

Agile means:short iterations

a metric sh*t-ton of practices chosen from a salad bar

Page 12: Improving your Agile Process

TDD, Pair Programming, Scrum, Kanban Cards, BDD, Continuous Integration, MDD,

Sprints, Stand-ups, Continuous Deployment, The Planning Game, User

Stories, Planning Poker, Sustainable Pace, Collective Code Ownership...

Page 13: Improving your Agile Process

Adopting agile?

Page 14: Improving your Agile Process

Adopting agile?Which practices?

Page 15: Improving your Agile Process

Already agile-ish?

Page 16: Improving your Agile Process

Already agile-ish?Which practices will help us and

why?

Page 17: Improving your Agile Process

Pick what feels good?

Page 18: Improving your Agile Process

Pick what feels good? Study your process and target

problem areas.

Page 19: Improving your Agile Process

Scientific Method!

Page 20: Improving your Agile Process

1. Gather Data 2. Form Hypothesis 3. Perform Experiment 4. Analyze Results

Page 21: Improving your Agile Process

1. Gather Data

Page 22: Improving your Agile Process

Quantify:good things (to increase)

Page 23: Improving your Agile Process

Quantify:good things (to increase)bad things (to decrease)

Page 24: Improving your Agile Process

The Big Bad: Bugs

Page 25: Improving your Agile Process

The Big Bad: Bugs(you are using a bug tracker, right?)

Page 26: Improving your Agile Process

“We wrote less bugs than the previous iteration. We

rule!” (Right?)

Page 27: Improving your Agile Process

V2.2 V2.3

# of Bugs 25 23

Page 28: Improving your Agile Process

V2.2 V2.3

# of Bugs 25 23

Team Size 8 5

Flu took out half the team!

Wait...What?

Page 29: Improving your Agile Process

Raw measurements must be put in context

Page 30: Improving your Agile Process

What is the “size” of an iteration?

Page 31: Improving your Agile Process

LOC?

Page 32: Improving your Agile Process

LOC?Doesn’t fit with agile

Hard to measure

Page 33: Improving your Agile Process

Hours/Days?

Page 34: Improving your Agile Process

Hours/Days?Fixed iterations

Hard to measure

Page 35: Improving your Agile Process

We use “Story Points”

Page 36: Improving your Agile Process

We use “Story Points”1, 2, 4, 8 per user story

Page 37: Improving your Agile Process

“Story Points” could be anything that:

Page 38: Improving your Agile Process

“Story Points” could be anything that:

changes w/ amount of work

Page 39: Improving your Agile Process

“Story Points” could be anything that:

changes w/ amount of workdetermined consistently

Page 40: Improving your Agile Process

“Story Points” could be anything that:

changes w/ amount of workdetermined consistently

easy to capture

Page 41: Improving your Agile Process

Bugs ÷ Size ==Defect Density

Page 42: Improving your Agile Process

V2.2 V2.3

Bugs 25 23

Story Points 14 10

Density 1.79 2.3

Page 43: Improving your Agile Process

Simple

Page 44: Improving your Agile Process

SimplePaints Broad Strokes:

Increase == Bad

Page 45: Improving your Agile Process

SimplePaints Broad Strokes:

Increase == BadAlmost enough to draw

conclusions

Page 46: Improving your Agile Process

With a small amount of additional meta-data...

Page 47: Improving your Agile Process

With a small amount of additional meta-data...

...you can gain incredible insights

Page 48: Improving your Agile Process

•Severity•Priority•Where Introduced: ‣bad requirements

‣bad programming

‣configuration/deployment

Page 49: Improving your Agile Process

1.0

1.3

1.6

1.9

2.2

V2.3 V2.4 V2.5

Defect Density: unclear requirementsDefect Density: Programming Errors

Page 50: Improving your Agile Process

1.000

1.375

1.750

2.125

2.500

V2.3 V2.4 V2.5

Defect Density - all types

Page 51: Improving your Agile Process

1.000

1.375

1.750

2.125

2.500

V2.3 V2.4 V2.5

Defect Density - all typesDefect Density - Blockers

Page 52: Improving your Agile Process

2. Form Hypothesis

Page 53: Improving your Agile Process

Metrics give us insightto focus on problem areas

Page 54: Improving your Agile Process

Form a hypothesis about problem areas and potential

solutions

Page 55: Improving your Agile Process

Agile practices are a goldmine

Page 56: Improving your Agile Process

Agile practices are a goldmine...if used sensibly in the context

of your process

Page 57: Improving your Agile Process

Example:“Increasing test coverage will

reduce our defect density”

Page 58: Improving your Agile Process

Example:“Pair Programming will reduce

‘bad programmer’ bugs”

Page 59: Improving your Agile Process

Example:“BDD will help clarify

requirements so we implement the right thing”

Page 60: Improving your Agile Process

3. Perform Experiment

Page 61: Improving your Agile Process

On the next iteration, test your hypothesis

Page 62: Improving your Agile Process

Start slowly;implement one change, chosen

for maximum impact

Page 63: Improving your Agile Process

4. Analyze Results

Page 64: Improving your Agile Process

The next iteration’s metrics should prove/disprove your

hypothesis

Page 65: Improving your Agile Process

Repeat until profit!

Page 66: Improving your Agile Process

This improvement method isn’t perfect

Page 67: Improving your Agile Process

This improvement method isn’t perfect

but it’s a GREAT start

Page 68: Improving your Agile Process

How has this helped OPOWER?

Page 69: Improving your Agile Process
Page 70: Improving your Agile Process

Iteration 1Half of the user stories not

being tracked :(

Page 71: Improving your Agile Process

Iteration 2Parts of the team using different

scale for story points :(

Page 72: Improving your Agile Process

Iteration 3Data looked good, baseline

established.

Page 73: Improving your Agile Process

Iteration 4Lots of deploy/config errorsOther numbers same/better

Page 74: Improving your Agile Process

Iteration 5Automated deployment »

deploy errors down.But: Defect Density was up

Page 75: Improving your Agile Process

Iteration 6Lowered velocity

Set up test coverage tracking(final results not in yet!)

Page 76: Improving your Agile Process

Scientific Method

Page 77: Improving your Agile Process

MeasureHypothesizeExperiment

Analyze