I’ve noticed over the years I’ve spent programming that there’s a counter-intuitive metric for how well your architecture matches the problem you’re trying to solve and the programming environment you’re working in: the more code you can throw away the better. That usually happens because you realize there’s another way of approaching some issue which you hadn’t seen initially.
Today I set a new personal record for this: I tossed about 70% of what I’d written over several months. I’ve still got some work to do to replace completely all the functionality I need. But the new direction is vastly simpler, more robust, and easier to understand than what I’d written before.
Which may point to a more general life lesson: when getting where you need to go involves a really complicated route it’s probably time to step back and revisit your approach :).