I agree CS fundamentals has helped me think differently when it comes to solving problems. The reality in my point of view is that most developers that I have worked with don't keep up to date with currently tech and frameworks that they work with. For those who do then going deeper on fundamentals should be beneficial.
In regards to topics, what do you consider are the main ones for CS fundamentals?
yea most developers you work with don't value CS fundamentals, and this is a big part of the problem. it really only matters if it's a team effort. this is how CS fundamentals kinda backfire. you start stepping on everyone's toes and soon they want to crucify you. it's an uphill battle when everyone isn't on the same page, and sadly, few devs are on the same page.
I am planning to write a separate post on this, but here is what I think is important:
hashtables, trees, BST, sets, stacks, queues, heap, graphs, DFS, BFS, recursion, searching (binary search), sorting, bitwise operation. You wouldn't implement most of them these days, but many types in your standard library rely on them (e.g., std::map uses BST under the hood - if you know this and know BST, you immediately know the runtime complexity of basic operations like add, find, remove)
Now, depending on your work, you may need to learn other algorithms - frontend work requirements are different from systems engineering.
I agree CS fundamentals has helped me think differently when it comes to solving problems. The reality in my point of view is that most developers that I have worked with don't keep up to date with currently tech and frameworks that they work with. For those who do then going deeper on fundamentals should be beneficial.
In regards to topics, what do you consider are the main ones for CS fundamentals?
yea most developers you work with don't value CS fundamentals, and this is a big part of the problem. it really only matters if it's a team effort. this is how CS fundamentals kinda backfire. you start stepping on everyone's toes and soon they want to crucify you. it's an uphill battle when everyone isn't on the same page, and sadly, few devs are on the same page.
I am planning to write a separate post on this, but here is what I think is important:
hashtables, trees, BST, sets, stacks, queues, heap, graphs, DFS, BFS, recursion, searching (binary search), sorting, bitwise operation. You wouldn't implement most of them these days, but many types in your standard library rely on them (e.g., std::map uses BST under the hood - if you know this and know BST, you immediately know the runtime complexity of basic operations like add, find, remove)
Now, depending on your work, you may need to learn other algorithms - frontend work requirements are different from systems engineering.
Here is the first post on this: - When was the last time you used this? - Part 1: Data Structures
And the second one When was the last time you used this? - Part 2: Algorithms