1000 Hours Into Programming: My Journey So Far
Tags: journey, learning, webdev, beginners
Published: 2024-03-21 11:24:15

## Introduction

I started taking my programming journey seriously around 6 months ago, and so far, I've invested around 1100 hours in it. In this article, I'll share what I've learned so far and my plans moving forward.

## My Learning Journey

Before these 6 months, I had some knowledge of programming basics. I had taken some HTML/CSS, JavaScript, and Python courses, but I hadn't used that knowledge to build anything of value.

I started picking up programming again around 6 months ago, and this time, I was serious about it. I studied anywhere between 6-8 hours every day.

### HTML/CSS

I started with HTML/CSS, taking two courses on Udemy, together around 40 hours long. One covered the basics of HTML/CSS, while the other focused on more advanced concepts like animations, Sass, etc.

### JavaScript

Next, I took a 60-hour long course on JavaScript. I had some knowledge of JavaScript and programming in general, so it was relatively quick and easy. I didn't build any projects purely with JavaScript, except for the ones I built during the course, which were a lot of fun.

### CSS Frameworks

After JavaScript, I learned about Bootstrap and Tailwind CSS, and I fell in love with Tailwind and its ecosystem, including shadcn-ui. I took two courses, totaling around 20 hours.

### Django

At this point, I had learned a lot, but I hadn't built any real-world projects to put my knowledge into practice. So, I went straight for Django to learn backend development and use it alongside my frontend skills to build some real-world projects. I took a Django course that was around 20 hours long.

### Ecommerce Project, Docker, and HTMX

After learning the basics of Django and reading the documentation, I built an ecommerce website. I chose Django for the backend and Bootstrap for the frontend, and I used Docker to set up a CI/CD pipeline to deploy my project later.

Initially, I created a simple website without any interactivity, just pure HTML and CSS. I constantly jumped back and forth, writing code and reading documentation until I finished a simple version of the website. I then learned about HTMX and decided to integrate it into my project.

So, I started reading about HTMX and rewriting almost the entire project again. I implemented some cool features like filtering products, infinite scrolling, etc., and I really enjoyed the process. It took me a few months to build this project, and although it was far from being a production-ready website, I had a lot of fun, and I also got to practice my frontend skills. You can click the following links to see more about my project:

[Link to Project Repository](https://github.com/mostafaei2002/django-ecommerce)

Short Youtube Demo
{% youtube nAhxrejd-1s %}

### Different Language Courses

After building my first real-world project, I took a short break to look at some other technologies like C, C++, Rust, Golang, and Node.js. I didn't plan on going deep into any of them. I just wanted to get a general idea about what they are and how they work so I could better pick my future technologies moving forward.

I started watching some courses on freeCodeCamp on these different technologies, including a course on the C programming language, a C++ course, a Rust course, a Go course, and a Node.js course. I watched these courses quickly, and most of them felt repetitive because I was familiar with many of the concepts, although I also learned a lot of new stuff.

To name a few, I learned a lot with the C course and was amazed by how all these complex software is built with a language as simple as C. I also took a liking to Go and Rust and later continued to learn Rust by taking the Rustlings exercises and doing the projects in the Rust programming language's book. Moving forward, I'll hopefully spend more time and effort learning Rust and building software with it.

By the way, did I mention C++? I hate that language. I barely watched the course to the end, and I hope I'll never have to touch that language again.

### React and Supabase

After taking the aforementioned break from my main learning path, I had a clearer idea about my next steps and what I want to learn moving forward. I went back into my main learning journey and picked up React with a 60-hour long course on Udemy. I also learned about Supabase in the course, and I totally fell in love with it.

I also built a cool project in the course and got to learn a lot of cool stuff along the way, including Supabase. I am probably more excited about learning Supabase though than the course itself.

### Gatsby, Next.js, and GraphQL

After learning React, I took a course on Learning Gatsby, and alongside Gatsby, I also learned the basics of GraphQL. Then, I learned Next.js, which didn't take long since I was already familiar with Astro.

## What's Next?

Although I've learned a lot in the past 6 months, I can say that programming turned out to be much harder than I expected it to be and I still have a long way to go, but I am up for the challenge.

Moving forward, I'll probably focus more on fundamental concepts and deep knowledge. To be more specific, I have some books in mind, including "Clean Code" by Robert C. Martin and "Introduction to Algorithms" by Thomas H. Cormen and colleagues. I am also gonna look into design systems, etc.

I'll also probably do random projects here and there. There are two repositories I really like, including "Project-Based Learning" and "Build Your Own X." I'll probably do one of those projects every now and then, if possible, every week.

I am still not completely sure which technologies I am going to go deep into, but I really like Python, JavaScript, and Rust and their ecosystems so far. Go is also something I might look more into in the future.

Thanks for reading so far.