<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"> <title>reveal.js</title> <link rel="stylesheet" href="dist/reset.css"> <link rel="stylesheet" href="dist/reveal.css"> <link rel="stylesheet" href="dist/theme/black.css"> <!-- Theme used for syntax highlighted code --> <link rel="stylesheet" href="plugin/highlight/monokai.css"> </head> <body> <div class="reveal"> <div class="slides"> <section data-markdown="" id="cover-page"> # Why can't we deploy this today? </section> <section data-markdown> # 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 </section> <section data-markdown="" id="bluf"> # Why can't we deploy this today? </section> <section> <section data-markdown id="story-bug"> # The story of a bug Starring: - π¦Ήπ»ββοΈ Customer - π¦ΈπΌββοΈ Support Hero - π§βπΌ Company/Product Owner - Dev team: π©πΎβπ» Sr. Dev and π·π»ββοΈ Jr. Dev - Ops team: π QA and π©πΌβπ System Operator --- - π¦Ήπ»ββοΈ Customer calls with a question about sending an invoice on Monday 1 May, π¦ΈπΌββοΈ Support Hero logs ticket BS-1234 in Jira - π§βπΌ Product Owner, π©πΎβπ» Sr. Dev and π¦ΈπΌββοΈ Support Hero have triage meeting on Thursday 4 May, bug confirmed, priority 'Highest' - π§βπΌ Product Owner and π©πΎβπ» Sr. Dev have backlog grooming meeting on Friday 5 May - Team has Sprint Planning meeting on Monday 8 May, commit to BS-1234 for 1 Story Point </section> </section> <section> <section data-markdown style="color:red"> # Closed sprint - Two weeks is fast in context of 6 month CD-ROM releases! - How long does shipping take for your application? --- # Closed sprint - π </section> </section> <section id="pull-requests"> <section data-markdown> - π·π»ββοΈ Jr. Dev picks up BS-1234, needs clarification and sends π¦Ήπ»ββοΈ Customer an email on Wednesday 10 May - π¦Ήπ»ββοΈ Customer responds Thursday 11 May, 16:00 - π·π»ββοΈ Jr. Dev starts implementation on Monday 15 May, opens PR #2345 in GitHub - π©πΎβπ» Sr. Dev responds to PR #2345 on Tuesday 16 May 16:00, needs improvement --- # Pull Requests - Untrusted contributer send in patch - Trusted maintainer chooses what to merge - Communication through centralised repositor --- # Pull Requests - π Multiple people look at the code - π Focus on code level, not product level - π Value spends a lot of time waiting </section> </section> <section id="handoffs"> <section data-markdown="" style="color: red;"> - π·π»ββοΈ Jr. Dev processes feedback on Wednesday 17 May, 10:00 - Oh no! π₯ Merge conflict! - π©πΎβπ» Sr. Dev checks PR #2345 and Slacks π·π»ββοΈ Jr. Dev on Wednesday 17 May, 15:00 - It's the Ascension Day weekend! π·π»ββοΈ Jr. Dev is off to a festival πΊ --- # Handoffs </section> </section> <section id="shared-responsibility"> <section data-markdown=""> - Monday 22 May: another Sprint Planning meeting. The team commits to BS-1234 again (0 Story points now, "it's basically done") - Tuesday 30 May: π·π»ββοΈ Jr. Dev picks up BS-1234 again, fixes the merge conflict - Tuesday 30 May: π©πΎβπ» Sr. Dev approves PR #2345 and π·π»ββοΈ Jr. Dev gets to click the β Merge button! - Friday 2 June: Sprint end! Dev team sends the release candidate to Ops team --- TODO: Chapter about value streams crossing team boundaries </section> </section> <section id="time-to-value"> <section data-markdown=""> - π©πΌβπ System Operator prepares release after Sprint end, and deploys update on Tuesday, 6 June 07:00 - π§βπΌ Product Owner sends the update newsletter Tuesday at 09:00 - π¦Ήπ»ββοΈ Customer calls again: the bug is not fixed! --- - π§βπΌ Product Owner calls an urgent meeting: Why is BS-1234 (zero points!!) open for over a month? --- TODO: Chapter about time-to-value </section> </section> <section> <section data-markdown=""> # Value stream mapping - How the *value* flows through an organisation - *Who* holds responsibility </section> <section data-markdown=""> * Delays in process - Closed Sprint - Asynchronous PR review - Separate release team * Hand-offs: - π¦ΈπΌββοΈ Support Hero β‘οΈ Dev Team - π·π»ββοΈ Jr. Dev β π©πΎβπ» Sr. Dev - Dev Team β‘οΈ Ops Team </section> </section> <section data-markdown="" style="color:red"> # TODO Processes are there for a reason! but whom do they benefit? </section> <section id="continuous-delivery"> <h1>Continuous delivery</h1> <div style="width: 80%; float: left" data-markdown=""> * Build quality in * Work in small batches * Computers perform repetitive tasks, people solve problems * Relentlessly pursue continuous improvement * Everyone is responsible </div> <div style="float: right; width: 20%; height: 8em"> <a href="https://www.bol.com/nl/nl/p/accelerate/9200000080652224"> <img src="accelerate.jpg" style="height: 50%;"> </a><br> <a href="https://www.informit.com/store/continuous-delivery-reliable-software-releases-through-9780321770424?ranMID=24808"> <img src="cd-book.png" style="height: 50%;"> </a> </div> </section> <section data-markdown=""> # What to do this Monday? * Sketch how a 1-hour bug streams through your org - Discovery - Selection/prioritisation - Implementation - Verification - To production </section> </div> </div> <script src="dist/reveal.js"></script> <script src="plugin/notes/notes.js"></script> <script src="plugin/markdown/markdown.js"></script> <script src="plugin/highlight/highlight.js"></script> <script> // More info about initialization & config: // - https://revealjs.com/initialization/ // - https://revealjs.com/config/ Reveal.initialize({ hash: true, // Learn about plugins: https://revealjs.com/plugins/ plugins: [RevealMarkdown, RevealHighlight, RevealNotes] }); </script> <script> document.querySelectorAll('.slides section a[href^="http"]'). forEach(a => a.setAttribute('target', '_blank')) </script> </body> </html>