Users. Just kidding.
Unless you're a complete imbecile, you learn things as you work. What this means is that code you wrote a year ago now looks terrible, and what's more you know exactly what's wrong with it and you can't wait to get started on fixing it.
However, there is never time for this. Instead of fixing underlying crappiness, the only thing end-users want is new features, new deployments, new customisation. Nobody will ever understand why you're spending time to test rewritten code that was tested and working exactly the same way (but slower and less elegantly) two weeks ago.
The result is that any code for which you are entirely responsible throughout the lifecycle and which was written in an environment where time is money will always come back to haunt you.
It is not that I have a problem with acknowledging mistakes. It is not that I would rather forget about the code and leave users hanging. It's seeing what is wrong, knowing how to fix it, and being prevented from doing so.