I am good at Systems design. It comes very naturally to me when compared to DSA in that I exhibit systems-level holistic thinking.
Could this be an indication that I should play up to my strenghts and think about becoming a Product manager or architect as opposed to struggling being a developer?
I am good at Systems design. It comes very naturally to me when compared to DSA in that I exhibit systems-level holistic thinking.
I would say that this higher level thinking is more important as you progress in your career. The reason is that your scope broadens to multiple teams, so you need to know how all of the teams and services interact with each other to get your desired outcome.
Unless you are actively interviewing, you shouldn't need to worry about your DSA skills too much. But, if you are interviewing right now, I would try to adopt a growth mindset around your ability to improve your DSA skills because they can definitely be improved if you put the work in.
DSA (data structures & algorithms) is a purely parasitic mechanic that isn't representative of actual software engineering - It's something you pick up just for interviews (specifically at Big Tech) and discard immediately after. It's also something that can be learned with enough time and the proper mindset.
My next course will be about data structures and algorithms, but in the meantime, you can go through this: [Masterclass] How To Ace Your Big Tech Interview - Data Structures And Algorithms
Another option is to try to dodge DSA interviews altogether, which is tricky but possible. There are many great companies (especially among startups) where their interview loops don't have DSA or are DSA-light: "Which good companies in the Bay Area don't do LeetCode style interviews for SWE positions?"
Lastly, I don't think system design necessarily sets you up well for being a PM as that role isn't technical at all while system design is. Architect is also tricky as I feel like that's a more traditional role that won't exist at many modern companies (e.g. Meta has an explicit ban on "architect"-style engineers).
What about Technical PMs? Doesn't that role require being technical? Same with the Technical Program Manager role?
So what are the "architect"-style engineers considered at meta? Are they plainly called staff engineers? and what makes an engineer "architect"-style? Is it the ability to not code?
From my experience, PMs are almost never technical. PM roles rarely require engineering experience, and PMs that are technical (usually ex-engineers) just have that knowledge as a nice bonus. This is true across pretty much every company in Silicon Valley.
Traditional "architect"-style engineers are those who never code and focus purely making high-level technical decisions (i.e. telling the more junior engineers what to do). At Meta and other FAANG companies, doing architecture is just referred to as system design. It's not a role and is instead just a skill (one of many) that engineers are expected to have as they become senior. At Meta, you need to start doing system design as you grow from mid-level to senior as I explain here: https://www.jointaro.com/course/grow-from-mid-level-to-senior-senior-l4-to-l5/system-design/