Evaluate code after a period of time
On many occasions I have written code that I thought was really good, after some time I have gone back and checked the same code and thought the opposite. I've looked at it and had thoughts of how could I have written that! I'm a lot better now.
So why does this happen? Why is it that over time we think that our previous code that we wrote, is crap. I'm thinking it is familiarity. Whilst writing code, we're constantly reading and going over it, therefore making it easy to understand. Whilst doing this we tend to think that it is well written code for the fact that well written code is easy to read. I have many times thought that the code that I was writing was awesome and it was only due to me constantly looking at it.
If you see code that you wrote a month or more ago and you think it's crap, it probably is and always was. Only after time has passed can a true evaluation of ones skills be made. Next time you evaluate how your skills are, don't look at the code you just wrote, but open some files that you haven't seen for a few months, you will then realise you're not as good as you think you are.