How do we get to those big balls of mud that nobody wants to touch? One shortcut at a time.
Everytime you take a decission without thinking. Every time you add a conditional or a type instead of reusing or extracting that functionality. You add a knot to the yarn.
Pretty soon you have a huge file full of extra cases and conditionals that you don’t know what are doing or why are there and you are afraid to touch.
The only way to be concious of the problem is with tests.
That’s why postponing decissions is good and having tests is necessary.