Sometimes I'll take a little short-cut, because an innocuous little hack that adds a constraint or assumption seems like better value than going the long way round. Sometimes the design changes as you figure out new ways the product can/should work to be cooler, and old abstractions are no longer useful, or new abstractions become useful, or data that lives over here now needs to get aaaallll the way over there, God Dammit. All abstractions leak, and the first design is never right.
And maybe it's fine, because I wrote it all and I can rewrite it quickly enough, but in the real world we can't just go and rip up that code because we don't have the muscle-memory for it, and because of Chesterton's fence.
Maybe good code is code that can be deleted easily, or rewritten without fear. Maybe it is code that has been rewritten enough or has survived long enough to embody some kind of wisdom. I know that it is simple, and that it makes the life of its user simpler.