5 ms·
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, S
by dccoolgai 12y ago
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.)
Node. This is the most focused way to become one with "asyncness" in JS.
Lodash. is JS zen. Even if you don't use it for everything, try and "think like it" when you are solving problems.
For grins and giggles go read some of the "Data Structures and Algorithms in JS" posts or books they have. Do different sorting algorithms.
My breakthrough moment in my JS journey was codewars.com . When you see how clever you aren't 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.
- bshimmin 12y agoYou're honestly recommending he learn about Service Workers, which are, right now, a working draft with partial support in Chrome and Opera and nothing else? I mean, yes, in a way learning that would give him a taste for what modern development in JavaScript is like, but not really in the nicest sense!
- dccoolgai 12y agoIt is live in Chrome 41 right now (with the exception of the cache API, I think, which it can be used without). It is live in Firefox nightly - and they have clearly stated they are bringing it to Evergreen soon. It is in Opera. Even IE has stated "under consideration". (see https://jakearchibald.github.io/isserviceworkerready/ https://jakearchibald.github.io/isserviceworkerready/ ) It's a lot farther along than a lot of folks realize. And IMHO, the impact of it makes it something that even Safari will have to begrudgingly implement soon after Firefox brings it to production. If I thought it was anything less than inevitable, I'd say "wait". But for a JS-dev, I honestly think this right now is the sweetspot between "Hot Shit" and "Will ACtually Still Be Relevant in 5 Years". (Think XHR 6-7 years ago.) So, yeah, I stand by the recommendation.
- moron4hire 12y agoI recently told a friend who is also learning to program that using frameworks is like driving a speedboat, and he was still learning to swim. Yes, the point is that they get you down the coastline faster, but if it springs a leak, it will be really bad to not know how to swim.
- wwweston 12y agojQuery and underscore/lodash might be a speedboats. Backbone might be a small yacht. Just about everything else popular is a cruise ship or aircraft carrier.
- moron4hire 12y agoThen, if we don't call passengers on cruise ships engineers, then why do we call Angular users engineers?
- Zelphyr 12y agoI wholeheartedly agree with the part about the frameworks. I've been writing JavaScript since it was in beta and I can assure you that you're doing yourself a disservice if that's all you know. Don't start with a framework. It's a crutch. If you feel you've mastered JS then feel free to try out some of the frameworks but I suspect you'll quickly realize they're not really all they're sold as.
- notduncansmith 12y agoI'm going to second most of this. > become one with "asyncness" in JS. This is probably the biggest hurdle most people hit with Javascript. Really understand the concept of asynchronosity, and learn about all the different abstractions over it (callbacks, promises, streams, etc). Then look at how other languages (say, Go and Erlang) handle concurrency. Then come back to Javascript and look at things from a new perspective. > Lodash is JS zen. Even if you don't use it for everything, try and "think like it" when you are solving problems. This largely means thinking in a "functional" way (as in, functional programming), and is golden advice IMO. Probably the most common piece of advice I give people that want to get better at JS is to program in a more functional style. Warning to OP: you mentioned having really grasped OOJS - be prepared to let some of that way of thinking go. There's definitely a place for object-orientation in Javascript, but in my experience, thinking in more functional terms leads to much simpler, easier-to-maintain code. > DON'T learn any of the frameworks This is where I disagree slightly. I don't advocate trying to become a master of every framework-du-jour that comes along, but I think that discerning the key features and insights from popular frameworks is a good way to augment your skills. React promotes a heavily functional style, and emphasizes "one-way flow of data", which I believe is a very powerful concept. One of Angular's more important features is dependency injection - this can do wonders for the structure of your application. These are just some examples, there's plenty to be gained by reading about popular frameworks/libraries, without necessarily becoming a new flavor of zealot every few weeks.
- mandeepj 12y agoLodash looks similar to underscore js[0] [0] - http://underscorejs.org/ http://underscorejs.org/
- RobertKerans 12y agoIt's a fork, with improvements (speed, [a large amount of very useful] extra methods, a curried version, amongst other things)