Tips and advice for learning JavaScript and applying for tech roles

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.

A portfolio website - as part of the tips and advice for learning JavaScript, don't worry too much about creating the perfect portfolio

Reduce your portfolio expectations by 50%

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:

  1. You succeed, and you gain the satisfaction of sending recruiters something you are truly proud of.
  2. The pressure to create something amazing means you put it off for 6 to 18 months, and you don't apply for any jobs during this time.
  3. You attempt to create it, struggle, give up, and lose confidence. Another 6 to 18 months go by.

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").

Illustration of an interview

Set two targets to start interviewing for jobs

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.

illustration of someone at their laptop

Focus on fluency

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:

  • Tackle one or two daily LeetCode exercises (basic/beginner level - nothing fancy)
  • Exercises in a course you’re following (do ALL of them)
  • A “frankenstein side-project” (as one student described it), devoting 30 minutes a day to it.

Consistency is key.

Talk out loud

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:

  • When working on a LeetCode or Edabit exercise, say out loud what you are about to do before you write the code. For example: "Okay, my plan is to declare a variable that will store my result, and then I am going to use a for loop to access each item using its index. I will then use the .push method on arrays to add the item to the result." This practice is pure gold.
  • Use flashcards for explaining general web development and JavaScript topics. Don't just "think" the answer; express it in words! For example, you can ask yourself questions like, "Explain what hoisting is" or "What is the difference between const and let declarations?"
  • Start a blog. Even if only your granny knows about it, it doesn't matter. Writing blogs is a precursor to writing technical documentation, something you will do frequently as a developer. It also greatly helps with the consolidation of knowledge.
An illustration of a calculator

Work on boring projects

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:

  • Tic Tac Toe
  • Calculator app
  • Hangman app
  • Weather app
  • A customizable form

Cultivate a habit of reflection

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:

  • Why did I write this line of code?
  • Could I have done it differently?
  • What can be improved?
  • Do I understand every line of this code?
  • What are the main takeaways from this exercise?

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.

In conclusion

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.

© 2023 Code Imagined - The Great Sync. All Rights ReservedView the Terms & ConditionsView the Privacy Policy