JavaScript Ten Year Challenge
10 years ago, we didn't use JavaScript for many platforms other than the browser. It was to do basic animations and give a wow factor to websites. Of course in 2009, we already had jQuery and Yahoo's MooTools as 2 very popular libraries.
With the modern approach to building websites with needs such as infinite scroll, progressive web apps (PWA) and single page applications (SPA) among others, it became difficult to organise code in vanilla JavaScript. When NPM was invented, a package manager just like the ones that are on other platforms, it opened new possibilities. NPM, released in 2010, opened the doors to development of JavaScript on other platforms and now, it is used to make mobile apps, desktop app and even write code on IoT devices. As the needs changed, so did the ecosystem. With HTML5, we have many new features that were not there before, such as the Shadow DOM and <template> tags. These 2 gave birth to the new generation of frameworks such as Angular, Vue and React.
JavaScript doesn't have types and this makes it difficult to write vanilla JavaScript for scale without using special type of tooling. But worry-not, for people with a background in C# or Java, you simply install Typescript. Just like it's name suggests, you get types that you are used to. Even the structure of the code looks like a C#/Java program and you can easily apply all your skills from OOP directly into JavaScript. When done, typescript will compile your code into optimized JavaScript, which will execute the code faster than if you wrote it vanilla in the first place. As an added advantage, because you are using types, you code will be relatively bug free, as we similarly observe in C# and Java code, due to being forced to make types match across the entire system for related code.
Still, for certain people, JavaScript is not expressive enough. They want to write HTML code within the JavaScript without quoting it. Others want to bring new language features that aren't part of JavaScript specification. In comes Babel. You can now configure your tooling to accept new kinds of programming constructs that will be compiled to plain JavaScript.
People say JavaScript can't replace native programming languages like Objective-C or Java when creating native mobile applications. But with React Native, you do something similar to what you do in C# when using Xamarin, and as a result, get native speeds and native design on your final application.
People were also worried about JavaScript being used to create desktop applications. Well, I would recommend you try out Visual Studio Code. It is an editor written in JavaScript on a framework called Electron. I had to program on a PC with only 2GB Ram for a whole month recently, and Visual Studio Code was able to handle my complex needs without freezing. In it's consoles, I was able to run 2 servers, while watching sass compile on a 3rd and running git commands on a forth. Above that, I had 2 projects open which were running on 2 different platforms and when I opened editors side by side, I was simultaneously getting the correct auto-complete on both. My PHPStorm would have already frozen my system by just running one server from it's editor on such little RAM.
In the modern day, front-end development is about finding a tooling that works well for you. In the year 2019, I would recommend everyone who is serious with providing a very good and consistent front-end to learn at least React (it's main documentation is a 2 hour read) or learn Angular. In case you really don’t like the two, or would consider something like looks like a combination of the two, you could take a look at VueJS.
Let me know in the comments below on your opinions and on what you think it means to be a JavaScript Developer, a front-end developer or both in the year 2019.