February 9, 2021
Rags to Rayman
As part of my quest to become the best developer I can be, I have placed a premium on understanding foundational principles before moving on to higher level endeavors. In my earliest forays into development, time-crunched as I was with work and the rest of life, I had a penchant for rushing into new technologies without realizing the problems they were solving or understanding how to solve those problems on my own, driven by the naive goal of simply making something in the time that I had. Projects I made were brittle, and a lack of fundamentals prevented me from climbing higher on the learning curve.
And so I am starting with the basics. That includes getting a sense of how computers work from a mechanical perspective, learning assembly language, and mastering myriad other topics that I will cover in future posts (as I reach those stages). Naturally, it also includes math.
Indeed, math is inseparable from computer science and software development. Math was both the impetus and the function of the earliest computers, which were designed to perform mathematical operations (like addition) in increasingly complex sequences. Boolean algebra, a system of logic defined by truth and falsity, applied at scale to hundreds and thousands of switches, made these operations possible and still animates modern computing. And the principles of geometry, trigonometry, and calculus are ubiquitous in three-dimensional applications like virtual reality and video gaming. In other words, a strong grasp of math serves as scaffolding for effective development.
Having said that, I have a love-hate relationship with math, i.e., I loved it, then I hated it, and now I love it again. I had an affinity for math as a child, at least through elementary school. I found it so neat and organized compared to liberal subjects like English and reading comprehension (jokes on me, said the future lawyer), and I remember racing with friends to finish multiplication tables.
My experience with math took a turn for the worse in middle school, though. I did poorly in a sixth grade algebra class (it was the first time I had ever needed to try at math, and I didn't quite know how to do that), and that changed my trajectory irreversibly. I learned that math is taught on two separate tracks: one for advanced students and one for everyone else. I was belted to the latter track because of one algebra grade. Separated from my friends and ashamed at feeling less than, I tuned out of math and skated through later courses with general apathy. This distate persisted through college, and after going to law school I assumed that was how it would end.
But here I am, nearly a decade later, brushing up on algebra and geometry. On purpose. I started on this particular path partly because it ties into the foundation discussed above, and partly because it is one way to demonstrate quantitative ability for the MCIT program (another topic for another day). And I like it. Maybe it is because I can relate these abstract concepts to concrete applications now, or because I understand the concepts better than before. Or maybe it is just because I am choosing math for the first time.
Either way, math and I are strangers no longer. I am finishing up refresher courses on algebra, geometry, trigonometry and pre-calculus on Udemy this week, and then I will be moving on to a calculus series offered by the University of Pennsylvania on Coursera. And after that...we'll see. I can say one thing with confidence: it is good to see the pluses and minuses again.