Hey there,<p>I'll start with the disclaimer, as lately HN comments have tendency of becoming toxic - everything I write is my personal opinion.<p>With that behind us I can start. I'll try to write this for someone who knows very little about JS, but knows her/his way around basic programming/cs.<p>Firstly I love JavaScript, I have been writing it for 10 years now, but there are bad parts of it as well.<p>Let's start with good stuff<p>* It is evolving in the right direction<p>* You can do a lot of things with it (web apps, games, mobile apps, server...)<p>* Materials for learning are everywhere<p>* It will be easy to find a job<p>Bad stuff<p>* It is moving at crazy to follow pace<p>* There are a lot of different ways of doing same things<p>* As it is very hip thing to do, there is a lot of bu___hit (beware of the hype train)<p>Learn plain javascript before moving to frameworks. Focus on ES6 and new stuff as it will make your life way easier.<p>* Someone already mentioned Dr. Axel Rauschmayer, pick any of his books - <a href="http://exploringjs.com/" rel="nofollow">http://exploringjs.com/</a><p>* Another good one is You Dont Know JS - <a href="https://github.com/getify/You-Dont-Know-JS" rel="nofollow">https://github.com/getify/You-Dont-Know-JS</a><p>Try to make small app on your own. You'll get into all sort of problems, but that's the fun part I guess. That will help you to understand what frameworks are trying to solve.<p>Then you can start learning one of the frameworks. React, Vue, Angular are all solid choices. My pick is React, as I know it best. Apply the same mindset as with learning plain JS. Try to write your own stuff on a small scale before importing huge libraries.<p>Good example is redux, everybody on the internet are screaming that you should always use it, but even Dan Abramov (author of redux) has great read - You might not need redux <a href="https://medium.com/@dan_abramov/you-might-not-need-redux-be46360cf367" rel="nofollow">https://medium.com/@dan_abramov/you-might-not-need-redux-be4...</a><p>Try handling state yourself, then if you see that you need big guns, try redux. Same goes for any big library or technology.<p>So, buckle up, do it thoroughly and try to find fun in doing javascript. And the most important generic advice - do a real pet project instead of just blindly following tutorials.<p>This will take some time, and if you just want enough knowledge to lend a job, pick a framework, throw yourself into the deep end and swim your way out. This is something I wouldn't recommend but it works for some people.<p>Hope this helps, cheers!
S<p>P.S.<p>Random JS talks I like<p>* Wat - Gary Bernhardt, 2012
<a href="https://www.destroyallsoftware.com/talks/wat" rel="nofollow">https://www.destroyallsoftware.com/talks/wat</a>
It never fails to crack me up<p>* Live React: Hot Reloading with Time Travel - Dan Abramov, 2015
<a href="https://www.youtube.com/watch?v=xsSnOQynTHs" rel="nofollow">https://www.youtube.com/watch?v=xsSnOQynTHs</a>
Classic nowadays, it is a delight to watch Dan Abramov presenting, only thing missing is a mic drop at the end<p>* What the heck is the event loop anyway? - Philip Roberts, 2014
<a href="https://www.youtube.com/watch?v=8aGhZQkoFbQ" rel="nofollow">https://www.youtube.com/watch?v=8aGhZQkoFbQ</a>
This is a must watch for every js developer<p>EDIT: Sorry for the formatting, HN doesn't support markdown