Over 40, with no technical background, this is how I learned JavaScript in 2 weeks
Tags: webdev, javascript, beginners, tutorial
Published: 2023-07-17 07:05:10

Last week, I wrote an article titled "Over 40, with no technical background, this is how I learned HTML and CSS in 3 days".This article received much positive feedback from friends who found it insightful. Many have urged me to continue sharing my journey of self-learning JavaScript.

Therefore, in this thread, I'll share a complete strategy for a complete beginner to learn the basics of JavaScript quickly and complete small projects (all resources mentioned in this post are absolutely free!). The following link leads to a simple Chrome extension repository I created after learning the necessary content:[My Repository](https://github.com/codingJourneyFromUnemployment/leadsTracker)

As a web3 investor, I track and browse numerous early-stage projects daily. I use this little extension to monitor and save promising projects I've discovered for deeper future studies. I plan to integrate the GPT-4 API into this extension to help analyze project leads I find. If I can quickly grasp the basics of JavaScript, why can't you do the same in a short time?

##During my learning process, I encountered a few misconceptions:

#### What's the point of learning JavaScript

Before I started learning JavaScript, I assumed it was just like Python - just another programming language. As a beginner, I thought learning any popular language, such as Python, would be sufficient. But as I delved deeper, I realized their application directions differed significantly. For studying AI, such as machine learning, Python is a must in the roadmap. However, if you're learning web app development, whether front-end or back-end, JavaScript forms their foundation. You might argue that Python can be paired with Flask or Django. I had the same thought initially, but I found that if you're using an unpopular tech stack, finding fresh tutorials on YouTube could be challenging, let alone the potential difficulties in collaborative development with others in the future.

#### When should you start learning JavaScript

In reality, my journey learning JavaScript was not a straight path. With no teacher guidance or industry experience, I didn't even realize the importance of JavaScript initially. Because I perceived the learning curve for Python to be smoother than JavaScript, I procrastinated entering the realm of JavaScript due to the fear of difficulty. As a result, I wasted quite some time before eventually setting foot on the correct roadmap of web app development.

#### How long does it take to learn JavaScript

Compared to markup languages like HTML and CSS, JavaScript is undoubtedly more complex. From my own learning experience, I believe it's also more complicated than Python. However, I once encountered C language in Harvard's CS50 course ([CS50 YouTube channel](https://www.youtube.com/@cs50)), and I feel JavaScript is much simpler in comparison. Having learned Python before, I initially hoped to fully master JavaScript within a week or two. However, I soon realized this expectation was unrealistic. JavaScript is vast, and within two weeks, we can at most grasp the basics and be prepared to move on to the next phase of learning. For instance, you might want to start learning AU's Solidity training camp ([AU's website](https://university.alchemy.com/overview/ethereum)), or freecodecamp's React course ([YouTube link](https://www.youtube.com/watch?v=2-crBg6wpp0)), and so on.

## My learning strategy

#### Overall Principle 

Time is quite limited, and our goal isn't to become a master of JavaScript, but to grasp the basics so we can start practicing and move on to the subsequent tech stacks in the learning roadmap. Therefore, "simple basics but efficient" should be the principle we adhere to in our two-week study. This overall principle should be reflected in our choice of learning resources, the arrangement of the process, and the selection of practice projects. For instance, if we have a thick book like "JavaScript: The Definitive Guide", we shouldn't read it from cover to cover, but use it as a reference book (like a document), referring to the corresponding parts when we encounter problems.

#### With the basic goals and guiding principles in mind, the rest is easy. 

I spent half a day browsing various tutorials and other learning resources online and collected those that align with my goals and principles for future use. When I first learned JavaScript, I greedily chose a lengthy video tutorial that spanned several hours, but in the end, I couldn't keep up and gave up. Therefore, this time, I deliberately avoided tutorials that could be challenging for a beginner to complete. However, I also realized that some tutorials online can be misleading, like those on YouTube titled "Learn XXX in 1 hour". These overly fragmented and short tutorials only serve as introductions and don't meet our learning goals and principles.

#### This time, I divided my two-week study into two stages. 

The goal of the first stage is to understand the concepts and basic usage of JavaScript as completely (yet simply) as possible. The second stage involves following a quality video tutorial for practice and completing a few small projects to deepen my understanding of JavaScript. Therefore, in the first stage, I chose a quality JavaScript tutorial on GitHub as my primary resource ([The Modern JavaScript Tutorial](https://javascript.info/)). Although this tutorial is free, its tens of thousands of stars on GitHub attest to its authority. The only thing to note is that based on our goals and learning principles, we don't need to and don't have time to complete the entire tutorial. We only need to focus on the goal of the first stage, that is, mastering the basics and understanding the concepts.

## My time and process arrangement

1. Having previously studied Python and Harvard's CS50, I knew that a programming language certainly includes basic content such as variables, functions, data types, and logical operations. I also knew that in object-oriented programming languages there are basic concepts like classes and objects. Therefore, I progressed very smoothly in the first few days. On the first day, I completed reading and exercises for the "An Introduction", "JavaScript Fundamentals", and "Objects: the basics" sections of the tutorial. I skipped the "Code Quality" part and some exercises that I couldn't understand yet, focusing solely on the basics.

2. On the second day, I started with "Data types" and "Advanced working with functions". Honestly, these two parts also have a lot in common with Python, which I had studied before, so it wasn't particularly difficult for me to understand. The only thing that took me more time to understand was the concept of arrow functions, which Python does not have. But it isn't complicated either; it's just a kind of shorthand.

3. The following few days were the same; I maintained a learning progress of 1-3 sections per day. If I encountered a particularly difficult part, I would only complete one section that day. If the parts were relatively simple, I would finish 2-3 sections that day. As long as I was focused and efficient during my study time, it wouldn't be too rushed. For particularly challenging parts, I would search for more detailed information online or look for the corresponding parts in "JavaScript: The Definitive Guide". For instance, the "Promises, async/await" section was like this, and I spent a whole day studying it.

4. It took me about 10 days of intensive work to complete most of the tutorial. But two things need to be noted. First, I skipped many parts that I found to be complicated and not so basic, such as "Code Quality", "Miscellaneous" under "The JavaScript Language", "Miscellaneous" under "Browser", and all the content under "Additional Articles". Secondly, the exercises in this tutorial are relatively difficult, and as a beginner, I couldn't complete many of the problems in a short time. In order to save time and achieve my goals as planned, I would Google the answers or ask ChatGPT for help when I couldn't solve a problem quickly. If I still couldn't answer it, I would decisively give up.

5. Afterward, I spent an entire day reviewing what I had learned earlier, organizing my notes into a cheat sheet for future reference during project practice. Of course, there are also many JavaScript cheat sheets available online. However, I still strongly recommend you to create your own cheat sheet when learning each technology stack, which can not only deepen your understanding during learning but also improve efficiency when using it afterward.

6. In the remaining 3 days, I entered the second stage of my study, consisting of review and project practice. In this stage, I chose a high-quality video tutorial on YouTube, [freeCodeCamp's JavaScript Basics Tutorial](https://www.youtube.com/watch?v=jS4aFq5-91M&t). This tutorial was created by Pierre Borgen, a content creator I greatly admire. He excels at imparting programming knowledge gradually through creating small projects. This 7-hour video tutorial is no exception. In it, we can complete three small projects, which is a great way to deepen and reinforce the basic knowledge we learned previously.

7. The small projects in this video tutorial are very basic. The seven-plus hours of content divided into three days only require about 2-3 hours each day to complete. In fact, with the foundational knowledge from the first phase of my study, this stage felt quite relaxed. I even added some impromptu enhancements to the projects in the tutorial. For example, when making a Chrome extension for the final project, I didn't use the template provided by the tutorial. Instead, using the HTML and CSS knowledge I'd acquired previously, I designed a simple user interface for the extension myself.

## Final suggestions:

1. JavaScript is much more complex than the HTML and CSS you've learned previously. It may be the first real challenge you encounter in your learning journey. However, that's okay because we're beginners, and we only need to understand and master the basics first. When you encounter difficulties, don't be too hard on yourself. Learn to let go, as you'll ultimately have your moments of enlightenment during continuous practice.

2. Whether you're learning JavaScript or any other tech stack, don't rely solely on existing resources online. Be sure to take your own notes and create your own cheat sheet. This will provide you with significant convenience in your future learning and practice.

3. After we've finished learning the basics of HTML, CSS, and JavaScript, there are many more complex tech stacks waiting for us. The journey of learning to code is endless. I once thought it was the most challenging and even hopeless task. However, with continuous learning and self-improvement, I've gradually realized that the endpoint and results may not be the most important. Programming is a creative activity. We can fully enjoy the fun in it and find joy in the process.