#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!