Sunday, 7 January, 2018 UTC


Summary

Another clickbait title from yours truly. But you already got here, so stick around.
This is all over the Internet!
Which JavaScript frameworks should you learn in 2018?
Top JavaScript Frameworks & Topics to Learn in 2017
Best JavaScript Frameworks To Learn in 2017
Top JavaScript Libraries & Tech to Learn in 2018
I'm so confused, what JS framework should I learn?
Top JavaScript Frameworks & Topics to Learn in 2017
Should I learn a JS Framework?
Which framework should I learn, if any?
What JS framework should I use/learn?
Should I learn Vue.js or stick with Javascript?
Javascript frameworks of 2017?
JavaScript frameworks and topics to learn in 2017
Which JavaScript frameworks should you learn in 2018?
Poll: Which JavaScript framework do you use (and why)?
Ask HN: What is the best JavaScript stack for a beginner to learn?
Ask HN: What frameworks are currently used in a modern web stack?
What Javascript framework should I learn?
Which is the best JavaScript framework? Answer Request
Which are the latest JavaScript frameworks to learn in 2017?
Which is the best JavaScript Framework to learn?
Which JavaScript framework should I learn in 2017, and why?
Which Javascript framework should I go for? React or Angular?
Which framework should I learn?
Why should I learn a front-end JS framework (Angular, React, etc.) and what are their benefits over a more "traditionally" built site?
Learning JavaScript… Should I skip straight to the good stuff (the frameworks)?
Everyone wants to know the quick fix, the one tool that will make them more hireable, more job-able, more client-able and more money-able. I get it, we're all driven by either hype or need. I don't want to criticise that, I just wanted to illustrate the dimension of the phenomenon. This article is not about bashing framework-learners and adorers because I would be the first one in the bunch, to bash.
This article was triggered by a question I found on Quora and aims to offer a very subjective perspective on javascript frameworks and becoming a javascript framework specialist in 2018.
At first, I was tempted to give the "Learn the basics" lecture. I have given that before, countless times.
Do I need to master vanilla JavaScript before I can understand and use frameworks like React and Vue?
Do I need to learn Node.js or JavaScript in detail in order to work with browser automation drivers?
Which syntax is the closest to jquery: angular or react?
How do web-developers deal with javascript-churn?
What should I do to become an enterprise level professional in JavaScript?
Should I learn Angular 1 or Angular 2 as a newbie, in the end of 2016 ?
Is Meteor.js, as a job skill, worth mastering in 2016 if you don't yet know Angular, React, Ember, or Backbone?
Is it possible to become a Javascript expert in one month?
Is it a good idea to use AngualarJS 2.0 for a project starting now and going live on August 2016, considering the fact AngularJS 2.0 is still under development?
But that's not the point. Maybe the person knows the basics, so here's how I discovered my 2018 strategy for technologies, frameworks, learning new things and for specialising myself as a full stack JavaScript consultant. Also, at the very end of the article you'll find the front-end framework I want to work with in 2018.
A bit of backstory.
I always thought it's better to be a generalist. To know a bit of everything. Maybe it's me, maybe it's our national culture — a Romanian is good at almost everything — the thing is that I loved to be Mr. Know-It-All.
That wouldn't be a problem, but I was so absorbed by this that I belittled people who were good at only one or two things. Same with people who believed knowing a bit of everything is not a good way to go about your work. And there was another problem: I wasn't Mr. Know-It-All, but more Mr. Know-A-Small-Bit-Of-Everything — a mouthful, I know.
So along with realising I was being an A-hole to people, in mid-2017 I realised I got my tech strategy wrong. I wanted to start learning Go, to deeper level, and I figured out I just can't add Go to my speciality stack.
Why? Because I had too many!! I was full!!
Nobody would have ever believed I knew 7 programming languages, 15 frameworks, 20 testing tools, automation, DevOps, Agile and a ton of libraries around those languages and frameworks. And the truth is I didn't know. At least not well enough to be considered a specialist.
I am well aware of T-shaped people and E-shaped people concepts. The problem was I was more of an Underscore-shaped person — yea, tweet that if you feel like one, too. Broad base, no real specialty. My only advantage was that I'm a good critical thinker / problem solver and when I get stuck I push through with sheer force.
So I sat down to rethink my strategy. I created a list of things I know well, continued by a list of things I know marginally well, and continued with the list until I reached the part where I was writing down things I would like to learn.
Then I thought about the types of projects I worked on for the past two and a half years. I split them by asking the following questions:
  • How enjoyable was working with the client?
  • How much revenue did the project generate?
  • What was the frustration level once the project was through?
  • What did I learn during that project and how important was that for my growth?
I narrowed it down to a list of 6 items and from that, I generated three lists of technology-related items: frameworks, languages and concepts. For two whole weeks, I opened the note where I had the lists daily. I went through each one and tried to see what I need to remove. I wanted to free up time, brain real-estate and be able to better target future software projects. During that time, I was also thinking about re-designing my personal website, because I felt that it did not represent me. I had used 3 types of static site generators by that time: Jekyll, Hugo and Middleman. For the personal website I used Middleman.
I kept hearing about this React-based static site generator called Gatsby.js but I always thought that was a stupid idea. Until it hit me! I could narrow down the list even further, if I focus on the things that are common to all the 6 projects from my list.
What did Gatsby and React have in common? React, of course!!
So I went one last time thought my initial list of projects and created a single list. One with all the technologies I used, without splitting them into frameworks, languages etc. If I found some technology in more than one place, I would add and extra "1" next to its name. Then I counted up the 1s and if any item had a score bigger than 3, I would add it to my 2018 stack.
This is how I managed to narrow down my technology stack to a simple list.
Ok! We get it, Adrian. You were an entitled douche, a generalist, and you realised heaven is in specialisation. What about the JavaScript frameworks?!
Well, like I said, the title is clickbait. But, if you'd like to know what framework I'm planning to use in 2018, it's React.
The reasons I chose React are simple:
  • It has an amazing and vibrant community.
  • There's a lot of nice tooling built around it.
  • A large company sits behind it and can back development efforts.
  • It is widespread and people know about React even if they're not developers.
  • You can use it for both web and mobile.
  • React Native is amazing for the type of mobile applications I usually build.
So yeah! This year I'm tripling down on React. If you'd like to see the full list of technologies I specialise in, head to the hire me page.
What JavaScript frameworks are you going to learn in 2018? Do you need to learn a new one? Why?
Cheers!
P.S. The commenting system actually works.