SlideShare a Scribd company logo
1 of 22
1
Mikado Method
Jörn Dinkla, April 2020
© 2020 ThoughtWorks
The story of refactoring
Once upon a time there was a smell in a programm ...
2
© 2020 ThoughtWorks
1. You think “this can be made better, i’ll refactor it” …
2. You refactor it, run the tests, but something else breaks
3. You try to fix it and so you look at other places in the code
4. You think “this place smells, too”
5. Goto 1
The story of refactoring
Once upon a time there was a smell in a programm ...
3
© 2020 ThoughtWorks
1. You think “this can be made better, i’ll refactor it” …
2. You refactor it, run the tests, but something else breaks
3. You try to fix it and so you look at other places in the code
4. You think “this place smells, too”
5. Goto 1
After many hours of work:
Code is not compiling
Tests are broken
Hours wasted
4
© this image is taken from the book
What is wrong with this approach?
Why doesn’t it work?
How can this rabbit hole be avoided?
5
© 2020 ThoughtWorks
Ola Ellnestam, Daniel Brolund
Manning, 2014
Important parts are available online:
https://www.manning.com/books/the-mikado-method
The Mikado Method
6
© 2020 ThoughtWorks
“The Mikado Method is a structured way to make
significant changes to complex code/complex
systems.”
Ellnestam, Brolund
7
© 2020 ThoughtWorks
8
The trick is to pick up
the easy sticks first
“The Mikado Method lets you handle complex code
a bit like you’d move furniture around in your
home, one piece at a time.”
Ellnestam, Brolund
9
© 2020 ThoughtWorks
10
What are the easiest parts?
11
© 2020 ThoughtWorks
Difficult to answer in
complex situations!
Goal
The goal is to build up knowledge
● What obstacles are there?
● What are the dependencies?
Build a plan of easy steps!
Finding out the dependencies of the sticks or furniture
12
© 2020 ThoughtWorks
The Mikado Method
1. Set a goal.
2. An experiment is a procedure for making a discovery or
establishing the validity of a hypothesis, so that you can
see what parts of the system break.
3. Visualization happens when you write down the goal
and the prerequisites necessary to achieve it.
4. Undo your changes to restore a previously working state.
13
© 2020 ThoughtWorks
Comparison
1. Set a goal
2. Experiment
3. Visualize
4. Undo
Finding out the dependencies of the sticks
14
© 2020 ThoughtWorks
Traditionally
top-down
Mikado
Top-down
bottom-up
15
Undo
Really?
● “the undo part is what people struggle with most”
● “undoing feels very unintuitive and wasteful”
But, it is important
● It’s learning, we need complete information
● We do not want to rely on assumptions
● You can save progress in patches
16
© 2020 ThoughtWorks
Breaking up a complex problem in simple ones
Analyse top down
● Build the graph with partial solutions
● Undo to return to a correct system state
● Until something won’t break other parts
Rewind bottom-up
● Apply the small changes
● Do not require large feature branches
17
© 2020 ThoughtWorks
Advantages
● Learned about the whole problem
● Solution consists of small changes
○ Can be worked in in small tickets/stories
○ Do not require large feature branches
18
© 2020 ThoughtWorks
19
20
Most chapters are available online
https://www.manning.com/books/the-mikado-method
21
© 2020 ThoughtWorks
22
Jörn Dinkla
jdinkla@thoughtworks.com
© 2020 ThoughtWorks

More Related Content

Similar to Presentation of the book "Mikado Method"

Introduction to react js
Introduction to react jsIntroduction to react js
Introduction to react jsMunirMahmud3
 
Coding Dojo Firenze - vol1
Coding Dojo Firenze - vol1 Coding Dojo Firenze - vol1
Coding Dojo Firenze - vol1 Massimo Iacolare
 
Yale waterfall delivery approach training deck
Yale waterfall delivery approach training deckYale waterfall delivery approach training deck
Yale waterfall delivery approach training deckYale University Careers
 
Making Good Design Decisions
Making Good Design DecisionsMaking Good Design Decisions
Making Good Design DecisionsDan Saffer
 
[DSC Adria 23] Radovan Bacovic Steal Our Knowledge Please.pptx
[DSC Adria 23] Radovan Bacovic Steal Our Knowledge Please.pptx[DSC Adria 23] Radovan Bacovic Steal Our Knowledge Please.pptx
[DSC Adria 23] Radovan Bacovic Steal Our Knowledge Please.pptxDataScienceConferenc1
 
final_paper_six_sigma.doc
final_paper_six_sigma.docfinal_paper_six_sigma.doc
final_paper_six_sigma.docJ. De La Garza
 
Planning Work & Contributing to Product Development Communities
Planning Work & Contributing to Product Development CommunitiesPlanning Work & Contributing to Product Development Communities
Planning Work & Contributing to Product Development CommunitiesKireeti Varma
 
Systematic Inventive Thinking - SIT
Systematic Inventive Thinking - SITSystematic Inventive Thinking - SIT
Systematic Inventive Thinking - SITPeter Frank
 
Building a Renewable Program Chapter 2 Doing Your Homework
Building a Renewable Program   Chapter 2 Doing Your HomeworkBuilding a Renewable Program   Chapter 2 Doing Your Homework
Building a Renewable Program Chapter 2 Doing Your HomeworkErik Lindquist, P.Eng.
 
How to make team collaboration suck less!
How to make team collaboration suck less!How to make team collaboration suck less!
How to make team collaboration suck less!Brian LaMee
 
Hack your learning 2019
Hack your learning 2019Hack your learning 2019
Hack your learning 2019John Clegg
 
Hack your learning 2022 - Part 1
Hack your learning 2022 - Part 1Hack your learning 2022 - Part 1
Hack your learning 2022 - Part 1John Clegg
 
OpenUI: Integrating Usage Data?
OpenUI: Integrating Usage Data?OpenUI: Integrating Usage Data?
OpenUI: Integrating Usage Data?Igalia
 
The rocket internet experience @ PHP.TO.START 2013 in Turin
The rocket internet experience @ PHP.TO.START 2013 in TurinThe rocket internet experience @ PHP.TO.START 2013 in Turin
The rocket internet experience @ PHP.TO.START 2013 in TurinAlessandro Nadalin
 
10 things I've learnt about lean startup: It's f*****g hard that's for sure!
10 things I've learnt about lean startup: It's f*****g hard that's for sure!10 things I've learnt about lean startup: It's f*****g hard that's for sure!
10 things I've learnt about lean startup: It's f*****g hard that's for sure!The Happy Startup School
 
How To Get Things Done
How To Get Things DoneHow To Get Things Done
How To Get Things DoneKenny Ong
 
AgileMidwest2018-Erickson-PowerOfRetrospective
AgileMidwest2018-Erickson-PowerOfRetrospectiveAgileMidwest2018-Erickson-PowerOfRetrospective
AgileMidwest2018-Erickson-PowerOfRetrospectiveJason Tice
 
Instantly Transform Into a Master Communicator Using 21 Secrets of Effective ...
Instantly Transform Into a Master Communicator Using 21 Secrets of Effective ...Instantly Transform Into a Master Communicator Using 21 Secrets of Effective ...
Instantly Transform Into a Master Communicator Using 21 Secrets of Effective ...Ateneo Graduate School of Business
 
50 UX Best Practices (By Above the Fold)
50 UX Best Practices (By Above the Fold)50 UX Best Practices (By Above the Fold)
50 UX Best Practices (By Above the Fold)Cristiano Caetano
 

Similar to Presentation of the book "Mikado Method" (20)

Introduction to react js
Introduction to react jsIntroduction to react js
Introduction to react js
 
Coding Dojo Firenze - vol1
Coding Dojo Firenze - vol1 Coding Dojo Firenze - vol1
Coding Dojo Firenze - vol1
 
Yale waterfall delivery approach training deck
Yale waterfall delivery approach training deckYale waterfall delivery approach training deck
Yale waterfall delivery approach training deck
 
Making Good Design Decisions
Making Good Design DecisionsMaking Good Design Decisions
Making Good Design Decisions
 
[DSC Adria 23] Radovan Bacovic Steal Our Knowledge Please.pptx
[DSC Adria 23] Radovan Bacovic Steal Our Knowledge Please.pptx[DSC Adria 23] Radovan Bacovic Steal Our Knowledge Please.pptx
[DSC Adria 23] Radovan Bacovic Steal Our Knowledge Please.pptx
 
final_paper_six_sigma.doc
final_paper_six_sigma.docfinal_paper_six_sigma.doc
final_paper_six_sigma.doc
 
Planning Work & Contributing to Product Development Communities
Planning Work & Contributing to Product Development CommunitiesPlanning Work & Contributing to Product Development Communities
Planning Work & Contributing to Product Development Communities
 
NIIT ppt.pptx
NIIT ppt.pptxNIIT ppt.pptx
NIIT ppt.pptx
 
Systematic Inventive Thinking - SIT
Systematic Inventive Thinking - SITSystematic Inventive Thinking - SIT
Systematic Inventive Thinking - SIT
 
Building a Renewable Program Chapter 2 Doing Your Homework
Building a Renewable Program   Chapter 2 Doing Your HomeworkBuilding a Renewable Program   Chapter 2 Doing Your Homework
Building a Renewable Program Chapter 2 Doing Your Homework
 
How to make team collaboration suck less!
How to make team collaboration suck less!How to make team collaboration suck less!
How to make team collaboration suck less!
 
Hack your learning 2019
Hack your learning 2019Hack your learning 2019
Hack your learning 2019
 
Hack your learning 2022 - Part 1
Hack your learning 2022 - Part 1Hack your learning 2022 - Part 1
Hack your learning 2022 - Part 1
 
OpenUI: Integrating Usage Data?
OpenUI: Integrating Usage Data?OpenUI: Integrating Usage Data?
OpenUI: Integrating Usage Data?
 
The rocket internet experience @ PHP.TO.START 2013 in Turin
The rocket internet experience @ PHP.TO.START 2013 in TurinThe rocket internet experience @ PHP.TO.START 2013 in Turin
The rocket internet experience @ PHP.TO.START 2013 in Turin
 
10 things I've learnt about lean startup: It's f*****g hard that's for sure!
10 things I've learnt about lean startup: It's f*****g hard that's for sure!10 things I've learnt about lean startup: It's f*****g hard that's for sure!
10 things I've learnt about lean startup: It's f*****g hard that's for sure!
 
How To Get Things Done
How To Get Things DoneHow To Get Things Done
How To Get Things Done
 
AgileMidwest2018-Erickson-PowerOfRetrospective
AgileMidwest2018-Erickson-PowerOfRetrospectiveAgileMidwest2018-Erickson-PowerOfRetrospective
AgileMidwest2018-Erickson-PowerOfRetrospective
 
Instantly Transform Into a Master Communicator Using 21 Secrets of Effective ...
Instantly Transform Into a Master Communicator Using 21 Secrets of Effective ...Instantly Transform Into a Master Communicator Using 21 Secrets of Effective ...
Instantly Transform Into a Master Communicator Using 21 Secrets of Effective ...
 
50 UX Best Practices (By Above the Fold)
50 UX Best Practices (By Above the Fold)50 UX Best Practices (By Above the Fold)
50 UX Best Practices (By Above the Fold)
 

More from Jörn Dinkla

Korrekte nebenläufige Anwendungen mit Koroutinen und TDD
Korrekte nebenläufige Anwendungen mit Koroutinen und TDDKorrekte nebenläufige Anwendungen mit Koroutinen und TDD
Korrekte nebenläufige Anwendungen mit Koroutinen und TDDJörn Dinkla
 
Nebenlaeufigkeit mit Koroutinen strukturieren
Nebenlaeufigkeit mit Koroutinen strukturierenNebenlaeufigkeit mit Koroutinen strukturieren
Nebenlaeufigkeit mit Koroutinen strukturierenJörn Dinkla
 
Plain react, hooks and/or Redux ?
Plain react, hooks and/or Redux ?Plain react, hooks and/or Redux ?
Plain react, hooks and/or Redux ?Jörn Dinkla
 
A short introduction to Kotlin
A short introduction to KotlinA short introduction to Kotlin
A short introduction to KotlinJörn Dinkla
 
Concurrency in Kotlin with coroutines
Concurrency in Kotlin with coroutinesConcurrency in Kotlin with coroutines
Concurrency in Kotlin with coroutinesJörn Dinkla
 
Nebenläufigkeit mit Kotlins Koroutinen
Nebenläufigkeit mit Kotlins KoroutinenNebenläufigkeit mit Kotlins Koroutinen
Nebenläufigkeit mit Kotlins KoroutinenJörn Dinkla
 
GPU-Computing mit CUDA und OpenCL
GPU-Computing mit CUDA und OpenCLGPU-Computing mit CUDA und OpenCL
GPU-Computing mit CUDA und OpenCLJörn Dinkla
 
Schulung: Einführung in das GPU-Computing mit NVIDIA CUDA
Schulung: Einführung in das GPU-Computing mit NVIDIA CUDASchulung: Einführung in das GPU-Computing mit NVIDIA CUDA
Schulung: Einführung in das GPU-Computing mit NVIDIA CUDAJörn Dinkla
 
Die ‚komplexe‘ Perspektive - Einführung in die digitale Wirtschaft
Die ‚komplexe‘ Perspektive - Einführung in die digitale WirtschaftDie ‚komplexe‘ Perspektive - Einführung in die digitale Wirtschaft
Die ‚komplexe‘ Perspektive - Einführung in die digitale WirtschaftJörn Dinkla
 
Geschäftsmodelle - Ein kurzer Überblick
Geschäftsmodelle -Ein kurzer ÜberblickGeschäftsmodelle -Ein kurzer Überblick
Geschäftsmodelle - Ein kurzer ÜberblickJörn Dinkla
 
Buchvorstellung "Libertarian Anarchy: Against the State" von Gerard Casey
Buchvorstellung "Libertarian Anarchy: Against the State" von Gerard CaseyBuchvorstellung "Libertarian Anarchy: Against the State" von Gerard Casey
Buchvorstellung "Libertarian Anarchy: Against the State" von Gerard CaseyJörn Dinkla
 
Multi-GPU-Computing: Eins, zwei, drei, ganz viele
Multi-GPU-Computing: Eins, zwei, drei, ganz vieleMulti-GPU-Computing: Eins, zwei, drei, ganz viele
Multi-GPU-Computing: Eins, zwei, drei, ganz vieleJörn Dinkla
 
Tipps & Tricks für den erfolgreichen Einsatz von GPU-Computing
Tipps & Tricks für den erfolgreichen Einsatz von GPU-ComputingTipps & Tricks für den erfolgreichen Einsatz von GPU-Computing
Tipps & Tricks für den erfolgreichen Einsatz von GPU-ComputingJörn Dinkla
 
GPU-Computing mit CUDA und OpenCL in der Praxis
GPU-Computing mit CUDA und OpenCL in der PraxisGPU-Computing mit CUDA und OpenCL in der Praxis
GPU-Computing mit CUDA und OpenCL in der PraxisJörn Dinkla
 
Introduction To Parallel Computing
Introduction To Parallel ComputingIntroduction To Parallel Computing
Introduction To Parallel ComputingJörn Dinkla
 
Subversion Schulung
Subversion SchulungSubversion Schulung
Subversion SchulungJörn Dinkla
 
Test-Driven-Development mit JUnit 4
Test-Driven-Development mit JUnit 4Test-Driven-Development mit JUnit 4
Test-Driven-Development mit JUnit 4Jörn Dinkla
 

More from Jörn Dinkla (18)

Korrekte nebenläufige Anwendungen mit Koroutinen und TDD
Korrekte nebenläufige Anwendungen mit Koroutinen und TDDKorrekte nebenläufige Anwendungen mit Koroutinen und TDD
Korrekte nebenläufige Anwendungen mit Koroutinen und TDD
 
Nebenlaeufigkeit mit Koroutinen strukturieren
Nebenlaeufigkeit mit Koroutinen strukturierenNebenlaeufigkeit mit Koroutinen strukturieren
Nebenlaeufigkeit mit Koroutinen strukturieren
 
Plain react, hooks and/or Redux ?
Plain react, hooks and/or Redux ?Plain react, hooks and/or Redux ?
Plain react, hooks and/or Redux ?
 
A short introduction to Kotlin
A short introduction to KotlinA short introduction to Kotlin
A short introduction to Kotlin
 
Concurrency in Kotlin with coroutines
Concurrency in Kotlin with coroutinesConcurrency in Kotlin with coroutines
Concurrency in Kotlin with coroutines
 
Nebenläufigkeit mit Kotlins Koroutinen
Nebenläufigkeit mit Kotlins KoroutinenNebenläufigkeit mit Kotlins Koroutinen
Nebenläufigkeit mit Kotlins Koroutinen
 
GPU-Computing mit CUDA und OpenCL
GPU-Computing mit CUDA und OpenCLGPU-Computing mit CUDA und OpenCL
GPU-Computing mit CUDA und OpenCL
 
Schulung: Einführung in das GPU-Computing mit NVIDIA CUDA
Schulung: Einführung in das GPU-Computing mit NVIDIA CUDASchulung: Einführung in das GPU-Computing mit NVIDIA CUDA
Schulung: Einführung in das GPU-Computing mit NVIDIA CUDA
 
Die ‚komplexe‘ Perspektive - Einführung in die digitale Wirtschaft
Die ‚komplexe‘ Perspektive - Einführung in die digitale WirtschaftDie ‚komplexe‘ Perspektive - Einführung in die digitale Wirtschaft
Die ‚komplexe‘ Perspektive - Einführung in die digitale Wirtschaft
 
Geschäftsmodelle - Ein kurzer Überblick
Geschäftsmodelle -Ein kurzer ÜberblickGeschäftsmodelle -Ein kurzer Überblick
Geschäftsmodelle - Ein kurzer Überblick
 
Buchvorstellung "Libertarian Anarchy: Against the State" von Gerard Casey
Buchvorstellung "Libertarian Anarchy: Against the State" von Gerard CaseyBuchvorstellung "Libertarian Anarchy: Against the State" von Gerard Casey
Buchvorstellung "Libertarian Anarchy: Against the State" von Gerard Casey
 
Multi-GPU-Computing: Eins, zwei, drei, ganz viele
Multi-GPU-Computing: Eins, zwei, drei, ganz vieleMulti-GPU-Computing: Eins, zwei, drei, ganz viele
Multi-GPU-Computing: Eins, zwei, drei, ganz viele
 
Tipps & Tricks für den erfolgreichen Einsatz von GPU-Computing
Tipps & Tricks für den erfolgreichen Einsatz von GPU-ComputingTipps & Tricks für den erfolgreichen Einsatz von GPU-Computing
Tipps & Tricks für den erfolgreichen Einsatz von GPU-Computing
 
GPU-Computing mit CUDA und OpenCL in der Praxis
GPU-Computing mit CUDA und OpenCL in der PraxisGPU-Computing mit CUDA und OpenCL in der Praxis
GPU-Computing mit CUDA und OpenCL in der Praxis
 
Introduction To Parallel Computing
Introduction To Parallel ComputingIntroduction To Parallel Computing
Introduction To Parallel Computing
 
Subversion Schulung
Subversion SchulungSubversion Schulung
Subversion Schulung
 
Test-Driven-Development mit JUnit 4
Test-Driven-Development mit JUnit 4Test-Driven-Development mit JUnit 4
Test-Driven-Development mit JUnit 4
 
Ant im Detail
Ant im DetailAnt im Detail
Ant im Detail
 

Recently uploaded

EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityNeo4j
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...stazi3110
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...Christina Lin
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideChristina Lin
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxTier1 app
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...gurkirankumar98700
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfjoe51371421
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataBradBedford3
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)OPEN KNOWLEDGE GmbH
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software DevelopersVinodh Ram
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmSujith Sukumaran
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio, Inc.
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackVICTOR MAESTRE RAMIREZ
 
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptkotipi9215
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWave PLM
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
 
cybersecurity notes for mca students for learning
cybersecurity notes for mca students for learningcybersecurity notes for mca students for learning
cybersecurity notes for mca students for learningVitsRangannavar
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Andreas Granig
 

Recently uploaded (20)

EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered Sustainability
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdf
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software Developers
 
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalm
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStack
 
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.ppt
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need It
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
cybersecurity notes for mca students for learning
cybersecurity notes for mca students for learningcybersecurity notes for mca students for learning
cybersecurity notes for mca students for learning
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024
 

Presentation of the book "Mikado Method"

  • 1. 1 Mikado Method Jörn Dinkla, April 2020 © 2020 ThoughtWorks
  • 2. The story of refactoring Once upon a time there was a smell in a programm ... 2 © 2020 ThoughtWorks 1. You think “this can be made better, i’ll refactor it” … 2. You refactor it, run the tests, but something else breaks 3. You try to fix it and so you look at other places in the code 4. You think “this place smells, too” 5. Goto 1
  • 3. The story of refactoring Once upon a time there was a smell in a programm ... 3 © 2020 ThoughtWorks 1. You think “this can be made better, i’ll refactor it” … 2. You refactor it, run the tests, but something else breaks 3. You try to fix it and so you look at other places in the code 4. You think “this place smells, too” 5. Goto 1 After many hours of work: Code is not compiling Tests are broken Hours wasted
  • 4. 4 © this image is taken from the book
  • 5. What is wrong with this approach? Why doesn’t it work? How can this rabbit hole be avoided? 5 © 2020 ThoughtWorks
  • 6. Ola Ellnestam, Daniel Brolund Manning, 2014 Important parts are available online: https://www.manning.com/books/the-mikado-method The Mikado Method 6 © 2020 ThoughtWorks
  • 7. “The Mikado Method is a structured way to make significant changes to complex code/complex systems.” Ellnestam, Brolund 7 © 2020 ThoughtWorks
  • 8. 8 The trick is to pick up the easy sticks first
  • 9. “The Mikado Method lets you handle complex code a bit like you’d move furniture around in your home, one piece at a time.” Ellnestam, Brolund 9 © 2020 ThoughtWorks
  • 10. 10
  • 11. What are the easiest parts? 11 © 2020 ThoughtWorks Difficult to answer in complex situations!
  • 12. Goal The goal is to build up knowledge ● What obstacles are there? ● What are the dependencies? Build a plan of easy steps! Finding out the dependencies of the sticks or furniture 12 © 2020 ThoughtWorks
  • 13. The Mikado Method 1. Set a goal. 2. An experiment is a procedure for making a discovery or establishing the validity of a hypothesis, so that you can see what parts of the system break. 3. Visualization happens when you write down the goal and the prerequisites necessary to achieve it. 4. Undo your changes to restore a previously working state. 13 © 2020 ThoughtWorks
  • 14. Comparison 1. Set a goal 2. Experiment 3. Visualize 4. Undo Finding out the dependencies of the sticks 14 © 2020 ThoughtWorks Traditionally top-down Mikado Top-down bottom-up
  • 15. 15
  • 16. Undo Really? ● “the undo part is what people struggle with most” ● “undoing feels very unintuitive and wasteful” But, it is important ● It’s learning, we need complete information ● We do not want to rely on assumptions ● You can save progress in patches 16 © 2020 ThoughtWorks
  • 17. Breaking up a complex problem in simple ones Analyse top down ● Build the graph with partial solutions ● Undo to return to a correct system state ● Until something won’t break other parts Rewind bottom-up ● Apply the small changes ● Do not require large feature branches 17 © 2020 ThoughtWorks
  • 18. Advantages ● Learned about the whole problem ● Solution consists of small changes ○ Can be worked in in small tickets/stories ○ Do not require large feature branches 18 © 2020 ThoughtWorks
  • 19. 19
  • 20. 20
  • 21. Most chapters are available online https://www.manning.com/books/the-mikado-method 21 © 2020 ThoughtWorks