8. Agile Manifesto
Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan
That is, while there is value in the items on the right, we
value the items on the left more.
http://agilemanifesto.org
9. Iterations
Sprint 4
Change Sprint 3
Sprint 2
Less time and less change
Less area = Less hazard
Sprint 1
Time
10. Iterations
• Less hazard per deploy
• “Production” deployments are routine
• Sprints are a series of micro-deadlines
11. Iterations
• Less hazard per deploy
• “Production” deployments are routine
• Sprints are a series of micro-deadlines
still has the word “dead”
12. What if...
Change
Release features individually
as soon as they are ready.
Lowest level of hazard
Time
13. Continuous Delivery
• Release features as soon as they are ready
• No prescribed deadlines
• Remove stigma from releasing to
production (because everyone has to
release often)
14. What does “Ready” Mean?
• Does it pass CI?
• Approved by Customer?
• SQA?
• Smoke Testing?
15. What does “Ready” Mean?
Depends on the team’s risk threshold...
Green CI Approval SQA Smoke Test
Faster Slower
Risker Safer
27. Kanban Metrics?
• No time-boxed development
• No estimation
• Velocity is replaced by cycle time (e.g. takes
2 days to deploy a card)
• Throughput is development efficiency (e.g.
we are moving 5 cards a week)
28. Little’s Law
For a queueing system in steady state, the average
length of the queue is equivalent to the average
arrival rate multiplied by the average waiting time.
L = λW
- or -
WIP (L)
Cycle Time (W) =
Throughput (λ)
29. Decrease Cycle Time
• Less cycle time means more features out
faster!
• One way is to increase throughput
• Another is to decrease WIP
30. Decrease Cycle Time
• Less cycle time means more features out
faster!
• One way is to increase throughput
• Another is to decrease WIP
• We aim for 1.5-ish WIP cards per pair
• http://www.limitedwipsociety.org
35. Code Management
• Twelve-Factor - One codebase (multiple is
a system and not called an “app”)
• (Environmental) Feature Toggles
• Topic Branches
36. Continuous Integration
• One integrated branch of code (to test and
deploy)
• Consensus and experience for feature
toggles over complicated git strategies
• http://www.infoq.com/interviews/jez-
humble-martin-fowler-cd
37. Feature Toggle Challenges
• Different toggle states per bin
• “Pure”, unobtrusive feature toggles
• Database migrations?
38. Env. Feature Toggles
• Part of the config (twelve factor)
• Should be expressed as env vars
code_time.finally!
39. Dev/Prod Parity
• Minimize Difference
• Use the same stack locally that is used in
development.
• Persistence / backend services -- databases,
queues, caching servers
• Can be a challenge (e.g. Amazon AWS)