What do you think about switching tech stacks vs becoming an expert in one stack? I am a backend Java engineer, and have solely used Java since I've started my software engineering career about 2 years ago. I don't know whether I should explore other tech stacks while I'm young, or instead focus on becoming a Java expert, given that I enjoy working in Java.
So I recently made this change after becoming an expert in the prior(excellent company, more opportunity, money). If you’re in an organization that will give you the rope to get up to speed then I don’t think there’s an issue. If you don’t *know* that’s true then I’d be more hesitant.
After a while you’re going to realize most programming is incredibly similar just with some different bells and whistles between stacks.
At this point, I would say it's better to have a bit more experience across different tech stacks. I say this bc tech is evolving soooo fast that it's easy to go obsolete otherwise, so having a few aces up your sleeve is always gonna be beneficial
I'm a Jill of all trades (i.e. I have a ton of breath, accompanied with depth in select areas), and it has served me well in my career. I would recommend thinking about a few things when deciding:
1. What are your long term career goals? Do you want to stay purely technical, or would you rather move into management / technical leadership at some point?
2. How much do you enjoy the learning process? Is it fun or an energy sink for you?
3. How much flexibility do you want when looking for new opportunities in the future?
Becoming an expert in a single language/knowledge area is fantastic for those who want to stay purely technical and know what tech stack they want to use. Generally this works well if you plan to stay at the same company for a long time or with the same customer.
Building breadth is essential for technical leadership - high level knowledge of multiple technologies helps you make informed decisions about which ones to use where and enables you to serve as a translator between your technical teams and your higher level management.
Keeping up with a lot of different stacks requires a strong personal investment in continual learning and upskilling. So if learning new languages/technologies is hard for you or flat out not fun then you may want to go the expert in a narrow scope route.
Technology has and will change over the years. So if you become expert at one thing to the exclusion of others then you could find it harder to find jobs as time moves on.
That's really going to depend on how quickly you learn and on how deeply you want to get into the tech before moving on. I usually have spent a few years on the first tech in a specific category and then a bit less on additional ones since the knowledge builds on the related tech. As an example, I dove deep into AWS for about three years when I was first learning cloud. I now have seven years of cloud experience and have added working knowledge of three additional cloud providers (GCP, Azure, and OCI) while continuing to deepen my knowledge of and experience in AWS.
You should make a switch in the interest of your career for a few reasons:
the only constant is change, maybe java won't always be so popular. Maybe Java will be like fortran one day. Only existing projects with a handful of legacy engineers maintaining them. Do you want to get left behind like that? What about all those years you spent mastering Java.
breadth of skill makes you better all around. The more languages you learn, the more you start to see the patterns that transcend them all. Instead of java being synonymous with coding. It's one of many tools to accomplish a task.
Tech comes and goes, I worked in one stack for 10 years, and now I'm working in another one. It doesn't generally take long to learn something, and you should expect to have two or three big transitions over the course of your career
Planing the same but to transition to Java stack
IMHO expertise in one or a few interlinked skill sets is always preferred to dabbling around: you build proficiency, depth, real skill and craft around One main language/framework that allows you to express your creativity while
Writing software, and this is what makes you productive and worth the package to an employer.
Thanks for your response - seems to be an opposing view to the other responses. Would you say you answer applies to people who want to transition into leadership roles in the long run? Also, how do you define expertise - would you say 3-5 years is enough to develop expertise in a particular stack?
I would say it’s usually easier to change tech stacks earlier in your career. If you’ve gained a couple of years in several stacks it shows you have a broad interest in software engineering, are not too biased towards particular stacks and are willing/able to learn new things quickly.
If you do this later on in your career after always having used the same stack, you’ll heavily depend on who’s hiring you and what they are looking for. For many the safer choice will often be to go for a senior engineer who already proved they know their stack compared to a senior engineer who wants to switch to a stack in which they haven’t proven anything yet. There will be exceptions though, when they rather hire you for your capabilities of adapting, learning quickly, your motivation and your non-technical skills. But that also depends on the person they are looking for such as “a senior software engineer” or “an expert in framework x” and other factors like how big the team is.
If you have that possibility to do it within your current company that’s certainly a safe bet to build up some experience first. But don’t be afraid to step outside if the comfort zone either and apply at other companies, it won’t necessarily come with a drop in pay. Good luck with whatever you choose to do!