Which JavaScript frameworks should you learn in 2018?
Let me first define what I think a coding framework is because the word is debatable. I think a framework is a library that defines structures about every aspect or layer that can make the task of creating applications easier. By layers, I mean things like databases, models, controllers, views, presenters, networks, etc..
Frameworks try to solve most of the big and known problems that are usually encountered by their applications. They have built-in design decisions that you do not need to worry about. They also have carefully-crafted guidelines.
Good frameworks also have smart defaults and follow the convention over configuration concept. The leader of this is the Ruby on Rails framework, which is one of my favorites. In JavaScript land, the leading JavaScript framework out there is Angular. (It's not React.js because I don't think of React.js as a framework)
Now that we cleared this point, let me answer the question in the title: Which JavaScript frameworks should you learn in 2018?
My answer: None.
Let me explain why.
Unless you are in a job that requires you to use a framework, don’t learn frameworks just for the sake of learning. I am talking about learning how to use a framework. This is a knowledge that will expire fast.
On the other hand, you should learn how frameworks work. That is very valuable knowledge. If your motivation to learn a framework is to land a good job, knowing how frameworks work is far more impressive than knowing how to use them.
Learn how to use a framework only when you actually need it.
I think there are far more important skills to learn to become a more in-demand developer:
- Learn everything you can about the JavaScript language itself, its bad parts and good parts, and all the modern features it recently gained. Learn how to build and use the various data structures in JavaScript.
- Learn the JavaScript runtimes like Node and Browsers and learn how they are single-threaded. Learn their APIs and limitations. Learn about the event loop. Learn about the VM’s call stacks. Get comfortable with browsers’ DevTools.
- Learn how to share code between clients and servers and preload initial data. Learn how to minimize JavaScript loading and parsing in browsers. Learn how to load JavaScript on demand.
- Learn the merits of functional programming and use its concepts where you can. Learn how to be declarative instead of imperative when you can.
- Learn about small JavaScript libraries which do one thing and do it well. Pick libraries with the smallest API and don’t focus on the APIs but rather on what these libraries enable you to do.
- Learn how to build scalable data APIs (take a look at GraphQL).
- Learn the power of CSS and how to use it to minimize your applications JavaScript code. Learn the new Flexbox and Grid layouts. Learn about UI-responsive design.
- Learn how to add static types to JavaScript with TypeScript (or Flow) and learn where you should focus on types vs testing.
Thanks for reading.
This article was originally published here
When you're ready to learn React or Node, checkout my books
I create online courses for Pluralsight, Lynda and many more. I also do online and onsite training for teams covering beginner to advanced levels in JavaScript, Node.js, React.js, and GraphQL. Email training@agilelabs.com if you want to book a session for your team.
While I agree with your sentiment here, I must say learning react/redux almost forced me to learn most of the items in your bullet points especially JavaScript and functional programming which I’m grateful for. The other frameworks like Vue and Angular mostly require you to learn domain specific magic strings to get things done which is fine but not very transferable.
I agree with you Samer, developers should be framework agnostic, their effort to gain new knowledge should focus on the core technology itself, which would then enable them to pick up any framework, should the need arise.