I can only really speak for computer science (and, I suppose, literature and history, my undergrad majors).
In computer science, theory of computation does involve some challenging material, but it also involves a lot of detailed work. The part that trips up students, time and again, is the detailed work. When you struggle with the concepts, you have to dig down and return to the detailed work, working through examples and problems, to get a better understanding. There is no shortcut.
In addition, theory isn’t necessary most of the time. In industry, people might talk about applications of theory, but the detailed work is often not done. There are a variety of reasons for that, both good and bad, but speaking honestly, it doesn’t matter for 90% of software engineering jobs. However, we know that the “train hard, fight easy” model produces good, knowledgeable, capable developers, and the ones who can master the material tend to be the ones who get to the top of the field. It’s not “theory” in the sense of pure abstraction.
A friend of mine describes himself as a dilettante, and I’ll be honest, I think that’s accurate. He’s one of the brightest people I know. He has a deep knowledge of philosophy and Western theology. He’s an insightful and incredibly well-read fiction reader (he runs the book club I’m in). He knows a lot about technology. I once tried to encourage him to dig in and master some stuff related to technology, because it could advance his career, but he didn’t want to. He’s comfortable where he is personally and professionally.
In short, there are times when we have to dig into the work that pushes our intellect and focus and discipline, and if it’s not rewarding (either inherently or what you can do with it), then you do as little as you can get away with. I’m fine with that!