Slide 1

Slide 1 text

Remote Scaled Trunk- Based Development* 09.11.22 * I hope I did not forget any buzzwords. IT-Tailor Richard Gross (he/him) Archeologist Auditor richargh.de/ speakerdeck.com/richargh @arghrich Works at maibornwolff.de/

Slide 2

Slide 2 text

Slides by @arghrich Why do Big Software Projects fail? 2

Slide 3

Slide 3 text

Slides by @arghrich Big Projects fail because they are Big? 3 CHAOS’15 https://standishgroup.com/sample_research_files/CHAOSReport2015-Final.pdf HBR 2011 https://hbr.org/2011/09/why-your-it-project-may-be-riskier-than-you-think McK https://www.mckinsey.com/business-functions/mckinsey-digital/our-insights/delivering-large-scale-it-projects-on-time-on-budget-and-on-value McK On average, large IT projects run 45 percent over budget and 7 percent over time, while delivering 56 percent less value than predicted. HBR one in six of the projects we studied was a black swan, with a cost overrun of 200%, on average, and a schedule overrun of almost 70%. CHAOS‘15 size (is) the single most important factor in the (…) outcome.

Slide 4

Slide 4 text

Slides by @arghrich How many Software Projects fail at your company? 4 IT Failure Rates— 70% or 10–15%? https://www.cs.uni.edu/~wallingf/teaching/172/resources/glass-on-it-failure.pdf If the reasearch is right it must be 50 to 70%...

Slide 5

Slide 5 text

Slides by @arghrich CHAOS Report is highly controversial 5 CHAOS’15 https://standishgroup.com/sample_research_files/CHAOSReport2015-Final.pdf IEEE https://www.cs.vu.nl/~x/the_rise_and_fall_of_the_chaos_report_figures.pdf AMB https://www.informationweek.com/executive-insights-and-innovation/the-non-existent-software-crisis-debunking-the-chaos-report AMB http://www.ambysoft.com/surveys/ IEEE (the definitions are) solely based on estimation accuracy of cost, time, and functionality. AMB (independent study results) are much more positive than what the Standish Group claims. IEEE Our research shows that the Standish definitions (…) have 4 major problems: they’re misleading, one-sided, pervert the estimation practice, and result in meaningless figures. CHAOS‘15 (in 2015) another major change is how we define success. Our new Modern definition is OnTime, OnBudget, with a satisfactory result.

Slide 6

Slide 6 text

Slides by @arghrich Think big, act small 6 CHAOS Manifesto ‘13 https://larlet.fr/static/david/stream/ChaosManifesto2013.pdf CHAOS is in agreement with how to succeed the secret to project success is to strongly recommend and enforce limits on size and complexity. These two factors trump all others factors. break down large projects into a sequence of smaller ones, prioritized on direct business value (…) Aka scale down the work

Slide 7

Slide 7 text

Slides by @arghrich Success Factors for small projects 7 CHAOS Manifesto ‘13 https://larlet.fr/static/david/stream/ChaosManifesto2013.pdf

Slide 8

Slide 8 text

Slides by @arghrich So why do Experts think Big Software Projects actually fail? 8

Slide 9

Slide 9 text

Slides by @arghrich Politics 9 Highly abbreviated from a short Twitter conversation with @TotherAlistair.

Slide 10

Slide 10 text

Slides by @arghrich Succeeding with a Scaled Project* What we tried and avoided 10 * See if you can scale down the project first and deliver much smaller slices sooner

Slide 11

Slide 11 text

Slides by @arghrich A customer approaches* … 11 * pre-Pandemic I need 4 teams

Slide 12

Slide 12 text

Oh Boy

Slide 13

Slide 13 text

Slides by @arghrich Complexity is … Theory 13 Power Sexy Easier

Slide 14

Slide 14 text

Slides by @arghrich Scale Software via Evolutionary Design 14 Theory https://www.industriallogic.com/blog/evolutionary-design/ You can recognize the guitar Simple, easy to understand, makes music Can do more Still simple. Maybe that's enough for the customer. After all, time is money. This is a guitar Pretty good. Satisfies most people. Complex guitar Makes the best of the best happy. BUT, did we really have to serve them? How many normaler users did we lose with this complicated guitar?

Slide 15

Slide 15 text

Slides by @arghrich Scale Teams by starting small 15 Theory Hexagonal Architecture Bind Api to Database Clean Code is … I don’t like the way you write tests This is not good design Java! C# Spaces Tabs F# One Repo per Deployable Singe Repo Rust Should we use …

Slide 16

Slide 16 text

Slides by @arghrich Fresh Teams have a lot … Theory 16 to discover of beef to agree on

Slide 17

Slide 17 text

Slides by @arghrich Scale Teams via Evolutionary Division 17 Theory Spring 1 American Pizza Summer 2 American Pizzas Winter 4 American Pizzas Autumn 3 American Pizzas

Slide 18

Slide 18 text

Slides by @arghrich 18 Photo by Anne-sophie Parent from Pexels Slides by @arghrich Spring > Foundation

Slide 19

Slide 19 text

Slides by @arghrich Try…1 Co-located team Spring > Foundation 19 Get to know each other

Slide 20

Slide 20 text

Slides by @arghrich Try…Adopt a Process to Improve 20 Spring > Foundation Retro 2h Bi-Weekly • What to KEEP • What to TRY • Results often added to Team Charter Dev Talk 1h Weekly • Present, Discuss, Agree on Tech • Results often ADRs • So many ADRs Slack Time

Slide 21

Slide 21 text

Slides by @arghrich Try…Adopt and adapt Scrum1 21 Winter > Scaled Remote 1 If you mix it with Xp, Scrum is not a bad start at all. Original Scrum and Invention Dev Talk 1,5h | Team Slack Time 3 Amigos 30m | 2x | 3 Ppl Daily Daily 15m | Team During Week Weekly Bi-Weekly Retro 2h Bi-Weekly Review 1h Bi-Weekly Planning 2h Bi-Weekly Refinement 30m | 2x | Team

Slide 22

Slide 22 text

Slides by @arghrich Try…Explicit1,2,3 Slack Time Spring > Foundation 22 1 Customers are super happy when tech stuff never shows up in their backlog. They don’t know how to prioritize it. 2 Given devs ~2 days of slack time each sprint is a small price to pay when it stabilizes all estimation and planning. 3 The backlog is also only about business features… To actually do Retro/Tech Items

Slide 23

Slide 23 text

Slides by @arghrich Try…Trunk-Based Development1 Spring > Foundation 23 1 Predictive of success à Accelerate State of DevOps 2021 https://cloud.google.com/resources/state-of-devops#section-4 The simplest, nicest branching model

Slide 24

Slide 24 text

Slides by @arghrich Avoid…Long-Lived Feature-Branches 24 Spring > Foundation main

Slide 25

Slide 25 text

Slides by @arghrich Avoid…Continuous Isolation Branches • Increase personal productivity • Discourage Refactoring • Increase Batch Size • Increase Risk Daily merges (aka integration) • Increase team productivity • Motivate Refactoring • Decrease Batch Size • Decrease Risk 25 Spring > Foundation See also Feature Branches are Evil by Thierry de Pauw https://thinkinglabs.io/articles/2022/05/30/on-the-evilness-of-feature-branching-the-problems.html https://thinkinglabs.io/articles/2022/09/17/the-practices-that-make-continuous-integration-team-working.html Try…Continuous Integration

Slide 26

Slide 26 text

Slides by @arghrich Do…Pair TBD with maintained pipeline 26 Spring > Foundation Behavior-changing, validated feature = upper-case F Behavior-preserving, safe refactor = lower-case r https://github.com/RefactoringCombos/ArlosCommitNotation main r r r r r F r r revert r Improve commit Always in a releasable state ▸ Lint ▸ Unit Test ▸ Int Test ▸ System Test ▸ PostDeploy Smoke Test ▸ PostDeploy Monitoring ▸ … Revert, if not fixable in 10min Small, focused commits

Slide 27

Slide 27 text

Slides by @arghrich Our customer approaches again* … 27 Late Spring * Still pre-Pandemic I want 4 teams I want scalable software

Slide 28

Slide 28 text

Slides by @arghrich 28 Summer Photo by Pixabay from Pexels Slides by @arghrich

Slide 29

Slide 29 text

Slides by @arghrich Try…Start with a monolith • At project inception you have the least knowledge • Your modelling can and will change a lot in the beginning • Refactoring in a monolith has tool support • However: splitting up a monolith is not a freebie either 29 Summer > Scale-Out

Slide 30

Slide 30 text

Slides by @arghrich Try…Keep everything in one repo 31 Summer > Scale-Out • All • Services • Shared Libraries • Documentation • Configuration • Provisioning • Onboarding.sh Scripts à Everything your team needs • You see everything everywhere, all at once • You filter what you need right now • Your (refactoring) tools help you with every change (in shared libraries) • You can unit test all services together J

Slide 31

Slide 31 text

Slides by @arghrich Our customer approaches again again* … 33 Late Summer * Still pre-Pandemic I want 4 teams I want scaledable software I want more, in parallel

Slide 32

Slide 32 text

Slides by @arghrich 34 Autumn Photo by Daniel Frank from Pexels Slides by @arghrich

Slide 33

Slide 33 text

Slides by @arghrich Try…Dynamic Feature Teams1 35 Autumn > Divide 1 A more extreme version of this approach is FAST agile https://www.fastagile.io/method See also Hands-on Agile 45: FAST Scaling — James Shore [Youtube] Planning 1 Planning 1,5 Topic A Topic B Present topics incl. Backlog Pick Topic Topic A Topic B Planning 2 Task Breakdown

Slide 34

Slide 34 text

Slides by @arghrich Try…Dynamic Feature Teams Each team can work anywhere in the repo 36 Autumn > Divide Align via … the coffee machine the dev talk and ADRs Bi-weekly re-teaming

Slide 35

Slide 35 text

Slides by @arghrich Our customer approaches remote* … 38 Late Autumn *Pandemic! I want 4 teams I want scaledable software I want more, in parallel I want more speed I hate remote

Slide 36

Slide 36 text

Slides by @arghrich 39 Winter Photo by Riccardo Bresciani from Pexels Slides by @arghrich

Slide 37

Slide 37 text

Slides by @arghrich Try…Divide & Conquer to increase Meeting Efficiency 40 Winter > Scaled Remote Original Scrum and Invention Dev Talk 1,5h | Team Slack Time 3 Amigos 30m | 2x | 3 Ppl Daily Daily 15m | Team During Week Weekly Bi-Weekly Retro 2h Bi-Weekly Review 1h Bi-Weekly Planning 2h Bi-Weekly Refinement 30m | 2x | Team

Slide 38

Slide 38 text

Slides by @arghrich Try…Stable Streams 41 Winter > Scaled Remote Inception Pick Stream You already know who you can work with best.

Slide 39

Slide 39 text

Slides by @arghrich Try…One Shared Backlog 42 Winter > Scaled Remote Backlog

Slide 40

Slide 40 text

Slides by @arghrich Try…Stable What’s Next1,2 43 Winter > Scaled Remote 1 Stream Backlogs should never run dry 2 At this point you know your velocity to forecast feature completion dates What’s Next Backlog Task Breakdown Stream Backlogs

Slide 41

Slide 41 text

Slides by @arghrich Try…Flexible Cadences 44 Winter > Scaled Remote Original Scrum and Invention Dev Talk 1,5h | Team Slack Time Refinement 30m | 3 per Week | 3 Ppl What’s Next 1h | Stream Daily Retro 20m | Stream Daily 15m | Stream During Week Weekly Bi-Monthly Roadmap 1h | Team Incl. Story Map On-Demand Retro 2,3h | Stream or Team

Slide 42

Slide 42 text

Slides by @arghrich Try…Response Team 45 Winter > Scaled Remote Motivation • Reduce context switches Activities 1. Keep Prod Stable 2. Keep Dev Env Stable 3. Proactively work on even more stability 4. In that order

Slide 43

Slide 43 text

Slides by @arghrich How do you find people that can help/enlighten/chat in a remote setting? 1,2 Winter > Scaled Remote 46 1 Can meaning, they are not in focus mode. 2 In a co-located setting you can easily see if someone does not want to be disturbed.

Slide 44

Slide 44 text

Slides by @arghrich Try…Findable Remote Stream Rooms 47 Winter > Scaled Remote Channel A We work on feature xyz Channel B We work on feature abc Channel Discovery We are discovering • Use team-internal channels/calendar events/etc. where the streams work No one there or all in focus mode. Someone is there, working on a feature Someone is there, working on the next features

Slide 45

Slide 45 text

Slides by @arghrich 48 Summary Photo by Irina Iriser from Pexels Slides by @arghrich

Slide 46

Slide 46 text

Slides by @arghrich How far we got • 1 team with 6 devs • 2 week Sprints • 2h Planning • Dev Talk Decisions • Whole-team 2h retros every 2 weeks • 1 team, 5 streams with 2-0 devs • Continuous • 1h What’s next meetings • Stream decisions + Dev Talk presentation • Daily 15min retros, On-demand large stream or team retros 49 Summary

Slide 47

Slide 47 text

Slides by @arghrich We improved as a team Spring > Foundation 50

Slide 48

Slide 48 text

Slides by @arghrich People issues determine a project’s speed Can they easily detect something needs attention? Will they care enough to do something about it? Can they effectively pass along the information? 51 Summary Stolen from Alistair Cockburn „Why Agile Works“ at ~28m

Slide 49

Slide 49 text

Slides by @arghrich Do you have a Process to Experiment and Improve? Summary 52

Slide 50

Slide 50 text

Slides by @arghrich Do you have the Mindset? Summary 53

Slide 51

Slide 51 text

Slides by @arghrich Try…Remote Trunk-Based Development Just don’t forget it’s not about the techniques 54 Summary Pipeline Easy Hard Techniques Something you do Methods When you do it Mindset What you actually do

Slide 52

Slide 52 text

Slides by @arghrich Thanks 55 IT-Tailor Richard Gross (he/him) Archaeologist Auditor richargh.de/ speakerdeck.com/richargh @arghrich Works at maibornwolff.de/ Tailored Software by People who Care. DE TN ES

Slide 53

Slide 53 text

Slides by @arghrich Backup 56

Slide 54

Slide 54 text

Slides by @arghrich 57 Twitter https://twitter.com/ArghRich/status/1569009015123808258 ?cxt=HHwWhMC4vdzYnsYrAAAA