Spiking Your Way to Improved Agile Development - Anatoli Kazatchkov

Post on 25-May-2015

6,990 views 0 download

Tags:

description

New feature development in agile should almost always start with a spike. Spikes help to define feature scope, uncover technical unknowns, and provide accurate estimates. In this session we will cover how to introduce spikes into your development cycles and show how Atlassian defines spike goals, focuses spike efforts, and makes feature development more effective.

transcript

#atlassian

Anatol i Kazatchkov • Dev Manager • Atlassian • @tolks

Spiking your way to improved Agile development

• Anatoli Kazatchkov• Confluence Dev Manager

• Software Developer for 12 years• Shipped 20+ major, 50+ minor

releases of Confluence since 2007

• … but still learning how to write and ship better software

About Me

What is Agile?

Continues integration Pair programming

User stories

Story point estimationDevelopment Backlog

Test-driven development

Timeboxing

ScrumRefactoring

Planning poker

Sprints

Iterative development

Velocity tracking

Domain-driven design

Cross-functional teams

Our Highest Priority Is To Satisfy The Customer Through Early And Continuous Delivery Of Valuable Software.T h e F i r s t P r i n c i p l e o f T h e A g i l e M a n i f e s t o

Top 5

Spikes Short Sprints

Demos Dogfooding Shipping

Top 5

Spikes

Why?

B e n e f i t s o f a S p i k e

Get Better Estimates

B e n e f i t s o f a S p i k e

Clear up Requirements

B e n e f i t s o f a S p i k e

Eliminate Unknowns

B e n e f i t s o f a S p i k e

Define Scope

B e n e f i t s o f a S p i k e

Validate Chosen Technical Approach

This Should Work… E v e r y S i n g l e E n g i n e e r

”“

B e n e f i t s o f a S p i k e

Validate Chosen Technical Approach

B e n e f i t s o f a S p i k e

Split Work into Tasks

Key takeaways: #atlassian

!

• Better estimates• Refined requirements• Eliminated unknowns• Validated technical approach• Better organised and planned tasks

How?

H o w To R u n a S p i k e

What tasks appropriate for spikes?• Almost anything• Technically difficult tasks• Integration tasks with a lot of

dependencies• Time critical tasks where accurate

estimates required

H o w To R u n a S p i k e

Indicators that spikes will be useful

H o w To R u n a S p i k e

Indicators that spikes will be useful• Spec has a lot of questions

H o w To R u n a S p i k e

Indicators that spikes will be useful• Spec has a lot of questions• Working with new libraries, new code,

unfamiliar part

H o w To R u n a S p i k e

Indicators that spikes will be useful• Spec has a lot of questions• Working with new libraries, new code,

unfamiliar part• Implementation uncertainties

H o w To R u n a S p i k e

Indicators that spikes will be useful• Spec has a lot of questions• Working with new libraries, new code,

unfamiliar part• Implementation uncertainties • New team• Team cannot agree on approach/

estimation during planning

H o w To R u n a S p i k e

Establish Spike Goals

H o w To R u n a S p i k e

Establish Spike Goals

H o w To R u n a S p i k e

Schedule Spike as Task

H o w To R u n a S p i k e

Timebox Spikes

H o w To R u n a S p i k e

Plan Forward: stay 1 sprint ahead

H o w To R u n a S p i k e

Unplanned Spikes

How to run an effective spike:• Establish spike goals• Record spike goals• Schedule spikes as tasks in sprints• Timebox spikes

Start Spiking

S p i k e s i n Yo u r Te a m

You Do it Already

S p i k e s i n Yo u r Te a m

You Do it Already• When creating a tech requirements

document

S p i k e s i n Yo u r Te a m

You Do it Already• When creating a tech requirements

document• When architects designs system

interactions

S p i k e s i n Yo u r Te a m

You Do it Already• When creating a tech requirements

document• When architects designs system

interactions• As a part of working on a big task

S p i k e s i n Yo u r Te a m

Dedicate Time

S p i k e s i n Yo u r Te a m

Plan and Schedule Spikes

S p i k e s i n Yo u r Te a m

Avoid ‘Production’ Code

S p i k e s i n Yo u r Te a m

Avoid ‘Production’ Code

S p i k e s i n Yo u r Te a m

Specify Deliverables

S p i k e s i n Yo u r Te a m

Specify Deliverables

S p i k e s i n Yo u r Te a m

Demo Results of the Spikes

S p i k e s i n Yo u r Te a m

Throw Spike Code Away

S p i k e s i n Yo u r Te a m

Throw Spike Code Away

S p i k e s i n Yo u r Te a m

Adjust

Anatol i Kazatchkov • Dev Manager • Atlassian • @tolks

Thank you!