Slides from a workshop run at the Agile India 2012 conference, on Feb 17, 2012. Workshop allowed participants to try out different ways of slicing complex features into user stories, with the objective of evolving features incrementally while reducing delivery risk and minimizing waste. Video of the talk is here: http://www.youtube.com/watch?v=jYChxFZPNNQ
1. The Art of Slicing Features
into Playable Stories
Agile India 2012, Bangalore
Feb 17, 2012
Tarang Baxi
2. Why bother?
Evolving,
incremental
value
Faster, more
Minimized
meaningful
waste
feedback
Stories
sliced right
Support for
Reduced
continuous
delivery risk
delivery
3. Case Study 1 – Workflow
! Client and Project: Native iPad app for a major international airline
! Feature: Check-in for a flight
! Context:
! iPad app intended to support users in 12 countries in Release 1
! APIs shared with website and other mobile apps manage most
of the business logic
Initiate Check-in
Provide Choose seat /
check-in / baggage
traveler info upgrade
choose flight (free/paid)
Pay for
Choose paid Get boarding
upgrades /
extras pass
extras
4. Mobile check-in - feature outline
! Initiate check-in via
! Click-through on check-in notification
! Search by PNR + Last Name
! Login to account + view trip dashboard (both already built)
! Input traveler info including:
! Govt. mandated security info for travel from, to or over the US
! Passport details for international travel
! Special display & input variations for travel from or into Germany,
Japan and Brazil (and maybe a few more countries)
! Choose/change seat, incl. class upgrade, if available
! Check-in baggage – paid if count exceeds free allowance for sector
! Choose paid services for flight, including priority boarding, insurance,
meals, wifi, etc. – availability, price vary by sector & traveler loyalty status
! Pay for upgrades, bags, extras using a credit or debit card
! Get mobile boarding passes on device or send to an email address
5. Suggested story breakdown (partial)
Check-in for flight after
searching for trip Check-in for flight from
(logged-in user, single passenger,
check-in notification
default choices, boarding pass (logged-in user, default choices)
via email)
Check-in multiple Check-in for flight and get a
passengers for flight mobile boarding pass
(logged-in user, default choices,
Check-in for a US domestic (logged-in user, default choices)
boarding passes via email)
flight, from My Trips
(logged-in user, single passenger,
default choices, boarding pass
via email)
Pay for bags during check-in Purchase a paid extra while
(pay using stored card) checking-in
Select seat during check-in
…
(single passenger, no upgrades)
6. Case Study 2 – Data Analytics
! Client and Project: Government contracting data analytics web app
for an Indian NGO
! Feature: An Excel ‘pivot-table’ like feature to allow users to create
custom tabular views of contracts data
! Context:
! Data covers all contracts issued by the Indian central
government and its ministries and departments in the last 5
years
! 5 million transaction records currently expected to grow by
15-20% every year
! Current DB & architecture not expected to support this feature
! Result table load times is a big concern for the customer
9. Case Study 3 – Data Visualization
! Client and Project: Interactive visualization web app for public data
for a Data Services Provider
! Feature: An interactive tool to visually compare Indian States and
Union Territories
! Context:
! State data compiled from 3 different data feeds –
Demographic, Economic and Industrial
! Graphing framework “Fly Charts” already in place – team
expected to use this for generating visuals
• Already in use, elsewhere on the site for simple pie-charts
! Big emphasis on look and feel of the visuals
11. Revisiting - Why bother?
Evolving,
incremental
value
Faster, more
Minimized
meaningful
waste
feedback
Stories
sliced right
Support for
Reduced
continuous
delivery risk
delivery
12. Story slicing tips
DOs
! Strip away options & alternate paths from the feature until you get
to the simplest possible usage scenario - that’s your first story
! Now layer in variables / alternate paths based on:
! End-user or business value
! Technical risk involved
! Check whether each story allows demonstration of real user flows
DON’Ts
! Don’t slice by pages, screens or other UI elements
! Don’t slice by architectural layers
! Don’t create stories that can’t truly be tested without additional
stories being played