Over the past three weeks, I have met JavaScript learners from all over the world: from Florida, USA, to Australia, the UK, Pakistan, Germany, and the Netherlands. I thoroughly enjoyed learning about the different backgrounds, experiences, and goals that each person has.
Ultimately, everyone wanted more or less the same thing: to gain a strong command of JavaScript. For some, this was to secure their first role in tech. For others, it was to level up in their current job or start a business.
I have summarized some of the topics and points made in these discussions into some general tips and advice for learning JavaScript and applying for tech roles.
Everyone has this perfect vision of what their portfolio should look like and often say things like, "Before I start applying for jobs, I am going to create a jaw-dropping portfolio." There are three typical outcomes of this mentality:
You do NOT need the perfect portfolio to get your first job. Instead, start with a GitHub landing/README page or a simple one-page website with links to GitHub. Shift your attention to "boring projects" and "fluency" - see below. Later, once you have more confidence, you can start working on an improved portfolio (notice I still don't say "perfect").
The point at which you start applying for jobs should NOT be the point at which you are ready to actually secure the job. It's challenging enough to remember everything you've learned in a stressful interview environment. Adding to that the desire and expectation of actually getting the job can be overwhelming.
Instead, your initial target should be to expect to fail an interview. Yes, you read that correctly. Apply to jobs knowing you will fail. Think of it as research. These interviews are opportunities to practice, understand what these jobs generally expect, and improve your JavaScript skills along the way.
After experiencing enough of these interviews, you'll notice your confidence slowly starting to grow. You'll no longer be failing in the first stage; perhaps you'll make it to the second or third. Now you can set the next target: apply to jobs with the intention of getting them.
Two targets, and two different mentalities entering the interview.
Whether you are a beginner or intermediate learner, your primary goal should be to improve your fluency in JavaScript. By that, I mean writing tons of code. Forget about getting the "correct answers" in code challenges or building something that actually works. This is irrelevant. What counts is the time you are dedicating to writing lines and lines of JavaScript.
If it’s messy, it does not matter.
If it doesn’t make sense, it does not matter.
If it makes you feel confused and frustrated, it does not matter.
Write some code. And the next day, write some more.
Here are some things you can do:
Consistency is key.
Most of the learners I spoke to are self-taught. This often means it's just you and a laptop, sitting in an empty room. The problem here is that you are only practicing one side of being a developer: the coding part.
However, there is another fundamental skill that developers need: communication. Writing code quietly in a room is not going to help you with this. It is surprisingly difficult to put code into words (let alone abstracted mnemonic images like in The Great Sync).
Here are a few things you can do:
This is something I discussed with almost everyone in the sessions this week. Learning JavaScript is incredibly exciting because it allows you to bring your creative ideas to life. However, the temptation is to dive straight in immediately, even before you are ready.
For example, one person mentioned that they wanted to build a virtual coffee barista, which is an awesome idea and would look impressive in a portfolio. But in my opinion, it should be the very last thing you spend time on.
Why work on a never-done-before idea when you are still struggling with basic loops?
Why start your "business idea" when the DOM methods still confuse you?
Trust me when I say that once you have a solid JavaScript mental model, you can build whatever your heart desires.
But your goal for now is to create that mental model, and you don't need virtual coffee baristas or Netflix clones.
Instead, the tried-and-tested "boring" projects are ideally suited. There is a wealth of online resources to help you complete each of them, and the patterns you learn while building these will be the same patterns you use to create more complex apps.
Here are some project ideas:
Finally, we come to the number one thing you can start doing today: reflect on the code you have written. I cannot overemphasize how powerful this practice is; it will transform your experience of learning JavaScript. In fact, this is how The Great Sync began. I reviewed my knowledge repeatedly and incorporated it into a mental model that I constantly updated and improved.
Most people, after finishing an exercise, project, or course chapter, simply move on to the next item on their list. Maybe they take some notes or save code snippets somewhere. However, very few actually go back and review what they learned or did in the days or weeks prior.
Instead of rushing through every exercise, slow down and schedule "review" time. This means carefully and thoughtfully revisiting your past work, all the while asking questions such as:
Usually, this line of thinking will lead to "redoing" the same exercise, or at least refactoring it to make improvements. It may slow you down, be frustrating at times, and make you feel like you're going in circles. However, this is where the real learning happens. If you skip this step, you are neglecting a habit that will take you far beyond the skills of an average developer.
The Great Sync is designed to assist you with this step. The code you write and read should be compared and contrasted with your existing knowledge of JavaScript, in the form of visual landscapes and characters. For students in The Syncer Program online course, they are in the process of building this structure. If you are not a Syncer yet, I am soon to release more free content that can help you.
I hope these summary tips and advice for learning JavaScript from my 1:1 sessions is helpful and actionable. Please don’t hesitate to get in touch directly via email or instagram.