I once argued hard for a full rewrite. I won the argument. I was wrong.
The system was old, the code was bad, and I was certain the fastest way forward was a clean one. What I never asked was why it was bad.
Most of the ugliness wasn't bad design. It was scar tissue — years of patches, each one written the morning after something broke at 3am. Undocumented, unlovely, and load-bearing.
We deleted all of it. Then we spent the next year re-learning, in production, every lesson those patches already encoded.
Bad code and hard-won code look identical in a diff.
So now I ask one question before any rewrite: which of these lines is somebody's incident report?