Navigating the Spooky World of JavaScript

Ali Spittel on October 31, 2018

JavaScript (and front-end development in general) can feel intimidating because so many cool things are happening so fast. The language itself is... [Read Full]
markdown guide

JavaScript remains one of the more confounding programming languages/environments. Very beginner friendly and simple in some ways, over-complicated and chaotic to all in other ways.

The culture around JavaScript is probably its fundamental differentiator. As with many things involving culture, detractors tend to be loud and proud.

Due to the confounding nature, getting oriented and being confident in your orientation is probably harder than the problem at hand most of the time.

Anyway, I think this advice is all spot on. Being confident with the basics will go a long way.

In web land, I think it also helps to get to know the DOM's various methods. I don't think you need a deep understanding of how the DOM tree is built (I don't), but having practice calling DOM methods like document.getElementByID give you a good idea of more or less how your abstractions are operating.


Totally -- JavaScript has to be everything for everybody since it has the monopoly on the front end. Which means that a lot more people have opinions on it. Also agree on DOM manipulation -- I hadn't included it because I thought of that as more beginner than intermediate, but that line is kind of arbitrary!


I so have the "shiny object syndrome"! It is even worse when you are a newbie who is trying to make something bigger than a tutorial-based project. The feelings of "I chose the wrong things!", "The architecture needs to be rewritten, this cannot work", "That tutorial was outdated and put me off-track", "Me-6-weeks-ago was so dumb" are severely amplified.


Totally -- just know that the learning process for those things makes the learning process for the next thing faster! Even though they may feel like roadblocks, they're super important learning experiences. In fact, I think learning from failure, especially with code, is crucial.


Hey Ali,

great work,

Is it well used? If it has a community behind it then it's more likely to have contributors and frequent iteration on features and bug solving.

Is the documentation good? This is so important for being able to use the technology easily.

Most annoying issues:

  • needing some hint/help/advice and not getting any of it, because there is no documentation
  • needing some hint/help/advice and not getting any of it, because the framework/library/package has roughly 20 users

so, so true! so tough to deal with brand new libraries for that exact reason!


I know this list is particularly suited for JavaScript (and how!) but really this is a list of best practices that anyone, regardless of skill or technology, can and should follow.

And that's not a bug, it's a feature!


Definitely agree! A lot of my blog posts are actually written versions of talks I give, and this was for a JS one today! But totally agree -- this is important for all languages and technologies!


Thanks for the post, some great info here. The "You don't need to know everything" part was a great reminder to me even having done JS work for 6+ years now.

One of the other things that comes to mind is focusing on one piece of the stack at a time, as you kind of mentioned in depth over breadth. I know I struggled when I was learning some of the JS frameworks because I didn't understand if my issue was with the JS itself, with the Angular code, the node.js back end, or the Mongoose/Mongo database commands, etc. Most apps don't need entire frameworks (or even front + back ends), so start with just some plain Javascript and HTML and then add to it from there.


Yeah totally -- I remember Googling things like "image upload React Django" back in the day, but really I needed to handle that processing separately on both ends! I'm so pro-API back-end w/ totally disconnected front-end at this point for beginners for similar reasoning. Test both separately!

I also use the JAM-stack for a lot of my personal apps, so no real back-ends, and I love it.


Hi Ali,

Thanks for the information. I'm trying to get into front end development on my free time and you're right. It's not possible to learn or know everything and it has to be a small piece at a time. It's funny as a person I know this, but when I read it or someone else says it, it somewhat brings me back down to earth.

Have a spooky one!


It's so hard to turn the blinders on sometimes, but it's so necessary!


Hey, thanks for this article, sometimes I wonder if I'm not alone, twitter & HN is literally full of hipsters and it feels like people forgot that programming is all about making tradeoffs, that there is no perfect software and that you can't ever "win", it's always about "failing the least for this specific use-case".

BTW: I've made a search engine for libraries which provides you some metrics you're describing, and when reading your article I'm actually considering adding "break factor", something like how often library gets major version incremented vs. how often it stays backwards-compatible. It's if you're interested (or anybody else)

Thanks for this, really.


Nice article! Being a backend developer interested in frontend WebAssembly is a thing I'm quite excited about. It could help lessen JS monopoly on the frontend.

You don't need to know everything

This is partly due to the hype factor. There's a lot of hype in every stack (frontend, backend, mobile, whatever), it's quite hard to be a beginner these days. Glad people like you are helping in making sense of it all.

It's not actually not that spooky!

I believe this is a double negative :P


Great article Ali. Knowing JavaScript fundamentals will definitely help a lot :)

As you said, once the fundamentals are known, any framework or library can be understood and used easily :)


I just started learning JS. Your article will certainly come in handy in my journey. Thanks a lot!

code of conduct - report abuse