Everytime I thought I was good at programming in a particular language, six months later I was convinced that at that time I sucked at it, and now i was good at it. So I guess it is a relative term. Maybe it would be better to call yourself "good enough to do Y" where Y is a particular project in that language.