I've always been the one to dive into problems and solve them without thinking about how difficult they are but recently I've been running into this failure mode where many of the problems I work on involve using old tools that are cumbersome to work with. The result is that it takes much longer to deliver my work compared to those that work on packages with newer tools (I'm talking about native AWS lambda, s3, dynamo, etc) and sometimes I wonder if I'm doing what's best for my career.
Some cumbersome tool examples include
My company has at least acknowledged the issues with the above first two bullets and has slowly started deprecating those tools. Oftentimes the senior and mid-level engineers work with newer tools and therefore aren't as familiar with the older ones, which is fine. I could just avoid working with these packages altogether and only work on the packages that involve the shiny new aws tools but I'm not sure if that mentality is what's best for my career.
I have a couple of thoughts here, though they are based on my own time in Amazon as SDE1/2.
Generally, I would NOT worry getting the chance to work on new technologies or new tools. Instead, I would index on areas/packages that (1) critical to my team's success (2) yet to be owned by another engineer.
In Amazon (and other big tech too), the key to be a successful SDE1 on promotion track to SDE2 is ownership and independence.
That means, being the go-to person of a high-impact area that no one else wants to touch (maybe due to its tooling or technology) is extremely helpful for your own performance and career growth to SDE2, as that typically gives you the room to exemplify ownership and independence.
When I was SDE1, I was tasked to onboard onto a Javascript Library as replacement for the departing SDE2 who owned it. This thing was gnarly. It was written in vanilla ES3 javascript (this was in 2017 and ES3 was released in 1999), with no concept of classes, and most frustratingly of all, it was deployed to production by... manually issuing an update request to the server hosting it.
It was a huge source of pain for myself and caused sev2s frequently, and almost nobody wanted to touch it because it was vanilla javascript.
But I took it on and became the go-to person for it. It was really painful the first few months, and then I got comfortable with its internal logic and these helped me address some of the sev2s. Then I realized a huge problem was the manual, human-driven deployment process so I managed to fit the existing process into an automated release pipeline that reduced deployment outages to nil. Eventually a colleague and I migrated the thing to ES5 and even added unit tests! It was really easy to prove my impact during performance season because I became an expert of a critical system in my team.
The point here is that it's more important for you to find important areas to own rather than looking for the newest tech or tooling. Once you've spent enough time with it, find ways to solve the painpoints you are facing - after all, you will have become an expert, and your work will go a long way to helping others in your team.
I really like Kuan's advice around "When life gives you lemons, make lemonade". A lot of engineers see pain as something bad; a big mindset shift I see a lot of engineers make to really start leveling up is seeing pain as opportunity.
At a Big Tech company like Amazon, there is always going to be legacy jank like what you described. I was more than familiar with it back at Meta. The instinct here shouldn't be to try and avoid it, but to ask yourself these questions to gauge the opportunity:
You don't need to figure out these questions on your own either, especially as an SDE 1. Talk to your manager and tech lead to see what they think.