The Aggregation of Marginal Gains in Software Engineering

36
Improving performance through the aggregation of marginal gains 13th August 2015

Transcript of The Aggregation of Marginal Gains in Software Engineering

Page 1: The Aggregation of Marginal Gains in Software Engineering

Improving performancethrough the

aggregation of marginal gains13th August 2015

Page 2: The Aggregation of Marginal Gains in Software Engineering

Agenda

• What does `the aggregation of marginal gains` mean?• Could this improve the performance of our software

engineering team?

Page 3: The Aggregation of Marginal Gains in Software Engineering

Sir Dave BrailsfordEx-Performance Director, British Cycling

General Manager, Team Sky

By utilising marginal gains, these teams saw considerable success..

Page 4: The Aggregation of Marginal Gains in Software Engineering

British CyclingOlympic Medal Haul 2000 - 2012

Page 5: The Aggregation of Marginal Gains in Software Engineering

Team SkyTour de France British Winners

2012 2013 2015

Page 6: The Aggregation of Marginal Gains in Software Engineering

–Sir Dave Brailsford

“The whole principle came from the idea that if you broke down everything you could think of that goes into riding a bike, and then improved it by 1%, you will get a significant

increase when you put them all together”

Page 7: The Aggregation of Marginal Gains in Software Engineering

Sleep posture is important for an athlete

The team replaced the mattresses + pillows in every hotel room theriders stayed in

Page 8: The Aggregation of Marginal Gains in Software Engineering
Page 9: The Aggregation of Marginal Gains in Software Engineering

We are not a professional cycling team.

Page 10: The Aggregation of Marginal Gains in Software Engineering

We are a team. We have goals.

Page 11: The Aggregation of Marginal Gains in Software Engineering

requirements

code

test cases

Product Owner

User

Page 12: The Aggregation of Marginal Gains in Software Engineering

Release early, release often…We want the lightbulb (the Product Owner’s feature) to get round our

‘race track’ in the shortest possible time, but not at any cost. We want to:

1. Get a functioning lightbulb round the track (scope)2. In the shortest time possible (velocity)3. Without sacrificing the time for subsequent lightbulbs to get round

the track (quality)

Page 13: The Aggregation of Marginal Gains in Software Engineering

What could our marginal gains look like?

Page 14: The Aggregation of Marginal Gains in Software Engineering

requirements

code

test cases

Product Owner

User

Page 15: The Aggregation of Marginal Gains in Software Engineering

What goes into the ‘code’ work product?

Page 16: The Aggregation of Marginal Gains in Software Engineering

We review code

Page 17: The Aggregation of Marginal Gains in Software Engineering

Not all diffs are created equal

Page 18: The Aggregation of Marginal Gains in Software Engineering

Work to a maximum number of characters per line:

Ideally <80

Definitely <132

It’s much easier to interpret diffs during a code review

Page 19: The Aggregation of Marginal Gains in Software Engineering

We debug code

Page 20: The Aggregation of Marginal Gains in Software Engineering

Commit messages vary in their usefulness

Page 21: The Aggregation of Marginal Gains in Software Engineering

Elliot Carver, Bond Villain

“The key to a great story is not who, or what, or when, but why.”

commit message

Page 22: The Aggregation of Marginal Gains in Software Engineering

We run acceptance-level automation

Page 23: The Aggregation of Marginal Gains in Software Engineering

We currently run entire cake + salvos before merge:

- this is dead time for a developer

- doesn’t expose poorly designed code to other members of the team

Page 24: The Aggregation of Marginal Gains in Software Engineering

Developers should only need to run:

- @smoketest

- relevant scenarios

Page 25: The Aggregation of Marginal Gains in Software Engineering

requirements

code

test cases

Product Owner

User

Page 26: The Aggregation of Marginal Gains in Software Engineering

What goes into our other work products?

Page 27: The Aggregation of Marginal Gains in Software Engineering

We define things

Page 28: The Aggregation of Marginal Gains in Software Engineering

We define terminology to help us implement a feature

That same terminology will be used by the next person who works on that feature

Page 29: The Aggregation of Marginal Gains in Software Engineering

Treat terminology as a deliverable

Instantly resolve ambiguity you find:

>1 term to describe the same thing

>1 thing can be described with the same term

Page 30: The Aggregation of Marginal Gains in Software Engineering

We deal with surprises

Page 31: The Aggregation of Marginal Gains in Software Engineering

Surprises normally slow us down

It’s better to move from up-next > blocked, rather than ready-for-test > blocked

Page 32: The Aggregation of Marginal Gains in Software Engineering

Developer/Tester chat before up-next -> in-progress

is there any unclear terminology here?

is this a candidate for a smoke test?

does this rely on any 3rd party code?

is there any device-specific behaviour?

is there anything here that could be difficult to automate?

Page 33: The Aggregation of Marginal Gains in Software Engineering

Can this improve the performance of our team?

Page 34: The Aggregation of Marginal Gains in Software Engineering

Your actions provide gains to other members of the team :)

You’ll experience gains because of someone else’s actions :)

However, to really understand performance we need measurements

Page 35: The Aggregation of Marginal Gains in Software Engineering

–Sir Dave Brailsford

“We're in the right mindset, we're looking for little things, collectively, all the time that's going to make us improve.”

collectively

Page 36: The Aggregation of Marginal Gains in Software Engineering

?