Skip to content

Commit 867fee5

Browse files
authored
Merge pull request #202 from JThoennes/main
feat: refine Mikado Method documentation with enhanced clarity
2 parents 7ff651d + fcda3e8 commit 867fee5

File tree

2 files changed

+70
-8
lines changed

2 files changed

+70
-8
lines changed

docs/anchors/mikado-method.adoc

Lines changed: 35 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,17 +12,21 @@ Also known as:: Mikado Graph Method
1212
[discrete]
1313
== *Core Concepts*:
1414

15-
Mikado Goal:: The final desired state of the code after refactoring; the root of the dependency graph
15+
Mikado Goal:: The clear desired future state of the code after refactoring; the root of the dependency graph and success criterion of the change
1616

1717
Prerequisite discovery:: Reveal blocking dependencies by attempting the change and noting what breaks
1818

19-
Revert and repeat:: After discovering a prerequisite, revert to a working state before addressing it
19+
Use experiments:: Prefer quick or time-boxed empirical attempts over long upfront analysis
2020

21-
Mikado Graph:: A directed acyclic graph where nodes are prerequisites and edges show dependencies between them
21+
Always revert:: *IMPORTANT*: After discovering a prerequisite, *always* revert to the last known working state before addressing it
22+
23+
Mikado Graph:: A directed acyclic graph where goals and prerequisites are nodes and arrows show dependencies
2224

2325
Leaf-first resolution:: Resolve the leaf nodes (no further prerequisites) first, working back to the root goal
2426

25-
Small reversible steps:: Each step leaves the codebase in a working state, eliminating the risk of long-running broken branches
27+
Small reversible steps:: Revert failed experiments immediately; keep or commit only coherent healthy changes
28+
29+
Meaningful commits:: Commit only when the code compiles, tests run, the product is in a good state, and the change makes sense on its own
2630

2731
Key Proponents:: Ola Ellnestam, Daniel Brolund ("The Mikado Method", 2012)
2832

@@ -33,6 +37,33 @@ Key Proponents:: Ola Ellnestam, Daniel Brolund ("The Mikado Method", 2012)
3337
* When a direct change breaks too many things to fix at once
3438
* Coordinating multi-developer refactoring efforts safely
3539
* Making incremental improvements without blocking the team
40+
* Brownfield development with hidden dependencies
41+
42+
[[mikado-method-recipe-canonical-form]]
43+
[discrete]
44+
== *Mikado Method Recipe (Canonical Form)*
45+
46+
1. Start here: Draw the Mikado Goal.
47+
2. Implement the goal or prerequisite naively.
48+
3. Are there any errors?
49+
* Examples: compiler errors, failing tests, runtime errors, broken builds.
50+
* If *Yes*, go to step 4.
51+
* If *No*, go to step 9.
52+
4. Come up with immediate solutions to the errors.
53+
5. Draw the solutions as new prerequisites in the Mikado Graph.
54+
6. Revert all changes and return to the last known good state.
55+
7. Select the next prerequisite to work with.
56+
8. Go to step 2.
57+
9. Does the change make sense?
58+
* Examples: understandable, internally consistent, safe to keep, useful on its own.
59+
* If *Yes*, go to step 10.
60+
* If *No*, go to step 7.
61+
10. Commit the change.
62+
11. Is the Mikado Goal met?
63+
* If *Yes*, go to step 12.
64+
* If *No*, go to step 7.
65+
12. DONE!
66+
3667

3768
[discrete]
3869
== *Related Anchors*:

docs/anchors/mikado-method.de.adoc

Lines changed: 35 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,17 +12,21 @@ Auch bekannt als:: Mikado-Graph-Methode
1212
[discrete]
1313
== *Kernkonzepte*:
1414

15-
Mikado-Ziel:: Der angestrebte Endzustand des Codes nach dem Refactoring; die Wurzel des Abhängigkeitsgraphen
15+
Mikado-Ziel:: Der klare, angestrebte zukünftige Zustand des Codes nach dem Refactoring; die Wurzel des Abhängigkeitsgraphen und das Erfolgskriterium der Änderung
1616

1717
Voraussetzungsermittlung:: Blockierende Abhängigkeiten aufdecken, indem die Änderung versucht und notiert wird, was dabei bricht
1818

19-
Rückgängig machen und wiederholen:: Nach dem Entdecken einer Voraussetzung den Code auf einen funktionierenden Zustand zurücksetzen, bevor diese angegangen wird
19+
Experimente nutzen:: Bevorzuge schnelle oder zeitlich begrenzte empirische Versuche gegenüber langen Vorab-Analysen
2020

21-
Mikado-Graph:: Ein gerichteter azyklischer Graph, bei dem Knoten Voraussetzungen und Kanten die Abhängigkeiten zwischen ihnen darstellen
21+
Immer rückgängig machen:: *WICHTIG*: Nach dem Entdecken einer Voraussetzung *immer* zum letzten bekannten funktionierenden Zustand zurückkehren, bevor diese angegangen wird
22+
23+
Mikado-Graph:: Ein gerichteter azyklischer Graph, bei dem Ziele und Voraussetzungen Knoten sind und Pfeile die Abhängigkeiten anzeigen
2224

2325
Blatt-zuerst-Auflösung:: Zuerst die Blattknoten (ohne weitere Voraussetzungen) auflösen und von dort zurück zum Wurzelziel arbeiten
2426

25-
Kleine reversible Schritte:: Jeder Schritt hinterlässt die Codebasis in einem funktionierenden Zustand und vermeidet das Risiko langer kaputt-Branches
27+
Kleine reversible Schritte:: Mache fehlgeschlagene Experimente sofort rückgängig; behalte oder committe nur zusammenhängende, gesunde Änderungen
28+
29+
Aussagekräftige Commits:: Committe nur, wenn der Code kompiliert, Tests laufen, das Produkt in einem guten Zustand ist und die Änderung für sich genommen sinnvoll ist
2630

2731
Schlüsselvertreter:: Ola Ellnestam, Daniel Brolund ("The Mikado Method", 2012)
2832

@@ -33,6 +37,33 @@ Schlüsselvertreter:: Ola Ellnestam, Daniel Brolund ("The Mikado Method", 2012)
3337
* Wenn eine direkte Änderung zu viele Dinge bricht, um sie auf einmal zu beheben
3438
* Koordination von Refactoring-Arbeiten mehrerer Entwickler auf sichere Weise
3539
* Inkrementelle Verbesserungen vornehmen, ohne das Team zu blockieren
40+
* Brownfield-Entwicklung mit versteckten Abhängigkeiten
41+
42+
[[mikado-methode-rezept-kanonische-form]]
43+
[discrete]
44+
== *Mikado-Methode-Rezept (kanonische Form)*
45+
46+
1. Hier beginnen: Das Mikado-Ziel aufschreiben.
47+
2. Das Ziel oder die Voraussetzung naiv implementieren.
48+
3. Treten Fehler auf?
49+
* Beispiele: Compilerfehler, fehlschlagende Tests, Laufzeitfehler, kaputte Builds.
50+
* Wenn *Ja*, gehe zu Schritt 4.
51+
* Wenn *Nein*, gehe zu Schritt 9.
52+
4. Unmittelbare Lösungen für die Fehler finden.
53+
5. Die Lösungen als neue Voraussetzungen in den Mikado-Graphen einzeichnen.
54+
6. Alle Änderungen rückgängig machen und zum letzten bekannten guten Zustand zurückkehren.
55+
7. Die nächste zu bearbeitende Voraussetzung auswählen.
56+
8. Gehe zu Schritt 2.
57+
9. Ist die Änderung sinnvoll?
58+
* Beispiele: verständlich, intern konsistent, sicher beizubehalten, für sich allein nützlich.
59+
* Wenn *Ja*, gehe zu Schritt 10.
60+
* Wenn *Nein*, gehe zu Schritt 7.
61+
10. Die Änderung committen.
62+
11. Ist das Mikado-Ziel erreicht?
63+
* Wenn *Ja*, gehe zu Schritt 12.
64+
* Wenn *Nein*, gehe zu Schritt 7.
65+
12. FERTIG!
66+
3667

3768
[discrete]
3869
== *Verwandte Anchors*:

0 commit comments

Comments
 (0)