I am currently on a team where I am assigned to work on a different area of the product(s) in each quarter as per the priorities of the leadership for that quarter. This has resulted in me gaining a good full-stack overview but not much depth on any specific components/technologies. I've been on this team for around 18 months right out of college but 80% of the technical work I've delivered till now has just been pattern-matching based on the existing code and infrastructure, although the outcomes have been impactful for the business. I feel like I'm not learning anything technically significant beyond company/product-specific knowledge which are not transferable to other companies. When I check out job postings from other companies for my level of experience, there always seems to be a focus on having expertise in some technology, which I can't confidently claim. This brings me to the following questions:
1. Should I stay at my current company? My career growth prospects seem great here as I have a very good reputation in my team and sibling teams, and have gotten very good feedback and visibility from managers and seniors. I also work as the lead developer for a legacy product which is not that robust and has hard-to-reproduce customer bugs, but the leadership has taken a renewed interest in adding new features to it, resulting in more potential scope for me. The main downside is low technical-learning as mentioned above, and I've heard this same remark being mentioned by senior engineers who have joined from other companies as well.
2. If I decide to switch companies, how do I bridge the lack of technical expertise that's expected for my level? When a recruiter views my resume, the technologies that I've used at work and as part of side-projects are all over the place, without a clear specialization. Although I'm confident that I can pick up these stacks without trouble on the job if needed, I feel underconfident in them in an interview setting.
It depends on what your goals are and it seems from the post that your goals are here to learn. I think there is somethings to learn from leading and maintaining a legacy product but it is far and far less limited in focussing on something and developing something from scratch. I would changes teams or change project or change company if I have to in your shoes.
Think about how much power you have in this team. If this legacy project depends on you and leaving this company will be a huge cost for the company, then one way to approach is to ask for favours in return for your staying here. The favours can be 20% time for you to work on emerging projects of your choosing, salary bump, bonus etc. Many people don't ask and don't get it.
Back to your original question. In today's fast-moving world, it can be dangerous to be the dinosaur that does know the latest technologies, processes, and trends.
Our parents used to work for a company all their lives. Last two decades, that shrunk to 3 to 5 years on average. Now, time with a company is shrinking even more; the reason is the fast-moving projects, technology updates, and other dynamics.
If it is hard to find another job for you right now, then you should cover that base and overcome this shortcoming. Don't rely on your current company to keep you forever. Build capacity to get a new job, and then stay here on a free will of working here instead of working because you don't have any other option.
Thanks for taking the time to respond @Touseef and @Intuit. Based on what you've suggested, it makes sense to focus on building my technical depth on my own, outside of work hours, and start looking for other opportunities.