I am a senior software engineer working primarily in Python. I consider myself a pretty good coder, being able to solve problems and deliver software on time at the necessary SLA. I understand and have worked with the major Python web frameworks such as FastAPI, Flask, and Django.
But I see a lot of things lacking in myself. I am not able to handle algorithms very well, nor am I able to efficiently use design patterns.
I see that all of these skills are part of FAANG interviews and much sought after.
I also understand that there is Leetcode, HackerRank, CodeSignal and interviewing.io that help better ability.
What is the best way one can upskill self given the many options?
First thing's first: You shouldn't feel bad at all about not being able to handle algorithms well. Data structures and algorithms (DSA) are very much a parasitic activity and not indicative at all of the quality of a software engineer. FAANG only requires DSA for interviews, and once you get in, you won't be using them on the job 99.9% of the time.
I also understand that there is Leetcode, HackerRank, CodeSignal and interviewing.io that help better ability.
These are all interviewing tools. You should only be using them if you are actively interviewing. They help you pass interviews, not actually get to the next level as a software engineer.
What is the best way one can upskill self given the many options?
Use Taro and not LeetCode! Here's a bunch of resources on how to genuinely improve as a software engineer:
Upskilling to the next level...
If the next level concretely means getting promoted at your current company, then I heavily recommend these:
neetcode.io helped me a lot