Upgrade to Pro — share decks privately, control downloads, hide ads and more …

return getKanban()

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.

return getKanban()

A lighthearted look at the lessons learned from writing a getKanban simulator. Presented at London Lean Kanban Days 2019.

Avatar for Dave Grant

Dave Grant

March 18, 2019
Tweet

More Decks by Dave Grant

Other Decks in Programming

Transcript

  1. www.devopsgroup.com | Phone: 0800 368 7378 | e-mail: [email protected] |

    2018 © DevOpsGroup DOGPublic return getKanban() What cheating at a board game taught me about Kanban
  2. 5 @DevOpsGroup © DevOpsGroup DOGPublic The number one question is…

    What is the highest score you’ve ever seen?
  3. 12 @DevOpsGroup © DevOpsGroup DOGPublic Sam Savage, The Flaw of

    Averages The Flaw of Averages Plans based on average assumptions are wrong, on average!
  4. 16 @DevOpsGroup © DevOpsGroup DOGPublic n=10 0 1 2 3

    4400 4800 5200 5600 6000 6400 6800 7200 7600 8000 8400 8800 9200 9600 10000 10400 10800 11200 11600 12000 12400 12800 13200 13600 14000 14400 14800 15200 15600 16000 16400 16800 17200 17600 18000 18400 18800 19200 19600 20000 20400 20800 21200 Frequency Total Revenue ($)
  5. 17 @DevOpsGroup © DevOpsGroup DOGPublic n=100 0 1 2 3

    4 5 6 7 4400 4800 5200 5600 6000 6400 6800 7200 7600 8000 8400 8800 9200 9600 10000 10400 10800 11200 11600 12000 12400 12800 13200 13600 14000 14400 14800 15200 15600 16000 16400 16800 17200 17600 18000 18400 18800 19200 19600 20000 20400 20800 21200 Frequency Total Revenue ($)
  6. 18 @DevOpsGroup © DevOpsGroup DOGPublic n=1,000 0 1 2 3

    4 4400 4800 5200 5600 6000 6400 6800 7200 7600 8000 8400 8800 9200 9600 10000 10400 10800 11200 11600 12000 12400 12800 13200 13600 14000 14400 14800 15200 15600 16000 16400 16800 17200 17600 18000 18400 18800 19200 19600 20000 20400 20800 21200 Frequency (0s) Total Revenue ($)
  7. 19 @DevOpsGroup © DevOpsGroup DOGPublic n=10,000 0 1 2 3

    4400 4800 5200 5600 6000 6400 6800 7200 7600 8000 8400 8800 9200 9600 10000 10400 10800 11200 11600 12000 12400 12800 13200 13600 14000 14400 14800 15200 15600 16000 16400 16800 17200 17600 18000 18400 18800 19200 19600 20000 20400 20800 21200 Frequency (00s) Total Revenue ($)
  8. 20 @DevOpsGroup © DevOpsGroup DOGPublic n=100,000 0 1 2 3

    4400 4800 5200 5600 6000 6400 6800 7200 7600 8000 8400 8800 9200 9600 10000 10400 10800 11200 11600 12000 12400 12800 13200 13600 14000 14400 14800 15200 15600 16000 16400 16800 17200 17600 18000 18400 18800 19200 19600 20000 20400 20800 21200 Frequency (000s) Total Revenue ($)
  9. 21 @DevOpsGroup © DevOpsGroup DOGPublic n=1,000,000 0 1 2 3

    4400 4800 5200 5600 6000 6400 6800 7200 7600 8000 8400 8800 9200 9600 10000 10400 10800 11200 11600 12000 12400 12800 13200 13600 14000 14400 14800 15200 15600 16000 16400 16800 17200 17600 18000 18400 18800 19200 19600 20000 20400 20800 21200 Frequency (0000s) Total Revenue ($)
  10. 22 @DevOpsGroup © DevOpsGroup DOGPublic Sample Size Accuracy Speed 10

    ! " 100 # $ 1,000 % & 10,000 ' ( 100,000 ) * 1,000,000 + ,
  11. 23 @DevOpsGroup © DevOpsGroup DOGPublic Sample Size Accuracy Speed 10

    ! " 100 # $ 1,000 % & 10,000 ' ( 100,000 ) * 1,000,000 + ,
  12. 32 @DevOpsGroup © DevOpsGroup DOGPublic Avoid expediting where unless outcomes

    are (highly) probable and set WIP as low as possible
  13. 41 @DevOpsGroup © DevOpsGroup DOGPublic Workers should stick to their

    own speciality but be prepared to generalise (T- or π-shaped)
  14. 47 @DevOpsGroup © DevOpsGroup DOGPublic Exception: if you’re not doing

    automated deployment, there’s more wiggle room
  15. 59 @DevOpsGroup © DevOpsGroup DOGPublic Head to Head Naïve •

    Prioritise Fixed Date, then Value • No WIP Change • Limit Dice to Cards to 3 • Glen’s Feature: Expedite E2 • Ted Training Champion (So Far) • Prioritise using WSJF • Drop Selected WIP on D11 to 2 • Limit Dice to Cards to 2 • Glen’s Feature: Ignore E2 • No Training for Ted !
  16. 60 @DevOpsGroup © DevOpsGroup DOGPublic Naïve vs Champion 0 50

    100 150 200 250 300 350 400 4700 5100 5500 5900 6300 6700 7100 7500 7900 8300 8700 9100 9500 9900 10300 10700 11100 11500 11900 12300 12700 13100 13500 13900 14300 14700 15100 15500 15900 16300 16700 17100 17500 17900 18300 18700 19100 19500 19900 20300 Frequency Revenue ($) Champion Naïve Mean $10,900 Mean $16,100
  17. 62 @DevOpsGroup © DevOpsGroup DOGPublic Start with What You Do

    Now and Evolve Designing policies up front is hard work and usually doesn’t work very well: start simple and improve through evolutionary change.
  18. 63 @DevOpsGroup © DevOpsGroup DOGPublic Those Nearest the Problem Should

    Manage Flow Attempting to manage flow statically in the face of complexity yields poor results: allow those nearest the work to manage flow dynamically
  19. 64 @DevOpsGroup © DevOpsGroup DOGPublic Visualisation Makes Life Easier Reading

    program logs is a poor substitute for good visualisation: displaying state made things much easier to find improvements.
  20. 65 @DevOpsGroup © DevOpsGroup DOGPublic Best Results Come From Self-Organising

    Teams It would be a lot easier if the dice could self-organise ! !
  21. 67 @DevOpsGroup © DevOpsGroup DOGPublic What Happens When You Load

    the Dice? •Total revenue of $28,135 ! •You run out of tickets on Day 21 " •Sometimes you get a lead time of zero days #