I used to be like the person you're describing.
I had such a hard time with actual software development, until a few years in, when all the theoretical knowledge "clicked".
Then I was able to always make consistent gains in dev skills from the os level to higher level software architecture.
I think it was because I could understand the core abstractions from the higher level ones. Though I also might be an outlier, because even out of school I study a few hours a night.