Why can't we deploy this today?

# About me * Dirk Nederveen, [@dirk@blog.ndrvn.nl](https://blog.ndrvn.nl/u/dirk) * Husband, father of 3 * Streaming Engineer (QA) @Jet-Stream * Interests: - Theology - Neurospychology - Reading - Beer brewing

The story of a bug

Starring

πŸ¦ΉπŸ»β€β™‚οΈ
πŸ¦ΈπŸΌβ€β™‚οΈ
πŸ§‘β€πŸ’Ό
πŸ‘©πŸΎβ€πŸ’» πŸ‘·πŸ»β€β™‚οΈ
πŸ‘©πŸΌβ€πŸš’

The story of a bug

1 May: πŸ¦ΉπŸ»β€β™‚οΈ β†’πŸ“žβ†’ πŸ¦ΈπŸΌβ€β™‚οΈ
4 May: πŸ§‘β€πŸ’Ό πŸ‘©πŸΎβ€πŸ’» πŸ¦ΈπŸΌβ€β™‚οΈ β†’ πŸ›
5 May: πŸ§‘β€πŸ’Ό πŸ‘©πŸΎβ€πŸ’»
8 May: πŸ§‘β€πŸ’Όβ€‹ πŸ¦ΈπŸΌβ€β™‚οΈ πŸ‘©πŸΎβ€πŸ’» πŸ‘·πŸ»β€β™‚οΈ

# Closed sprint - Two weeks is fast in context of 6 month CD-ROM releases! - How long does shipping take for your application? --- # Closed sprint - πŸ‘ Shared control over workload - πŸ‘ Predictible cadence - πŸ‘Ž Limits response time to `sprint_length`

The story of a bug

10 May: πŸ‘·πŸ»β€β™‚οΈ, πŸ€·β€β™‚οΈ; πŸ‘·πŸ»β€β™‚οΈ β†’πŸ“§β†’ πŸ¦ΉπŸ»β€β™‚οΈ
11 May, 4 PM: πŸ¦ΉπŸ»β€β™‚οΈ β†’πŸ“§β†’ πŸ‘·πŸ»β€β™‚οΈ
15 May: πŸ‘·πŸ»β€β™‚οΈ β†’β†’ πŸ‘©πŸΎβ€πŸ’»
16 May, 4 PM: πŸ‘©πŸΎβ€πŸ’» β†’β†’ πŸ‘·πŸ»β€β™‚οΈ

# Pull Requests - Untrusted contributer, trusted maintainer - Communication through centralised repository --- # Pull Requests - πŸ‘ Multiple people look at the code - πŸ‘Ž Time between action and response - πŸ‘Ž Focus on code level, not product level - πŸ‘Ž Value spends a lot of time waiting

The story of a bug

17 May: πŸ‘·πŸ»β€β™‚οΈ β†’β†’ πŸ‘©πŸΎβ€πŸ’»
17 May, 3 PM: πŸ‘©πŸΎβ€πŸ’» β†’β†’ πŸ‘·πŸ»β€β™‚οΈ
18 May: πŸ‘·πŸ»β€β™‚οΈ β†’ πŸ•Ίβ›ΊοΈπŸ»

The story of a bug

22 May: πŸ§‘β€πŸ’Όβ€‹ πŸ¦ΈπŸΌβ€β™‚οΈ πŸ‘©πŸΎβ€πŸ’» πŸ‘·πŸ»β€β™‚οΈ
30 May: πŸ‘·πŸ»β€β™‚οΈ β†’β†’ πŸ‘©πŸΎβ€πŸ’»
30 May: πŸ‘©πŸΎβ€πŸ’» β†’βœ…β†’ πŸ‘·πŸ»β€β™‚οΈ
2 June: πŸ‘©πŸΎβ€πŸ’» πŸ‘·πŸ»β€β™‚οΈ β†’πŸ“¦β†’ πŸ‘©πŸΌβ€πŸš’

# Handoffs - Teams with distinct responsibilities - Changes move in discrete steps --- # Handoffs - πŸ‘ Specialisation - πŸ‘ Clear responsibilities - πŸ‘Ž Pipeline speed - πŸ‘Ž Adversarial relationships

The story of a bug

6 June, 7 AM: πŸ‘©πŸΌβ€πŸš’ β†’πŸ“¦β†’ ☁️
6 June, 9 AM: πŸ§‘β€πŸ’Ό β†’πŸ“§πŸ“§πŸ“§β†’ πŸ¦ΉπŸ»β€β™‚οΈπŸ¦ΉπŸ»β€β™‚οΈπŸ¦ΉπŸ»β€β™‚οΈ

# Time to value - The bug is fixed, πŸ¦ΉπŸ»β€β™‚οΈ Customer can send their invoices again! - Took 5 weeks
# Value stream mapping - How the *value* flows through an organisation - *Who* holds responsibility - Time to value

We have processes for a reason

  • Quality assurance
  • Pace
  • Delivering software reliably
  • Make the suits happy

The story of a bug

6 June
πŸ¦ΉπŸ»β€β™‚οΈπŸ€¬ β†’πŸ“žβ†’ πŸ§‘β€πŸ’Ό
πŸ§‘β€πŸ’ΌπŸ˜± πŸ¦ΈπŸΌβ€β™‚οΈ πŸ‘©πŸΎβ€πŸ’» πŸ‘·πŸ»β€β™‚οΈ
πŸ‘©πŸΎβ€πŸ’» β†’πŸ©Ήβ†’ πŸ‘©πŸΌβ€πŸš’
πŸ‘©πŸΌβ€πŸš’ β†’πŸ©Ήβ†’ ☁️

# What just happened? - High stress: angry phone calls - Value discovery, implementation, delivery

Continuous delivery

* Build quality in * Work in small batches * Computers perform repetitive tasks, people solve problems * Relentlessly pursue continuous improvement * Everyone is responsible

Deployment pipeline

Deployment pipeline

- Releasable: `True` or `False` - Quick feedback - Release β†’ DomainΒ knowledge β†’ PipelineΒ improvements β†’ BetterΒ release β†’ …

Deployment pipeline

## Build quality in - Test Driven Development - Pair programming - Infrastructure as code
## Work in small batches - Continuous integration/Trunk based development - Feature flags - More frequent releases
## Computers perform repetitive tasks, people solve problems - Continuous deployment - Tacit knowledge β†’ Text runbook β†’ Script β†’ Deployment pipeline
## Relentlessly pursue improvement - Do one step at a time - Find out (measure!) what works - "Make the change easy, then make the easy change"
## Everyone is responsible - Understand the Ops team - Grow in mutual trust
# What to do this Monday? * Sketch the value stream for a 1-hour - Discovery - Selection/prioritisation - Implementation - Verification - Delivery --- # What to do this Monday? * Build quality in - test-drive a larger user story - pair program for an hour daily - codify a text runbook --- # What to do this Monday? * Work in small batches - build a story on `main` behind a feature flag --- # What to do this Monday? * Computers perform repetitive tasks, people solve people-solve-problems - improve your app's deployment pipeline --- # What to do this Monday? * Relentlessly pursue continuous improvement - got TDD? Go TCR: `(test && commit) || revert` - got a deploy script? Bring it to the deployment pipeline - got automated builds? Release each working build to acceptance - Refactor before implementation --- # What to do this Monday? * Everyone is responsible - have lunch with the πŸ¦ΈπŸΌβ€β™‚οΈ Ops team - need review? Sync with πŸ‘©πŸΎβ€πŸ’» Sr. Dev at your desk - need to review? Pair with πŸ‘·πŸ»β€β™‚οΈ Jr. Dev - propose process improvements --- # What to do this Monday? Ask *"Why can't we deploy this today?"* and automate the answer

Why can't we deploy this today?

Credits:
  • πŸ‘ΈπŸ» My lovely wife for telling again and again my slides have too many words
  • Lineicons for the brand icons
  • The Jet-Stream crew for joining me in discovering Continuous Delivery in more depth
  • reveal.js for the slides framework

Why can't we deploy this today?