- familiar
At one point was either competant or proficient with language though has been a while since using and would need a couple days working with it to be comfortable with nuances/syntax specific to language.
- semi-competent
Able to put together code to get the job done though code would not be optimal nor likely to be taking advantage of any of the language features.
- proficient
Occassionaly searching Google and have documentation readily available; have a good understanding of what the code is doing
- excellent
Can code without Stack Overflow and minimal referrence to documentations
- expert
Can code this in my sleep while also dreaming about how I would spend lottery winnings. Understands the internal of the language and can spot a majority of bugs in code without debugging.