I feel exactly the same way. But one thing I do think I have (and you do too, obviously) is taste. I can look at my code and see it as good or bad (most of the time bad). That means I can keep striving to make it good. And my eye for what is good and bad keeps maturing so when I go look at code I wrote two years ago that I was pretty proud of, I see bad code now.
Without the ability to see that your code can and should be better, your work ethic cannot kick in.