The code you write today will suck tomorrow, and it should.
So I've learned this a lot lately when writing Xamarin projects especially. Applications I've written at the time I thought were clean and good. Fast forward 6 months or even a year, and I'm appalled by the decisions I made. And that is okay.
Why? I and yourself should always be learning. Maybe it is language advances, better error handling, or features you learn. All these things or similar ideas are the reason all of the code we write should be considered as terrible today.
But Dave, my code is perfect. You sir or madam are full of shit and I bet you got a lot of participation trophies. Have you ever finished a function that works, then rewrite it to find it is cleaner or maybe even faster? I have, many times.
We as developers have to be humble. Accept that there is things we don't know, but be ready to learn more or see a different view.
To be a good developer, accept that your code of today or yesterday is not as good as the code you write today.