I agree with what you are saying. I've been contemplating the reasons why I don't understand math the way I understand programming for some time, and opened up my old Calculus book a few days ago and started rereading it from the beginning. I intend to work through the entire book over the next couple of months. I believe because of the way math is taught, I never developed a truly intuitive understanding of what was going on after algebra. When I taught myself how to program, I learned then immediately applied what I was learning, and continued applying it continuously in all the software I wrote after. Algebra and arithmetic are pretty analogous in that regard.
For me, it is necessary to develop an intuitive understanding of something before I can really appreciate it, and more importantly, manipulate and apply it to arbitrary situations. The way math is taught, intuition is never really delivered. In programming, it's possible to look at an algorithm and have trouble understanding what it does. However, I have never implemented and debugged an algorithm or data structure and not developed a thorough understanding of it in the process. In Calculus, the rules were given, but there was never any effort spent to foster an understanding of why they are the way they are, or the bigger picture. To me, this would be like learning merge sort by running through the steps, but never actually implementing the algorithm as a whole to truly understand what is going on. In going back through it, I intend to relearn it the way I learned programming, so I can truly apply and reason around such a powerful tool.
Here is a famous quote where he references a passage from the book's prologue:
"Right. I don't believe in the idea that there are a few peculiar people capable of understanding math, and the rest of the world is normal. Math is a human discovery, and it's no more complicated than humans can understand. I had a calculus book once that said, 'What one fool can do, another can.' What we've been able to work out about nature may look abstract and threatening to someone who hasn't studied it, but it was fools who did it, and in the next generation, all the fools will understand it. There's a tendency to pomposity in all this, to make it deep and profound." -- Feynman, Omni 1979 (http://c2.com/cgi/wiki?FeynmanAlgorithm)
For me, it is necessary to develop an intuitive understanding of something before I can really appreciate it, and more importantly, manipulate and apply it to arbitrary situations. The way math is taught, intuition is never really delivered. In programming, it's possible to look at an algorithm and have trouble understanding what it does. However, I have never implemented and debugged an algorithm or data structure and not developed a thorough understanding of it in the process. In Calculus, the rules were given, but there was never any effort spent to foster an understanding of why they are the way they are, or the bigger picture. To me, this would be like learning merge sort by running through the steps, but never actually implementing the algorithm as a whole to truly understand what is going on. In going back through it, I intend to relearn it the way I learned programming, so I can truly apply and reason around such a powerful tool.