4 min read
My Programming Journey so far

My first encounter with programming was through a web development course on Udemy. This happened right after I decided to drop out of Law school, where I had already studied for three years. At the time, I was exploring different fields — I even started a Photoshop course inspired by the amazing work of Benny Productions on YouTube. But it was the web development course that truly captured my attention.

Back then, my only goal was to learn how to create websites to sell them. I had no idea of the complexity of the tech world. So, I focused on HTML, CSS, and JavaScript — the only technologies I knew. However, I soon realized that a $5 Udemy course wouldn’t turn me into a skilled professional. With that in mind, I decided to study for college entrance exams and, since I needed to work to help out at home, I chose the night program in Systems Analysis and Development.

Early in my career as a developer, I faced an overwhelming amount of information and topics I needed to master to deliver any value. Like every intern and, later, junior developer, I felt that no matter how much I studied, it was never enough. Over time, that feeling faded, and I started to feel productive within my limits.

After a while, I realized I had bitten off more than I could chew — and I’m sure countless developers have done the same. I spent all my time and effort into learning high-level tools and languages without understanding how they actually worked under the hood. I had some exposure to foundational subjects during my course, but due to poor teaching quality or my own lack of awareness about their importance, I couldn’t fully take advantage of those opportunities.

This was only possible because of the layers of abstraction in modern systems. Just as you don’t need to understand how an engine works to drive a car, you don’t need to know Assembly to code in a high-level language like Javascript. Abstractions hide the complexity of what’s really happening. But if you want to improve as a developer, you need to peel back those layers and gain a deeper understanding. I came to this realization a few months ago and decided to make a plan.

Determined to dive deeper, I started researching content and guides on computer science fundamentals and stumbled upon the amazing Teach Yourself CS. The site says: “There are two types of software engineers: those who understand computer science well enough to do challenging, innovative work, and those who just get by because they’re familiar with a few high-level tools.” Unfortunately, I identified with the latter.

I’ve been following the Teach Yourself CS roadmap for a few months now, but I was still refining my learning approach. Most of the recommended books are dense and lengthy, and relying solely on passive reading is a sure way to forget everything. I found that the ideal model for me combines passive reading, active learning (using tools like Anki), and hands-on projects.

It’s been a fascinating journey so far. To make it even more engaging, I decided to share my progress and projects here and in this blog — yes, I know, it feels like 2010. My goal is to stay motivated and share knowledge. After all, no one grows alone.