Junior, Medior, Senior, and any job title for that matter, it's all relative to what your employer thinks you're worth to him/her/customers. At my previous job, which was my first professional job where I sticked for 6 years, I went from junior to senior software engineer pretty fast. I believe it was 2 years junior and 1 year medior and senior after that. When I switched jobs, I went back from senior to medior for a year and now I'm back to senior. To be fair, I don't care about the job title. I simply love the job, because of the things I'm developing and learning new stuff every day. But ofcourse, with the job title... comes the pay. Which helps a lot in life in general.
But just as @thinksincode, I fear I know to less of everything. There is way to much you could possibly learn in software engineering and the world around it, and life in general. I'm not good in life in general, I've skipped that for 30 years and trying to get better at that now. But software engineering, it's not a breeze and I hope it never will. Because if it's a breeze, anyone could do it, maybe even a robot, I don't want to be a robot, I cannot be a robot. One summer I worked at a school books distributer, verifying books for damages. I was hired to do it for 4 week, but I had to quit after 1,5 week or so. Because my mind was getting mad, destructive and simply crazy from doing the same all day without the need for creativity or problem solving. Software engineering is problem solving at its best. I think software engineering is one of the hardest jobs there is, not physically ofcourse as the desk is our friend, but mentally all the more. Because we can't do our job by learning one single thing or have one specific expertise. We need to know about the whole product cycle, from customer needs to dev, beyond pro, and all the in between. All this is spread out over tens to hundreds of tools, languages, frameworks, programming styles, methodologies, architectures, environments, OS', networks, etc. of which we, as software engineers, have to know something but can never know everything. And there is always something new, something better, something shiny.
As I see it, we're all juniors, no matter how long we're in the business. And I think that's the way to do it, atleast that's how I'm approaching it. You've some areas of expertise, people come to you for answers on problems in those areas. But outside those areas, see yourself as a junior, act as a junior. Better yet, act as a junior even inside your areas of expertise. Why? Because as a junior you were curious, interested, you wanted to learn new stuff, do new stuff. If you always act like a junior, you're always learning and seeking for new learning possibilities, keeping up-to-date with the latest stuff. Of course you don't have the time to learn everything in detail, but keep you ears and eyes out on new stuff. Go to conferences and meetups to keep up to date, get intro's of the latest and greatest. And when the time comes to really make use of some of those bits and pieces, learn just enough to do your thing and give your opinion or give advise. The rest is learning on the job, as there's is simply just too much to learn.
And a good way to keep that junior spirit, is teaching. Pair up with anyone who has a question, instead of throwing the answer over the wall. Give presentations and workshops on your expertise areas to anyone who wants to listen. Spread your knowledge the way you want to gather the knowledge from others.
@thinksincode I hope this helps you, even maybe just a little bit. I must say it feels good for me to write this down. And I probably got a thing or two cleared up for myself also, just thinking about this.
And @techmama, find the job that lets you do what you love. If you're in consulting now, maybe switch to a product company, or if you're frontend developer, try backend. Find out what you love to do, and find the job that offers that. You say you have no strong skills in patterns, architecture and scaling applications, but what ARE your strong skills? Why would you want to have strong skills in patterns, architecture and scaling? Or if you really want those skills, find the job where you can grow to learn those skills. The better development jobs are not interested in your current specific development skills, but your skill to solve problems, to learn, to grow. See facebook, google, twitter, they don't ask for developers with specific programming language skills or awesome scaling application experience. Those things are mentioned as benefits if you have them, but more than that they are just looking for good problem solvers and learners. If you are a good problem solver and learner, you can learn the rest on the job.
And if you love your current job, but you think you could/should be seen as more than a junior title. Ask your team/manager why he/she believes you are a junior, and what you could do to get higher up. I don't know where you're from, or the company culture your in, but I believe strongly that these are questions you should always be able to ask your team/manager.