General Javascript Advice, what levels are there?

Bit of an odd question but I’m working my way through Javascript and I’m trying to get an idea for the scope of the language.

I’m trying to get my head around higher-order functions and I still feel I’m a rookie when it comes to Javascript. So I’m trying to find out if there are certain benchmarks in terms of knowledge, i.e. if you know “x” then you are no longer a rookie, but if you haven’t learnt “y” yet you are a long way off being a pro.

Hope that makes sense, any advice would be appreciated as I feel I am slowly drowning in the depth of Javascript.

Yeah, we all remember that feeling.

First of all, JS is not infinitely deep. It is a computer language with a finite number of tools.

I think what you’re going to find is that it’s not learning the language that is the most difficult, but learning the concepts and how to apply the language to them. But yeah, your first real programming language that you try to learn deeply - that’s tough.

What is a good bench mark in terms of language? Of the top of my head, some of the more advanced topics in JS:

  • this/scope/closure
  • prototype inheritance
  • IIFEs
  • OOP topics (classes, etc.)
  • FP topics
  • coercion
  • iterators
  • async
    • callbacks
    • promises
    • async/await
    • generator functions
  • currying

I always tell people that if you can read through the YDKJS book series and understand half of it, you’re on the right track at least.

But again, as a professional developer, I spend most of my time worrying about how to use these tools - I don’t obsess about the tools themselves. I’ll admit that a few of those listed above I would have to look up myself because I never use them. But most of my time is spent on higher concepts like how to architecture the code and how to implement the best algorithm. These are topics that I could discuss with a Python programmer because it really is independent of the language.

I don’t say that to discourage you - you’ve asked a good question. I’m just pointing out that really there is a larger question that you have yet to discover. But keep learning and you’ll get there.

1 Like

I feel your pain, just keep going. What I’ve noticed on my coding journey so far (and I’m not even half way there I think) is that the learning process happens in waves.

You start off with simple string methods, math operations, and when it comes to arrays, you solve everything with for loops. It works for a while, then you discover array methods (map/filter/reduce to name the most famous).

In the beginning, using them is tedious and requires a lot of thinking, but after a while you use them effortlessly and you see your code becoming much more concise and readable.

Until you hit the next wall. You’re becoming aware of function scope and develop an understanding for closures. Beginner coders tend to throw all their variables into the global scope at the top of their script, and their functions usually do all kinds of stuff at once. Getting a feeling for the principles of functional programming, splitting things up depending on what the function does and which parts of the code are affected by it, takes time. Again, it’s tedious at the start, but after a while, you’ll start using closures intentionally, and you’ll also know why you’re doing it.

Next stop - object creation, the new operator, this keyword, the principles of classes, understanding the prototype chain. Even if you don’t really go for an object orientated programming style, those things will help you to get a better grasp of many concepts (and quirks) of JavaScript.

Meanwhile, you’ve picked up a lot about the DOM and how to manipulate it, and at that point, you can probably do almost anything you want to provide the interactivity you need on your website - except communicate with the server, and that next wave is a big one. Async/await, promises, and so on. You’ll learn about the call stack, XHTTP requests, also file operations.

If you think you’re moving too slow, I recommend reading your older scripts from time to time. It’ll throw your progress in your face.

There are no levels, only a spectrum of knowledge, being comfortable with the language and overall concepts related to programming with the given language.

For example, you could have an eidetic memory know all JS syntax and have 0 clue what Object Oriented Programming(OOP) is or how you’d use it to solve a problem. On the flip side you could have 0 clue about JS, but understand the concept of OOP and just need to learn the syntax.

There are no levels or “bar” where your not longer a “rookie” or even a “pro”.

There may be a time when you realize you know most of what JS has to offer in terms of its syntax. Then you may run into a concept you never heard of, or run into some poorly written code that doesn’t make any sense, or you may find a new feature that just was released that you don’t know anything about.

The web is ever changing, there is a lot to learn, and always more to learn. There isn’t a benchmark because the “bar is always moving”, and depending on what your doing you might be totally fine, or totally lost.

Simply put, learn what you can, learn what you need, keep learning and forget about “not being a rookie”. You might be a “pro JS programmer” with tons of experience, and you still might get hung up on some problem and have to debug it.

Good luck, keep learning :+1:

1 Like