I find that the best way to evaluate yourself is to look at your code all the time and think critically. Be careful not to overdo it though, maybe take a closer look in between projects or in some interval is fine.
What should you work on? What do you find interesting? I think you're a lot better off working on something you find interesting than forcing you into something that you don't find thrilling. As always you should do stuff you're not comfortable with: do some low/high level stuff, try a new framework or do something you think is hard.
I wouldn't obsess too much on how good you are compared to others, there's always someone better, period.
Instead focus on your relative improvement. If you read your old code (which you should) you should think "this is awful, I could write something better" or at least "this is ok... but if I did it this way it would be much better".
And finally read code, read books about code, try to code with other people and try to make something useful.
Some book tips:
The Pragmatic Programmer: Read this!
Introduction to Algorithms: If you don't know algorithms, here's a nice book for it
Effective Java, Effective C++, More Effective C++: Just good practices