Best learning resources for javascript?


#1

Recently I tried react for beginners, on a suggestion from @SkinnyGeek1010, together with Secrets of the Javascript Ninja, II edition they opened for me the world of React and Javascript functional programming.

Until now I always learnt by reading books and practicing, but I’m starting to think about trying one of the online courses available. Some of them costs 5000$, some just 50$ per month, and this leaves me uncertain of what to pick. I don’t want to become a front end developer, I want to improve my Javascript and my knowledge of Node.JS, to become a better developer.

What do you suggest me guys?


#2

I’ve taken the codecademy and codeschool JS courses, they’re pretty helpful… but nothing is as good as just trying to make apps on your own imo. I’ve learned more from trying to figure stuff out than following tutorials… although the React for beginners course was awesome, that helped me really understand the facebook react tutorial which is also great.


#3

As far as improving your JavaScript I think you’re on the right track. I’ve really enjoyed
Professional JavaScript for Web Developers
as it goes into a lot of detail, including the DOM API. This however does not include ES2015+ (not that big of a deal IMHO).

However, the thing that’s helped me is to just build apps and when you don’t fully understand something, pause, read up on everything you can get your hands on and then write a blog post about how it works (you don’t even have to publish it, you just need to know enough to teach someone else).

For example, if you are not sure how to insert something into the 3rd element of an array and you have to google/stack-overflow it… pause what you’re doing and dive into the splice method and deeply go into how it works. If you just google, fix it, and move on the chances of fully understanding it are slim.

IMHO it’s more fruitful to aim to be a better software developer than to be a better NodeJS developer.

For this I would highly recommend the free CS50 course. It will give you a solid foundation in computer science and will help you think differently. Along the way you’ll write C code which is very different than JavaScript but for example it will teach you how an array works under the hood and how to think about handling large sets of data in JS.
https://cs50.harvard.edu

If you go through the course you’ll notice that it’s very imperative and a lot different than the functional paradigm. One is not better than the other but it’s helpful to have both in the toolbox.

To better learn functional programming in a non-academic, pragmatic way, I would also recommend Programming Elxir by Dave Thomas. The language doesn’t matter and it’s something to use for learning but the way he shows you how to think different is really amazing. If the first 4 chapters doesn’t change how you write your JavaScript I would be very surprised!

You’ll also note some of the parallels with JavaScript ES6/7 and libraries like underscore (especially the _.chain method). I think this way of thinking is the most directly applicable to React/Redux/future-libs as the functional mindset is becoming more popular.


#4

I can’t recommend Kyle Simpson’s Advanced JavaScript course enough. You can find it just about everywhere:

Out of the above Pluralsight has the best pricing and a tonne of other great videos.


#5

I’ll second Kyle Simpson
Also Evented Mind has some JS material I havent tried, but I would expect to be quality: https://www.eventedmind.com/classes

But as said above - nothing better than bashing out code on your own projects :slight_smile:


#6

Programming JavaScript Applications is free and really amazing at covering everything from the core of the language, to design patterns, database interactions, user authentication, logging, building REST APIs, and pretty much everything related to building a full stack JS web app. And most importantly it’s free to read online

JavaScript Allonge
is also free, and a good read

I really disagree that writing out your own code is the best way to learn. You’re much better off learning design patterns and architectural decisions from ppl who are much smarter than you and have dedicated their lives to the subject. Nvm the fact that JS in particular is a weird language with a lot of gotchas and things you wouldn’t expect or notice unless you really read into the spec and learn about it.


#7

I can feel your pain, since it was exactly the same situation for me one year ago. Therefore take my suggestion as grain of salt. Here are two things I think I learn the most for JS fundamental
1: jsbin (or jsfiddle which ever you prefer)
2: Dmitry Soshnikov has a very good blog for javascript fundamental. I first read the blog and its explanation of js without too much prior knowledge, of course,i could’t grasp many of his ideas in the blog. However, thing start to make sense after I start to write my own implementation of JS and refer back to his blog

Beside those two, there are a lot of other very helpful website/blog that talk about JS fundamental, all you need to do is google the term you have trouble of.

I hope this will help somehow, and best luck for your JS journey


#8

You don’t know JS is by far the best javascript book ever written. Especially for beginner-ish.

and it’s free on github.


#9

Thank you guys for all the advices, and especially @SkinnyGeek1010 . A bit about my background: I have a BA in mathematics, and after that I specialized in business management and psychology.
During my college years I practiced a lot of Java, C, Python, MPI and PETSc for parallel computing, before moving to C++ and OpenCL. Anyhow I never received a solid CS foundation, as the focus was on mathematics, statistics and complexity .
At work instead I did mostly project management in PHP, with Drupal and Wordpress, but I feel like I never have been a good manager, since I didn’t know high level PHP.
Now that I’m all in with node.js I feel like I need to become a better developer than the people I manage, to manage them better. I want to become the BEST in javascript, not to code better, but to become a better leader.

About Kyle Simpson “You don’t know JS”. First I would like to say that I deeply respect him, and I like very much his work. But I feel he creates too much hype (for his own good sake):

  1. He states that someone has to learn ALL javascript, not just the good parts, in a evident stab at a competitor. Yet then he states that global variables are bad. So what is it? you should know how to use everything, or you should avoid using some parts? The truth lies in between, as always, but the confidence he uses in his statements put me off a bit.

  2. In chapter 1 he states that const stands for constant variable. This is not true.

const counter = {};
counter.example=“true”;

this is valid javascript, the true meaning of const is that the CONTEXT BINDING is immutable, not the variable. I think this a pretty big difference, and something I would ask at an interview to distinguish good candidates from excellent candidates.

For a mathematician point of view stating something not true is very bad. I know it’s a very good approximation for newbies, but it’s not the truth, and stating something false really annoys me.

I’m looking for the “Effective Java” book of javascript, something to help me open my mind by getting a much deeper understanding of the language.

Another example is tree shaking, and how it relates to writing performant javascript code. Following this video

I improved my knowledge of javascript a lot, even if it is related to dart. Another good book:

http://speakingjs.com/

I feel like these books handle javascript from a CS point of view, rather than a frontend/jquery point of view. Javascript ninja is still my favourite, but each of those books add something very valuable.

Now that I THINK I read every interesting book out there, I am looking for other types of courses, to become a real master.


#10

No, not at all - he isn’t taking a stab at Crockford (at least I don’t get that impression); his point is that it’s a good idea to familiarize yourself with everything the language has to offer, then make your own decisions, instead of taking certain ideas as gospel.

If you’re referring to Chapter 1 of the Up & Going book please keep in mind this is an intro to JS (and potentially programming) book. His explanation of const is entirely valid within the context he’s using it (showing how simple variables can be made constant).

The above being said I agree that Simpson can be abrasive at times and is often contrarian (OLOO anyone? *), but he is hands down the best JS educator I have come across. He’s an excellent presenter, has an in-depth knowledge of the content he’s presenting, and comes up with excellent ways to explain difficult subjects (e.g. his focus on explaining right-hand-side vs. left-hand-side to help explain lexical scope is excellent). His this & Object Prototypes book should be required reading for all JS developers.

(* = I actually really like OLOO and use it quite extensively).


#11

After reading se books ( javascript defintive guide, javascript the good parts, Effective JavaScript: 68 Specific Ways to Harness the Power of javascript, javascript patterns…) I will highly recomend you to read the Kyle Simpson’s books serie on https://github.com/getify/You-Dont-Know-JS to understand javascript better. There a lot of Aha! moments.

Otherwise, books like Effective javascript , javascript patterns or secrets of javascript ninja are great ones. But I recomend you to read the Kyle Simpson’s books before. You can also watch the Pluralsight course named Advanced Javascript.


#12

Theres no need to be a better programmer to be a better project or product manager. The soft skills are far more important.

And a CS approach is all well and good (Im a Comsci myself) - but at the end of the day, theres no avoiding Engineering :slight_smile:


#13

If your aim is “to to be a better developer”, then there is a lot of knowledge that is not tied to the programming language itself. Often that is the best way to start. Problems are not solved by the programming language.


#14

Work with someone who is better than you. Often the best way to improve your ability is a lot of one-on-one time with another more senior developer. Find a very talented developer and offer to help them, for free if you must. It can take many times longer to learn on your own than from another person with years of expertise.

Oh, and look at code. You can look at the code of countless Javascript/Meteor projects on Github. Read it, think about it, compare approaches. You can learn a lot from looking at other people’s code. Look at Meteor core and package code. Look at underscore code.

Finally, can you be more specific? Where do you think you lack ability? Architecture? Exception handling? Data structures? Anything specific? The more specific your question, the more precise the answer you will get.


#15

Ok, I read his first 2 books (up & going, scopes and closures). I placed him on the side, to read more about functional JS, since it’s new stuff for an OO guy, but given all this raving reviews I’ll pick his books as my next reading.

just out of curiosity, have you read Secrets of the JS ninja?

you prefer Don’t Know JS to the Ninja?

very good advice. I learnt a lot from understanding better about the front end, I guess I will have to try more generic books to help me reason better. Any suggestion?

I want to become an overall better dev, by learning how to code smarter. Something which is interesting me a lot recently are transpilers, how they work and what is the expected output. This force me to reason a lot about the code.

For example:

https://forums.meteor.com/t/how-much-does-ecmascript-2015-cost/12208?source_topic_id=17747

How tree shaking can help us? Improving build times is something I carry on from my early college years, as it is strongly related to complexity and graph theory.


#16

I have - it’s a good book, but I didn’t find it that engaging. Granted it’s trying to cover a lot of material in a small amount of pages and it does a good job, but if you’re looking for something similar (and in my opinion better), check out Effective JavaScript: 68 Specific Ways to Harness the Power of JavaScript (by David Herman, one of the TC39 members).


#17

I don’t read it yet (Secrets of the JS ninja) but I would prefer to buy it when the new paperbook edition 2 it will be released. Although, Effective Javascript and Javascript Patterns are also so good. All of them are quite distinct, so it’s good to take a look at each one.

But now I’ve discovered the “You don’t know JS” github repo books and I am understanding a lot of basic concepts that were not clear 100% on the books that I’ve already read (like “Javascript The definitive Guide”, “Javascript Eloquent” and the “Javascript good parts” books).

I think that advanced books (Effective Javascript, Javascript Patterns, Secrests of JS ninja… ) are better to be read after you understand all of the basic concepts.


#18

very good advice. I learnt a lot from understanding better about the front end, I guess I will have to try more generic books to help me reason better. Any suggestion?

Nah, I do not really have any specific advice. Keep a old fashion notebook and a pen within reach. Before you write the first line of code you should have the basic structure and the flow noted and sketched out on your paper. If you find a good flow-chart/design program, use it, but usually pen and paper will take you to the decision making process faster. Don’t start programming until you have a clear idea of what you want to achieve.

Books? We are all different. Read an overview of various methods and see if something sounds comfortable to you. Maybe start with Wikipedia.

https://en.wikipedia.org/wiki/Software_design


#19

…oh, and if you come to a point where you have problem sketching your ideas on paper, that is where you direct your studies. Your finished product might be prettier than your piece of paper, but it will never be better.


#20

Can you explain this statement little more?. Curious to know how you approach when there are so many ‘unknown unknowns’ and you wanted to sketch the ideas but overwhelmed by the choices.

I have been trying to follow this approach but lot of times I am losing focus as each area seems to be like a frigging ocean and don’t really know where to end learning and start doing.