My Programming Journey So Far: A Self Taught Route 2023
Tags: beginners, career, webdev, javascript
Published: 2023-09-12 20:46:06


By mid-2020, the school had ended. All things were in captivity: the covid pandemic. The year passed in the blink of an eye. By the end of the year, I enrolled in a three-year computer-related degree. I didn't expect college to teach me anything. Scanning the curriculum, I found it was outdated and the technologies that were being taught, apart from some fundamentals courses, were obsolete. So, I mapped a plan to teach myself programming.

Starting in 2021, I began my programming journey with CS50, a popular, free introductory course on computer science and programming. The course gave me a good overview and exposed me to concepts like memory and algorithms like binary search(which I will forget soon).

However, I avoided further learning the hard parts of computer science and focused on advancing toward the big picture. The big picture was to build functional and interactive websites for myself. That was my primary focus, and it has evolved somewhat since then. Nonetheless, this goal was sufficient to keep me motivated.

After this course, I spent just a week or two learning HTML and then dedicated the next two to three months to the challenging task of centering the div, which, to this day, I find one of the most challenging aspects of web development.

I was excited to learn Javascript after this.

My first encounter with JavaScript was strange. In CS50(C language), I have known about certain data types like int, char, and bool. You can only store these kinds of values in your variable. But in Javascript, I was assigning my variable to something like a dom node. I was dumbfounded.

```
const button =  document.getElementById("#button")
```

I couldn’t wrap my head around it. So I proceeded with memorizing, believing it to be a rule allowed in JavaScript.

Two to three months later, I could build a simple to-do list with JavaScript, display and hide modal, and make a navbar slide.

## Learning React.js

React Js came into my life. Some called it a library, some a framework, and some were confused. Angular JS was its competitor, the awful frontend framework made by Google, as proclaimed. And Vue Js was also around the corner at that time. Despite all the confusion, I went with React JS and not the hated Angular.

Initially, React Js was confusing. Till now, I have been working on one file with javascript. With React Js, there are many files and folders. It took me 2-3 months to grasp this new environment, the naming conventions, and the use of the terminal and dependency system.

Eventually, it all started to make sense. And I could build a simple UI with React, which was unfathomably painful with JavaScript alone.

## Building Things Together

I joined a Discord server for programming by the end of 2021. Though most people were writing their first line of code, few surpassed that beginner's phase and were looking for opportunities to grow their skills. I saw messages asking to collaborate on projects. I responded to one of the random messages offering my aid in building the project. It turns out to be a good learning opportunity later.

In the team, there were two scrawny-looking college kids. Both were passionate and took the self-taught route. Before joining me, the project was set up with React Js on Frontend and Firebase as backend/database.

The project was a research papers website, where users can log in and download the papers. We built the project over two months. It was fun. We explored tools like git, project management tools, and wireframing software like Adobe XD.

After this project, we collaborated on another project where we decided to build our backend. Since we already knew Javascript, learning the backend seemed less overwhelming. With Node.js/express, we can easily set up a server and create APIs for our react app to consume. The popular database choice with node/express app was MongoDB. We moved with it. MongoDB turned out to be easy to get started.

After working on this project for a few months on and off, this project went nowhere. The cause of failure was our vague requirements. Continuing the project felt like a meaningless pursuit. So we dropped it. In the end, we lost nothing and gained a few more skills.

## The Work Experience

After a year and a half of learning to program(2022), I stumbled across an opportunity to work for a small startup as a React Developer. This opportunity was offered to me by someone from an online community where we occasionally discuss books, ideas, arts, and things in general. This person referred me, and the next day, I received a call from the energetic CEO. We talked about general things. At the end, he asked if I could sit for the interview. I couldn't say no. After a few days, the senior developer of the team interviewed me.

The questions revolved around React Js. The interview lasted no more than 10 minutes. I was expected only to know basic things like how useEffect hook works and styling components. I was stunned when the interview ended early and thought I missed the mark. 

The next day, I got a call. The team welcomed me. 

After a few days, I was staring at the massive code base. It wasn’t basic as I guessed from the interview. It terrified me, and I was fool enough to suggest to my senior that we needed to rewrite the whole codebase with Next JS. The excuse I made was terrible SEO because it was Single Page App. The suggestion felt reasonable, at least to me, since our website needed to rank higher on Google. The senior explained that this optimization is not required as we are still in the initial phase. Our primary focus is to build the features and improve functionality instead of doing the optimizations. And the codebase was only one year old and has worked for the requirement so far.

I got comfortable with the codebase over the next few weeks by making small changes, slowly fixing bugs, adding functionality, and pushing design changes. I realized I didn't have to know the whole codebase. I only need to understand the piece of code related to the bug, feature, or improvement I was dealing with.

Our team was remote, so I had the flexibility to attend my college when it was required. I moved to the office for the next few months and work fully onsite. The office was in a different state(Chennai, India), a distance of more than 1,700km(1,000 miles) from my state(Delhi, India). Moreover, the language, culture, and food were different. Despite I moved. I was excited about the opportunity to work closely with the product owners, and it was a good travel opportunity.

I returned after three months and continued working till my graduation. During all this time, I learned a lot from my senior developers, how building software works in the real world, working with a team, effectively communicating my thoughts, and the list is endless. I was grateful for the opportunity. The people I worked with were chilled, supportive, and humble. There could not have been a better place for me to kickstart my career.

In July 2023, after ten months of working, I decided to take a break from work and quit this job. I also just graduated. My motives for the break were to fill those gaps in my knowledge that I was painfully aware of. And to take some time to plan my career and start fresh again in a new place.

## Final Thoughts
When I was learning to program back then, the big picture that kept me motivated was the idea of building websites for myself. Now, I can easily create a website. This big picture has evolved. Building things is great, and programming gives you the ability to do so. However, building useful, reliable things is what I'm striving for now. To achieve that, I must hone my craft and improve. I know I'm still far from my goal, but I'll continue working to get better every day.

---
**Two Months Later**
It’s been two months since I left the job and the graduation. I've started learning a new language(Java), studying data structures and algorithms(I’m very inconsistent here), and revisiting the Javascript fundamentals. Also, a few days ago, I picked a book called The Pragmatic Programmer.

In all my attempts, it barely feels like progress is being made. It's a strange phase. I’m not a beginner, or an intermediate or advanced. It's more like starting anew, and the process is painfully slow and monotonous. 

---

A few days ago I decided to apply for the junior role to see how it goes in my local and if I get the job, I’ll have to manage my time and continue learning things on the side.

Till now, I’ve gotten 2-3 rejections with no interviews out of the 50+ applications I applied and the rest haven’t responded. It feels worse than rejection. Most jobs require a minimum of 4-5 years of experience, and all the junior-level posts have applicants from 500 to 3k. It’s overwhelming and hopeless to see, but that’s the current state of affairs.

I also realized my resume is not up to the mark. Other than 10 months of experience. I don’t have good projects to showcase my skills. There's this basic node js web scraper that fetches the news headlines from different sites, and my react app consumes the API and shows these news headlines.

I’ll keep applying and continue learning things.