The only way to master JS is to read one or two books (YDKJS being one of them) and then actually program projects of increasing ambition while asking questions and reading docs.
I'll never understand the obsession with reading so many books and doing so many courses.
Can confirm, I fell into this trap. Read books for about a year and realized I don't know shit and barely could code a hello world app. Then started actually applying those skills to hobby projects and learned 500x much more that way.
I'm a big fan of the online version of Eloquent JavaScript, it has inline code blocks that you can edit and run. Make's it really easy to test out a concept you just read about.
These days I find the most important thing to 'get under your belt' is how to think and design in a language and more importantly, in your chosen frameworks.
Learning a language is usually not too difficult. Getting to the point where you understand how to 'think' in that language can take months.
It's why, when exploring a new language I usually hunt out 'Designing in <framework>' or 'Writing components for <framework>' courses and books. It is the way you glue together an application that is key.
Do people really find language-specific books helpful in better understanding a programming language long-term? Without ever implementing something, I don't think my memory would hang on to some language feature for long.
This is why I love Big Nerd Ranch for learning mobile dev. All of their books are completely focused on building one or two projects from start to finish and teaching you things about the API, dev environment, and best practices as you go. Usually at the end of each chapter there's also a "why" which explains why you had to do the seemingly obscure thing you just did so you're not just copy-pasting code.
Yeah, I rarely read books anymore aside from hunting down very specific knowledge. For example, I recently bought a PDF on using Netty since I find it hard to figure out from scratch.
But language books? I don't really see the value beyond the beginner level. Every a-ha moment for me comes from building something out of my comfort level and then reading other people's approach to the same sort of solution.
The language-specific books have always been helpful in getting me to discern whether I'm making a syntax error or a logical error. When it comes to implementation, I lose interest very quickly if it's something that has already been done reasoning that I can just use someone else's implementation.
So this way, I "fill in the blanks" with what I want to implement, knowing that an error or unexpected behavior is entirely my misunderstanding of the logic and not my misunderstanding of the language.
The best ones are those that have projects at the end of each chapter that incorporate what you've just learned. But yeah, I feel that books are mainly just for jumpstarting into a language, and don't help terribly much in the long-term. It can help with solving problems in the most sensible way for the language, but otherwise it's best to just hammer on a project.
I like to read language-specific books initially to ramp up quickly. Though, my goal is to get to actually building something as fast as possible. The books just make it easy to quickly grab the basics.
- Event handling and construction of finite state machines: defining states and transitions and validating them.
- Using a sane coding standard. Like Google's JS standard rather than the self proclaimed "standard" from feross.
The "request" npm module for example, is a FSM where states are defined by a combination of flags. However you can obtain states that are not handled by the library, because the FSM is constructed poorly without validating state transitions. That is a very common theme in npm modules.
Learning JavaScript the language is trivial compared to learning JavaScript the eco system. I've currently started working on a project using Vue, webpack, babel and bunch of other tools I've never used before and I feel like I'm learning an entirely new language and 90% of the time my actual JavaScript knowledge is completely useless.
I'll never understand the obsession with reading so many books and doing so many courses.