I feel like I have a pretty firm grasp on OOJS and am proficient at solving any JS problem without using a library. What should I be concentrating on now to be "Javascript developer"?
JS doesn't really become a "thing" until you combine it with the web. Learn the new and recent things that are happening with the web platform - Web Workers, Service Workers (Holy crap this will blow your mind when you learn about it.), WebRTC, etc. I'm going to go directly against the grain of the highest-rated comment here (sorry) and say "DON'T learn any of the frameworks" (Angular, React, whatever one they came out with this week) unless you are completely bored with the web platform / ES6 stuff. Reason: Platform stuff will be here 5 years from now. The framework they are all monkeying with (is it React this week?) most likely won't be. Go ahead and learn one of the frameworks if you want to appear erudite in an interview or something, but otherwise focus on things that will stick. (For suggestions, browse "caniuse.com" and read the crap out of anything JS-related you haven't seen/heard of that at least 2 browsers intend on implementing.)<p>Node. This is the most focused way to become one with "asyncness" in JS.<p>Lodash. is JS zen. Even if you don't use it for everything, try and "think like it" when you are solving problems.<p>For grins and giggles go read some of the "Data Structures and Algorithms in JS" posts or books they have. Do different sorting algorithms.<p>My breakthrough moment in my JS journey was codewars.com . When you see how clever you <i>aren't</i> after understanding other people's much more elegant solutions to problems - only then do you realize what you need to do to get better. True in life - true in JS.
• Patterns (FRP, RP, etc)<p>• Ecmascript 6<p>• Frameworks (React, Ember, Angular are the big three)<p>Beyond that, it's important to understand the pain points that people are trying to solve. For instance, why is React a better approach to front-end UI's than MVC? Is JSX a reasonable approach to the DOM, and is it worth breaking conventional wisdom? What problem does Facebook's css-layout solve? What issues with modularity and reusability are people trying to solve, and how is this different at different scales of complexity? What's the "why" behind the changes to ES6?<p>And even beyond that, look at the future, and see what people are trying to solve that nobody has quite solved yet.<p>In other words, don't just understand what you can do with Javascript, understand what <i>hurts</i> and how people are trying to fix it, or at least make it hurt less.
See if <a href="http://eloquentjavascript.net" rel="nofollow">http://eloquentjavascript.net</a> works for you. It doesn't focus on OO, but that's okay, because trying to model everything as OO in JS is going to be painful.
If you're focusing on OOJS then you should be focusing on learning other programming patterns in JS, because it isn't meant to be used in an OO context.<p>Look into stuff like functional programming, reactive programming, contextual programming. Learn the patterns and learn to apply them in your projects
I have been reading through this awesome book series called You Don't Know JS (youdontknowjs.com), and it's helped me SO MUCH to understand JS at the next level.<p>I had the immense pleasure of taking a workshop with Kyle Simpson, the author, at a conference last year and it covered much of the material from his books. In particular I found the book on 'this' and object prototypes to be fantastic.
I think Rebecca Murphey's latest "Baseline" post [1] covers this pretty well. Not sure I'd include Node, but ES2015, modules, testing and build tools/automation for sure. You should know your way around the browser dev tools, have a good handle on async and promises and understand the DOM and events.<p>[1]: <a href="http://rmurphey.com/blog/2015/03/23/a-baseline-for-front-end-developers-2015/" rel="nofollow">http://rmurphey.com/blog/2015/03/23/a-baseline-for-front-end...</a>
I think you need to get hands on Front end JavaScript frameworks like AngularJS. Also you should be comfortable with widely used JS libraries and plugins (bootstrap, J query etc)
If you haven't already, start compiling a portfolio. Show what you can do, and all the better if you can show that what you've worked on has practical use.