Most math reads like very bad code to me: insufficiently commented, bad variable names, excessive (and wildly, ah, creative) operator overloading, no explicit types. Plus the debugging and analysis tools blow, forcing you to keep way too much in your head at any given time.
The documentation is extensive, but unfortunately too much of it takes the form of the same garbage code.
I had the luck of having very good math teachers, plus a share of natural "easyness" with math (wouldn't precisely describe it as talent). All the things you mentioned can be solved by having good, dedicated teachers (I mean dedicated to teaching, not just to one specific student). Unfortunately, they're not as common as they should.
And/Or a REPL. I started programming with Apple LOGO in summer school as a small child, the math came alive. Much more malleable feedback and exploration than the 100%'s on quizzes.
I was taught discrete math from the building blocks of matrices and it seemed as useful at the time as learning driver's ed in a license plate factory.
The documentation is extensive, but unfortunately too much of it takes the form of the same garbage code.