I’ve been trying to retrace my understanding of critical mathematical topics by using programming (Python). Rote calculations and memorization always felt lacking to gain any meaningful insight into mathematics. I expected to be able to quickly code the solutions to any problem so that I could focus on understanding the many mathematical formalities.

It turns out that one major bottleneck of trying to learn mathematics by coding are the libraries you choose. On multiple occasions, I found myself spending hours trying to make sense of some convoluted library like scipy or sympy. The time it takes to figure out the multitude of problems and errors that these libraries throw at you dramatically slows down the rate at which I’m able to focus on the math. Programming feels like a hammer that I’m dragging on the ground rather than a swift and lightweight tool.

As an aside, I think it’s useful to remember my frustration trying to use these tools when I create my libraries.

In many cases, there are smart and fast ways to solve most problems. However, these require a lot of searching on StackOverflow and various blogs. There’s a lot of copy-pasting and adaptation of other people’s code. So, even though I might get a decent enough intuition for the mathematical subjects, the programming part (the concrete application of the understanding), has yet to cement in my head. I always have to reference older articles or search the same basic questions over and over again (e.g., “how to integrate with sympy/scipy”). I think this experiment is going reasonably well. Still, I need to take some time to read the library docs thoroughly—without wasting too much time on them, though—so that I have a general grasp of how to do specific tasks.