I don't think that "novice" is really the correct way to describe someone, rather depending on how experienced someone is. You can really only ever gain mastery over certain aspects of the field, and will never be in expert in all things development related - doubly so, with how the tools, products, and platforms are continually changing and advancing. It is even hard to become an expert within a person's given language of choice in some cases, because of the immensity of the platform.
There is no number in terms of experience, in my opinion, for when a "Junior Developer" becomes a "Mid-Level Developer" or "Senior Developer". Instead it is the ability to learn from experience, focus on weaknesses, the desire to improve, and the general aptitude of the person in question.
I had a very wise friend who worked for IBM in the 60s, primarily doing a lot of COBOL work at the time. Something he said has always stuck with me and remains true. "Anyone can take programming courses and learn about a language, but people are either logical or they aren't. The people that aren't logical and do not have problem solving abilities can remain a Junior all their lives and be complete content with that."
For that reason, when I am interviewing candidates (on top of the experience I have gained from talking to a variety of candidates) I do not qualify or disqualify anyone strictly on the basis of how long they have been doing something. Instead, I look for how well they have done something and what they have learned from doing it.