Make the change easy (warning: this may be hard), then make the easy change1
At the time there was a lot of “design is subjective”, “design is a matter of taste” bullshit going around. I disagreed. There are better and worse designs. These criteria aren’t perfect, but they serve to sort out some of the obvious crap and (importantly) you can evaluate them right now. The real criteria for quality of design, “minimizes cost (including the cost of delay) and maximizes benefit over the lifetime of the software,” can only be evaluated post hoc, and even then any evaluation will be subject to a large bag full of cognitive biases. The four rules are generally predictive.2
Reflection is the ultimate habit. "How'd that last hour go? What could I have done better? What do I want to try next time?" Reflection leads to all the other habits. [...] When I wrote The Smalltalk Best Practice Patterns, I would literally only code if I was following a pattern. If I knew what I wanted to type but I didn’t know the pattern, I would write the pattern (couple of hours) and then type the code (five seconds). It was incredibly frustrating, but after a week I knew why I was doing what I was doing.3