In my opinion (others will disagree), the vast majority of CS concepts are not very useful for most software developers. I don't think you should feel bad about that. I consider my time & money getting a CS degree to be almost entirely wasted.
If you're at a large company, look around for open positions that look interesting on other teams and talk to those team leads about what skills they would want. Maybe they'd even be willing to have you on board as a "trainee." If you're genuinely good at self-teaching, you will be an asset even without the skills built in.
If there aren't positions available at your current employer, you'll have to try to decide what skills are in demand and pick one, and you'll have to spend your personal time on it. My approach has always been to build something with the tech I want to learn. Usually just toys (a music player to learn GTK; many garbage video games and websites to learn various languages & toolkits) but sometimes useful stuff, too (a blog post demonstrating reverse-engineering a video game; many little unixy tools to make my dayjob easier; porting a Linux video game controller driver to macOS). In my opinion, just doing exercises isn't a good way to learn or demonstrate your abilities to an employer. Projects you own & and can talk about are way more interesting.
Also, consider that you might just be burning out on tech. I know I'm getting there. Ten-plus years in an industry is a long time, not everyone's built to do the same kind of work for their whole life. I'm keeping my eyes open for something in another field that grabs me.
> In my opinion (others will disagree), the vast majority of CS concepts are not very useful for most software developers. I don't think you should feel bad about that. I consider my time & money getting a CS degree to be almost entirely wasted.
I would agree for a web dev. But if you start getting more into backend, infrastructure, building distributed systems and APIs (which was the path I took), data structures and algorithms definitely start to come into play.
I started out self-taught on the web. Got a degree in design. Then learned web dev, then moved to backend, then to infrastructure, then devops, and now platform and cloud engineering. For me, I wanted to understand "the whole widget". And there are things I learned about UX that when applied to DevOps/SRE work, have elevated me as someone to listen to.
(As a fan of Avatar: The Last Airbender, I want to point to when Iroh was explaining how the 4 nations achieve balance. Same concept here. UX, engineering, infrastructure, and product need to work collaboratively together with mutual respect for the other disciplines to achieve the balance that leads to something great happening.)
I've picked up some data structures and algorithms along the way over the years, but I don't have college definitions of them. This hurt me when interviewing at Google, but I also have the ability to search the web and learn new things. So I do.
Just last week, I was working on tokenizing and building an AST for NRQL (New Relic's Query Language). As I was working through the tokenizer, I realized that this is what a linked list is.
I'm thinking about taking a single college course this upcoming semester about data structures and algorithms, just to fill in the blanks. But I've been building things for the web since 1997. For the most part, using anything beyond lists, maps, sets, queues, etc., is (relatively) rare, but again, it depends where you want to go next. Sorting large datasets efficiently, parsing things into trees, binary search, and making sure I iterate over things as few times as humanly possible will give you FAR more bang for your buck.
If you're at a large company, look around for open positions that look interesting on other teams and talk to those team leads about what skills they would want. Maybe they'd even be willing to have you on board as a "trainee." If you're genuinely good at self-teaching, you will be an asset even without the skills built in.
If there aren't positions available at your current employer, you'll have to try to decide what skills are in demand and pick one, and you'll have to spend your personal time on it. My approach has always been to build something with the tech I want to learn. Usually just toys (a music player to learn GTK; many garbage video games and websites to learn various languages & toolkits) but sometimes useful stuff, too (a blog post demonstrating reverse-engineering a video game; many little unixy tools to make my dayjob easier; porting a Linux video game controller driver to macOS). In my opinion, just doing exercises isn't a good way to learn or demonstrate your abilities to an employer. Projects you own & and can talk about are way more interesting.
Also, consider that you might just be burning out on tech. I know I'm getting there. Ten-plus years in an industry is a long time, not everyone's built to do the same kind of work for their whole life. I'm keeping my eyes open for something in another field that grabs me.