I’m sure you know the feeling; an innocent-seeming refactoring causes little waves of disturbance all over your system and all of a sudden lots of your tests are failing, and you can’t seem to to really get a handle on it. So yesterday after a couple of hours of hard slogging with no net gain, I threw up my hands in disgust and mowed the lawn. Halfway through it, I realized the refactoring was subtly wrong at the core, and when I came back in I made one little shift and was able to delete lots of special-case code and the tests passed. Problem is, I hate mowing the lawn.