It is a legit question, I'd finished my degree in 2016, it was a degree more focused in the job market, so I haven't had strong classes about CS fundamentals. I'm working as a backend engineer for about 6 years, currently I'm ok with my salary and have no plans about applying to FAANG companies. - I have some understanding about basic DS like Trees, Stacks, Queues and what are the benefits and drawbacks of using each one, but never worked with Graphs, and have no idea what is a Trie or a AVL tree, neither how to implement those DS. - I understand what's the idea of Greedy Algorithms, Divide and Conquer Algorithms... But I don't know which sorting algorithms are the best, how to implement then (just bubble sort :/). I'm also quite bad at Leetcode style challenges. Usually I expend my time studying about system design and not DS/Algo, my question is if I should invest some time learning those things, if it's really helpful in turning me a better developer or if it's really useful for those who are targeting interview in FAANG companies.