I'm trying to approach it from a slightly different angle (although pmiller2 alludes to it):<p>When you know that a language is absolutely the wrong choice for a problem, you are probably there.<p>When you can hold a problem in your head, use two different programming languages to shape a solution, and intuitively understand - in a way you can clearly communicate at least to yourself - which one is best suited to the situation, then you can consider yourself an expert.<p>Mastery is just a path.