> But also have been feeling out of my depth recently, perhaps regretting my lack of solid CS background.
I have a CS degree, and honestly the biggest practical value I got out of it was learning things that were cultural signals that let me part of the programmer "in-group" - I can talk about misc. cs stuff that will resonate with other programmers that have had a similar background.
In terms of things that I think are actually valuable like skills that help build things and write better code, there are much better alternatives than a universty degree. Just building things in my spare time and building things the way I want has taught me so much more. Sure, looking back, there are some things that I value highly that were taught in university, but it the signal-to-noise ratio was too low, to the point of being useless.
So I think the best thing anyone can ever do to improve their knowledge in software is to just build something that other people use.
If you're worried about fundamentals, I would say just shore up on some basic data structures (linked lists, hahsmaps, trees, maybe some graphs - this pretty much covers 99% of use cases). Rather than learning these as theory, I would strongly recommend just reading wikipedia, and writing code with them in a functional language like haskell. And also maybe some leetcode questions.
I have a CS degree, and honestly the biggest practical value I got out of it was learning things that were cultural signals that let me part of the programmer "in-group" - I can talk about misc. cs stuff that will resonate with other programmers that have had a similar background.
In terms of things that I think are actually valuable like skills that help build things and write better code, there are much better alternatives than a universty degree. Just building things in my spare time and building things the way I want has taught me so much more. Sure, looking back, there are some things that I value highly that were taught in university, but it the signal-to-noise ratio was too low, to the point of being useless.
So I think the best thing anyone can ever do to improve their knowledge in software is to just build something that other people use.
If you're worried about fundamentals, I would say just shore up on some basic data structures (linked lists, hahsmaps, trees, maybe some graphs - this pretty much covers 99% of use cases). Rather than learning these as theory, I would strongly recommend just reading wikipedia, and writing code with them in a functional language like haskell. And also maybe some leetcode questions.