I used to think I was a good programmer. Then I started to learn about how much I didn't know, new techniques and frameworks and languages, and then I saw that I had a lot to learn.
Ten years later, I've learned a lot - but I've also discovered even more that I don't know and that I can improve upon.
So, I consider myself "average". In my domain I'm pretty good, I can crank stuff out that works well, is easy to understand and set up, has tests and documentation, etc., but there's a really, really big world out there.