That is why I am always so hesitant to allow code that should be cleaned up in a future task. I know that sometimes you have ship something NOW but it always hurts.
True, that. Reminds me of the trap I've build for myself in many areas of my life. I grew up poor so even when I have money, when I see something expensive I want, my first instinct is "could I learn to make that myself?". I'm very good at making things, so the answer is usually yes, given a decent chunk of time to learn.
Unfortunately, at risk of sounding like a humblebrag, I am now too good at too many things. Because I, in theory, could make the thing and already posses the tools and knowledge to do so, I'm even more averse to buying the thing. However, the better I get at Stuff, the more limited (and expensive) my time is.
It's the same liminal space of "the plaster could be removed, but it's currently not worth it.
Good code does not equal to well thought-out solution.
I was directly responsible for many projects, and during analysis we always had questions about features where client said 'naah, never gonna need that'.
And I almost always added the foundation for such features, and almost always it was necessary within a year.