And we are working hard to make it even worse in 2018

Just stop guys.

Tl; dr: Are you learning JavaScript in 2017? Do you just need a basic website?Are you one of those VanillaJS everything guys?So keep doing old school front end development! It’s no crime to make a simple project with jquery linked from a CDN that stores your entire code in a single .js file, if that solves your problems and your team’s problems then fine!For real, no one is forcing you to learn React. But stop complaining just because there are people who need to solve problems that are different from yours or simply prefer to solve things in a different way from you , that is only making things harder for beginners and moving people away from the JS world.

Recently a translation of How it feels to learn JavaScript in 2016 appeared in the Brazilian JS community making hundreds of developers start bitching about how they hate to write code in JavaScript nowadays.Here are my humble thoughts on the topic.

From 2010 to now it seems that the front end community invents new libraries, frameworks and concepts every week, it is impossible to keep up with The new cool thing™ much less implement it in your project, and that’s awesome. Really fucking awesome!

We are dealing with the web of the future and she is beautiful

The year is 2008, some of your friends come to you with an amazing idea that will make y'all millionaires(or billionaires, I mean…who knows?)

Let’s create a service that can play songs from a huge catalog in the cloud! We can charge a monthly fee and pass on some of the money to the record companies. We can also make a free plan that will be full of annoying ads as long as the money of those who pay for the service (or an investor) can keep the company in operation. The UI could be like this:

It is also good to have a desktop version, after all we are in 2008, Windows 7 will arrive next year and it's gonna be 🔥. On the Desktop it could be something like this:

Sorry no aero in the UI Sketch, and yes people were saying 🔥 in 2008 don't you remember?

First congratulations for the visionary friends you had. I hope they’re still hanging out with you. In 2008 when front end development was simple and wonderful you had an unique option to create the client of that business:

Ok there was also Silverlight and that gross Java thingy your physics professor wrote demos with, but Flash was the good one❤

Flash was a marvel, while “canonical” web technologies were crazy (HTML5 was more of legend than reality). Flash gave you:

Audio and video playback

Real-time communication

Animations with hardware acceleration

A JavaScript-like language

A framework for creating cross-platform GUIs (Adobe Flex)

All this with the guarantee that your app would be available for majority of users since almost everyone had Flash installed. No need to worry about browsers either. EVEN IE6.

But in 2008 people started to use the internet with this thing:

RIP Flash it was cool to play with you.

The Iphone 3G was released in June 2008 and for the first time people were able to browse the web at a decent speed (wonderful 384kbit/s) and with a decent smartphone. But the Iphone didn't come with Flash installed and Apple halted any attempt to deploy it on the platform. Two years later Steve Jobs wrote a letter stating that Flash never would run on Iphones, Ipads and Ipods aka declaring the death of the technology.

Back to your entrepreneurial adventure. Iphone owners are a very large part of the users that actually pay for your service and if you don't make them happy they will go to the competitors. Luckily Apple also provided a solution for this in 2008:

Yes the idea of having a mobile friendly web client for you product is gone, but at least with the App Store you could create native Iphone applications! But forget JavaScript like languages with simple APIs and get ready for this thing:

So in order for you to get into the Iphone you will need to learn how Apple's development eco-system works, basically going back to the c times(manual memory management included) ie, all that time learning Web was thrown in the trash.

But why did Apple kill Flash??? Well…

“Flash is a closed technology owned by Adobe and if people keep using Flash soon Adobe will also own the internet. Apple does not want this” — A poor summarization of Steve Jobs' letter.

The big problem of Flash was that it didn't give you any freedom. Where there is no freedom there is no competition, where there is no competition there is no innovation. Letting a single company take complete control the Web could imply in terrible consequences for the development of technology.

But having a development platform capable of creating applications that run on multiple operating systems, with just one language is still a very interesting idea, whether it’s for your imaginary startup in the late 2000's or for us, front end engineers from the future, a future that started when HTML5 became real.

HTML5: The coolest word a web developer could put in his/her resume at the end of the last decade.

As Flash wasn't invited to the mobile internet party, we needed a new platform that would enable the creation of complex web applications. A free one this time. So browsers rushed to implement all of the wonders that Flash had since the beginning of time besides trying to convince developers that no one needed Flash anymore.

In a short time everything changed, everyone who needed to create desktop-style applications for browsers had to use JavaScript and deal with the DOM. The problem is that these technologies were not made for this type of project. Overall trying creating complicated apps using JavaScript ended up in hellish codebases full of workarounds and bugs.

Yes I know there are several patterns that helped the organization of more robust applications, but it was increasingly difficult to create web apps that were as good as their desktop counterparts, even if you were a big company. Does anyone remember the crap that was Fb messenger in 2011?

In the early 10’s various technologies emerged aiming to help developers create more complex apps. Frameworks such as Backbone, Angular, React, Ember, languages ​​like Elm and TypeScript started the current mess in front end development.We even started messing around with mobile apps.This diversity of technologies is a great thing.

In the first time I went to a Walmart in the US I stopped in front of a big shelf with several different options of rice.

White rice? Brown rice? Organic? Special-super-high-quality-rice-from-Cambodia? * I swear that the shelf was bigger than that *

Even though the number of options may have made it difficult for me to choose what would be in my burrito bowl, an economy so open that there's a lot of competition even in silly things like rice, makes the lives of the people living in it better than the lives of those who live in a place so closed that opening a new company might take months.(Evil Globalist Capitalism FTW). The same thing happens on the web, today there are a multitude of options for anyone who wants to program front end.

More options === more freedom === more innovation === better products. BTW somebody should create a plugin for Babel to make this syntax valid.

Speaking of Babel, have you ever wondered how terrible it'd be if had to wait to use ES6 in any browser if it weren't for this project? If you are the kind of person who thinks Babel/ES6 only complicates things, it might be because you have not yet learned/used the language. Go learn some ES6, it will open your mind 🌟🌟🌟

Learning JavaScript in 2017 is as shitty as learning any programming language. You get the syntax , then you focus on the standard library , then focuses on the 3rd party libraries that are more interesting to the software that you want to create . Is it going to be difficult? Yeah!Is is going to take time get good at it? HELL YEAH! Just like what happens in any other language! Front-end in 2017 can be the most complicated part of a web application. Often you won't solve you problem by simply throwing a Jquery plugin at it. So get used to that.

Anyway, all the tools that appear in the JavaScript world only exist to make the lives of those who have to program front end applications easier. Learning and creating new things is extremely positive. Rather than complain about the amount of packages in npm, you should try out some of these innovative technologies and try to get interesting ideas to your field because for example, while the mobile crowd is still dealing with legacy APIs, closed platforms, absurd compile times and a mandatory language, here on the 2017 front end world with our plethora of packages we’re creating native apps for Android and IOS with live reload and automatic updates

¯ \ _ (ツ) _ / ¯