As I continue to mentor new and seasoned developers in their growth... Scratch that... As I continue to grow in my own career, one thing I've learned to embrace is the idea of the "generalized specialist" or the T-Shaped developer.
What exactly does a T-Shaped developer look like?
For most of these, I have a good general knowledge of the technology at hand. This is a good thing. It helps me keep abreast of new (or returning) paradigms in software development. I can also do a better job at evaluating the right tool/platform/framework for a new project since I can compare and contrast. Technology is changing at such a rapid pace. When I first started programming professionally, there was no Azure, PostGIS, Jenkins, and other things I work with now. Generalization is a good thing to have in this industry.
By the same token, having a specialty is important as well. Some projects require a deeper knowledge of the platform that you are working in to be successful. Having a specialty allows you to mentor others, which indirectly will help yourself. Often when you have a deeper knowledge of a given technology, it will help inform a decision or find a solution in a different technology, since it is often a matter of semantics over syntax. Being a specialist can also set you up nicely for the "big project" since you are the "go to" person for the framework targeted for it.
For me, .Net is my specialty. I've been using that as my primary framework for building apps for nearly 20 years now. It is what helped me land the job at the company I've been at for almost 10 years, and I've been able to build some really cool stuff with it. I've also been able to mentor others at our company that are growing in .Net, and write a few blog posts along the way to provide insights to others.
When you map out your skills an measure your experience with them, most likely you'll start to see that you're a "generalized specialist". This may be called a "specialized generalist", but I always seem to get this mixed up 8^D. When you measure your depth of knowledge in each technology/framework, most will be shallow (or wide), and one (or more) will be deep. There you find the T-shape that maps out your skills.
As you think about goals for this coming year, I would encourage you do make two goals:
Find something new to learn, to widen your experience. This may be a new tool, a new platform, a new framework, maybe even a new skill. For myself, I want to learn Q#. I've been very interested in the quantum computing realm for a while now and this will expose me to that.
Find something new to learn that will make you even more experienced in your skills. Maybe that's mastering Entity Framework Core or going through a book of Advanced C# techniques. For myself, I'm still a little undecided. I believe I would be best suited to go deeper in my leadership and mentoring skills, but a practical way to do that still eludes me. Nevertheless, I'll figure out something.
Hopefully this gives you some insight and inspiration into how to grow personally and professionally. Over time you'll find that your T shape looks a little off, because you'll have several things you've gone deep in. Then you get to repeat!