1. The basics of the Mikado Method
Chapter 1. Meet the Mikado Method
1.1. What is the Mikado Method?
Chapter 2. Hello, Mikado Method!
2.2. A slightly more complicated change
2.3. Making the code configurable
2.3.1. Get going with the Naive Approach
2.3.2. Revert when there are errors
Chapter 3. Goals, graphs, and guidelines
3.1. The Mikado Method guidelines
3.1.1. Always start with the goal
3.2.1. The goal—business or technical?
3.2.3. Prerequisite—step or decision?
3.3. Tips for using the Mikado Method
3.3.2. Follow the flow of the code
3.4. Relation to other thinking models
Chapter 4. Organizing your work
4.2.1. Working in different constellations
2. Principles and patterns for improving software
Chapter 5. Breaking up a monolith
5.1. The code of an online loan institute
5.2.3. More LoanRepository duties
5.3. Getting to the true leaves of the graph
6.1.1. Code that does too many things
6.1.2. Code that isn’t stable in the face of change
Chapter 7. Common restructuring patterns
7.1.1. Group common prerequisites in a grouping node
7.1.2. Extract preparatory prerequisites
7.1.3. Group a repeated set of prerequisites as a templated change
7.1.4. Graph concurrent goals with common prerequisites together
7.2.1. Merge, reorganize, split
7.2.2. Move code directly to a new package
7.3.1. Update all references to a field or method
A.1.1. Acceptable debt builders
A.1.2. Unavoidable debt builders
A.2. More about technical debt
A.3.1. Third party—technical and imposed
A.3.2. Bigwig—market and imposed
A.3.3. The boardroom—market and incurred
A.4. Attacking the technical debt source
A.4.1. Get to the bottom of the problem
A.4.2. Third party—create defensible space
A.4.3. Bigwig—probe and prepare
Appendix B. Setting the stage for improvements
B.1. Before your restructuring
B.1.1. Shorten your feedback cycles
B.1.2. Use a version control system
B.1.3. Use automated refactorings
B.1.6. Merge frequently with the main branch
B.1.7. Scripting languages to the rescue
B.1.11. Consistency first, then improvements
B.1.12. Learn to use regular expressions
B.1.14. Prepare yourself mentally
B.2.1. All things are relative
B.2.3. Create an opinion about what good code looks like
B.2.4. The road to better often runs through worse
Appendix C. Dealing with dynamically typed languages
C.1. How to get feedback in a dynamic environment