Refactoring My Technical Foundation
Driving a car with mechanical issues is an unpleasant experience. Sometimes whether or not it starts is a coin toss. Mystery noises pop up that sound loud and expensive. And in the back of your mind, you always wonder if today will be the day it stops working altogether.
It is something you try to avoid at all costs.
When it comes to my technical skills, I sometimes feel like I am driving that kind of car.
If I put in an insane amount of effort, I can probably get by. I can make a simple project or solve a math problem with enough time, patience, and Googling. But under the hood, my engine isn't strong. Anything beyond everyday math still confuses me, many programming concepts and frameworks still elude my understanding, and the way computers function still feels like magic to me sometimes.
Sure, I can brute force my way through and hope I eventually pick up what I need. But that's shaky and not what I want to build on.
The Problem
Math and I have always had a complicated relationship. I have never been quick at doing mental math, looking at formulas was, and still is, like looking at Egyptian hieroglyphs, and my mind protested when I needed to learn the ancient Greek alphabet to solve for x. I'm still surprised I was able to pass my math classes in school.
With programming, I didn't even know what Python was until well after high school. Seeing nothing but a black screen with lines of code that looked like English but was completely unreadable to me felt daunting. I thought you had to be a special kind of person to do something like that. I preferred doing anything else.
And actual computer science is still mysterious to me. How we're able to go from 1's and 0's to YouTube and AI seems like a form of magic sometimes.
Why Fix It
I didn't need to know sine and cosine when I was serving frozen treats at a snowcone stand. Python wasn't of much use while I was cleaning up after dogs in a veterinary hospital. I'd occasionally have to use some basic math when I needed to cut some things as a maintenance worker. But I definitely wasn't doing differential equations when I was moving boxes and cutting grass. Even as an IT specialist, the most technical knowledge I needed was how to explain the difference between RAM and memory to non-technical people.
Most of my life outside of school didn't require me to have these skills in any meaningful way. So, what knowledge I may have had atrophied quickly.
So, starting university in September 2024 after over a decade away from formal education was a shock. Here I was in a calculus class looking at symbols and equations that I vaguely remembered. Many of my classmates seemed to have little issue understanding while I was looking at it like a foreign language.
To be fair, many of them went straight from high school to university instead of spending years doing a whole lot of unrelated jobs. But still. Sitting in class struggling with what were supposed to be the basics when many people around me seemed to grasp it almost instantly was humbling and a wake up call.
But more than that, I also realized that outside of passing classes, these concepts would be important if I wanted to get a deep understanding of computer science and achieve the goals I set out for myself. I can't leave understanding to chance.
Plan
During this summer vacation, I want to really sharpen my fundamentals and build up where I'm weak. I don't want to speedrun tutorials and zone out to playlists. This time, I want to slow down and rebuild the basics properly.
The main areas I want to focus on are:
- math fundamentals
- programming fundamentals
- computer science concepts
- problem solving
- technical reading and note-taking
- design
For math, I want to get more comfortable with the foundational concepts: algebra, functions, graphs, trigonometry, and the basic ideas that show up again and again in calculus, linear algebra, probability, and computer science.
For programming, I want to understand both the syntax and the ideas underneath it. I know it's often said that syntax isn't as important as knowing how to think. But, to me that is like saying learning vocabulary and grammar in a foreign language isn't as important as having things to say. You need both to communicate. So, I really want a good grasp on variables, loops, functions, objects, memory, data structures, debugging, and how to express that in various programming languages.
For computer science, I want to slowly demystify the machine. I want to understand how binary represents data, how code turns into something a computer can actually run, and how algorithms can make programs more efficient.
Resources
As of right now, I plan to use a few different resources to get myself up to speed.
- Milen Patel's YouTube channel for understanding how computers work on a fundamental level
- Professor Leonard's YouTube playlist on precalculus for math fundamentals
- Flux Academy's web design course
- Brilliant to learn on the go
The resources are subject to change, but the goal is the same: slow down, practice, and actually understand what I'm learning.
Goal
I used to spend a lot of time complaining about having to learn many of these concepts because I didn't feel they were relevant. But not knowing them is ultimately hurting me.
I don't expect to be the next Einstein or Bill Gates by the end of this summer. That would be ridiculous. I don't even expect to have a super deep understanding of everything.
This is just the start.
The real goal is to stop accepting shaky understanding as normal. I want to build projects with a stronger foundation, study with more intention, and become the kind of programmer who understands more than just enough to get by.
So this series is about opening the hood, finding the weak parts, and refactoring my technical foundation properly.