Slide 1

Slide 1 text

@tdpauw thinkinglabs.io @tdpauw thinkinglabs.io Continuous Delivery is more than just Tooling, It's a Mindset Thierry de Pauw, @tdpauw

Slide 2

Slide 2 text

@tdpauw thinkinglabs.io So you want to adopt Continuous Delivery. Where do you start ?

Slide 3

Slide 3 text

@tdpauw thinkinglabs.io RAKE

Slide 4

Slide 4 text

@tdpauw thinkinglabs.io Continuous Delivery is NOT just tooling. It is a mindset to adopt.

Slide 5

Slide 5 text

@tdpauw thinkinglabs.io Continuous Delivery done badly is like #FlaccidScrum.

Slide 6

Slide 6 text

@tdpauw thinkinglabs.io The goal of Continuous Delivery is to sustainably minimise the lead time to create positive business impact.

Slide 7

Slide 7 text

@tdpauw thinkinglabs.io The Principle of the 3 Ways ● Increase Speed ● Improve Stability ● Culture of Improvement

Slide 8

Slide 8 text

@tdpauw thinkinglabs.io #1 - Increase Speed Maximise the flow of the software delivery process. Development Operations Customer Business

Slide 9

Slide 9 text

@tdpauw thinkinglabs.io Repeatable and reliable process for delivering software. This means ● automate the hell out of it, ● and everything is under version control.

Slide 10

Slide 10 text

@tdpauw thinkinglabs.io Encourage collaboration.

Slide 11

Slide 11 text

@tdpauw thinkinglabs.io Create an empowered product team.

Slide 12

Slide 12 text

@tdpauw thinkinglabs.io Aim for a single piece flow.

Slide 13

Slide 13 text

@tdpauw thinkinglabs.io Bigger batches = more WIP = more inventory = more money stuck in the system

Slide 14

Slide 14 text

@tdpauw thinkinglabs.io Bigger batches = bigger risks ● Release process is more often practiced ● Finding out what went wrong is easier ● Rolling back small changes is easier ● Roll forward a new version

Slide 15

Slide 15 text

@tdpauw thinkinglabs.io Your Definition of Done is when the feature is in the hands of the users.

Slide 16

Slide 16 text

@tdpauw thinkinglabs.io Your application is always in a releasable state on mainline. Ready for release does not mean actually releasing. Software with unfinished work can still be released. Every build is a potential release candidate.

Slide 17

Slide 17 text

@tdpauw thinkinglabs.io Trunk Based Development

Slide 18

Slide 18 text

@tdpauw thinkinglabs.io Trunk Based Development ● Make changes incrementally

Slide 19

Slide 19 text

@tdpauw thinkinglabs.io Trunk Based Development ● Make changes incrementally ● Hide unfinished new functionality

Slide 20

Slide 20 text

@tdpauw thinkinglabs.io Trunk Based Development ● Make changes incrementally ● Hide unfinished new functionality ● Branch by Abstraction

Slide 21

Slide 21 text

@tdpauw thinkinglabs.io Trunk Based Development ● Make changes incrementally ● Hide unfinished new functionality ● Branch by Abstraction ● Feature Toggle

Slide 22

Slide 22 text

@tdpauw thinkinglabs.io #2 - Improve Stability Creating feedback loops at all stages of the pipeline. Development Operations Customer Business

Slide 23

Slide 23 text

@tdpauw thinkinglabs.io Whenever something fails, stop the production line.

Slide 24

Slide 24 text

@tdpauw thinkinglabs.io Build quality into the code from the start, don't test it in later. 2 kinds of inspections ● Inspection after the defect occurred ● Inspection to prevent defects

Slide 25

Slide 25 text

@tdpauw thinkinglabs.io Testing is not a phase, it is part of your development process. Everybody is responsible for the quality.

Slide 26

Slide 26 text

@tdpauw thinkinglabs.io Move away from the Test Ice Cream Cone Unit Tests Acceptance Tests End to End Tests Manual Tests

Slide 27

Slide 27 text

@tdpauw thinkinglabs.io Continuous Testing with Test Pyramid

Slide 28

Slide 28 text

@tdpauw thinkinglabs.io Continuous Delivery works because it has this crazy focus on Quality.

Slide 29

Slide 29 text

@tdpauw thinkinglabs.io #3 - Creating a Culture of Improvement Development Operations Customer Business

Slide 30

Slide 30 text

@tdpauw thinkinglabs.io "If a system is not improving, the result is not steady state. Instead, because of entropy, organisational performance declines." -- Mike Rother, Toyota Kata: Managing People for Improvement, Adaptiveness and Superior Results

Slide 31

Slide 31 text

@tdpauw thinkinglabs.io The Improvement Kata Define a vision for your Delivery Process.

Slide 32

Slide 32 text

@tdpauw thinkinglabs.io Repetition and practice leads to mastery. If it hurts, do it more often. Bring the pain forward.

Slide 33

Slide 33 text

@tdpauw thinkinglabs.io Conclusion

Slide 34

Slide 34 text

@tdpauw thinkinglabs.io Optimising for throughput and for speed gets you to lower costs and higher quality. Where in the past optimising for cost and quality got you neither.

Slide 35

Slide 35 text

@tdpauw thinkinglabs.io Continuous Delivery is not easy nor cheap !

Slide 36

Slide 36 text

@tdpauw thinkinglabs.io Version Control Test Driven Development Automated Configuration Assume - Verify Automated Infrastructure Acceptance Test Driven Development Deployment Pipeline Consumer Driven Contracts Trunk Based Development Exploratory Testing Continuous Integration Smoke Tests Evolutionary Architecture Test Data Management Database Migrations Monitoring & Alerting Canary Deployments Required Technological Changes

Slide 37

Slide 37 text

@tdpauw thinkinglabs.io Required Organisational Changes Empowered Product Teams Everyone is On-Call Cross-Functional Teams Continuous Change Review Small Batch Sizes Traceability of Changes Shared Incentives Upskill Employees Blameless Post-Mortems Conway's Law Alignment Continuous Improvement

Slide 38

Slide 38 text

@tdpauw thinkinglabs.io “When considering an agile transformation, consider adopting Continuous Delivery because it embodies the technical heart of Agile.” -- Mary Poppendieck, Pitfalls of Agile Transformations

Slide 39

Slide 39 text

@tdpauw thinkinglabs.io @tdpauw thinkinglabs.io Hello, my name is Thierry de Pauw, @tdpauw Continuous Delivery consultant Agile Technical coach Lean and XP Software Engineer Founder of ThinkingLabs shy, introvert, opinionated dark chocolate, coffee Ghent, Belgium