Not until I went to university, to study computer science, of all things. I was good at language, so I treated programming as a language problem. I learned well enough to make a career for myself as a programmer. I guess that doesn't say much, though, there's many bad programmers out there who make tons of money.
After university, I did a masters in Data Science. Why I get myself in those situations, I'll never know, but I studied Data Science. By then I knew how to program so I tackled all the maths problems as programming problems. When I didn't get something, I coded it. So I coded a bunch of linear and logistic regressions, and perceptrons and recurrent neural nets and the like, 'till I grokked them right.
So now I'm studying for a PhD in machine learning, in one of the best universities in the world. Not bad for a kid who always got the worse grades at maths, at school, eh?
So what I learned is this:
a) play to your strengths, not your weaknesses.
b) Dont' believe when people say you haven't got what it takes. They only know one way to do things. You do you.
Oh and- you know what? Turns out I'm not that bad at maths after all. Certainly not the discrete maths used in computer science. Not even the continuous maths used in data science and machine learning. I get by.