Ask HN: Studying DS/Algorithms will turn me in a better Developer?
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.
5 comments
[ 3.6 ms ] story [ 22.7 ms ] thread> so I haven't had strong classes about CS fundamentals
I wouldn't worry about that. Most developers either treat their undergrad CS education like a weak trade school they don't take seriously, or are preparing for further education.
Honestly, it sounds like you are shopping for buzzwords in preparation from some future job interview. I would instead focus your energy on solving hard problems and building valid experience.
Of course, if you don't want to work at companies that do leetcode style interviews, there is no point in going much further than knowing data structures well and knowing basic algorithms (probably learn a sort better than bubble sort though... merge sort is pretty easy). You should know about trees, but I really doubt if you are applying for a company with sane hiring practices they will ever ask you to implement auto balancing trees.
In my experience interviewing with non-leetcode style interviews, I did get a lot more language trivia. For example, for a position primarily using Java, they ask about polymorphism, final vs finally, stuff like that. On onsites the focus is a lot more on STAR, past experience, and designing things. I personally actually like the former style of interview :)
If it will make you more comfortable with the world to understand how popular sorting algorithms work, it's easy enough to learn that. They're all really simple, just a quick dive into Wikipedia. You'll be like, "Oh, that's what merge sort is."
You have worked with graphs. Git history is a directed acyclic graph.
Could you have made Git? Is there software you can't make right now because you're weak in data structures/algorithms type stuff? If so, then improving your ability in that department will make you a better developer.