Are you sure you know JavaScript?

in #technology7 years ago

js.png

JavaScript. Most misunderstood programming language on the planet. Almost every web developer has it in his CV. But, how many people really know JavaScript?

If you're one of the older web developers (working around 2010) you know how web applications worked before. You would put HTML files in root directory, CSS in css folder, JavaScript files in js folder, add few libraries and that was it. If you wanted to do something in real time, you would use AJAX. We had jQuery to avoid struggles with cross-browser compatibility and work with interfaces. There were few interesting libraries around the corner introducing us into the mess which will come years later (Knockout, Backbone, Underscore.js) but no one thought we would come so far to build actual desktop applications with JavaScript.

JavaScript ecosystem today is huge. Enormously huge. Preprocessors, transpilers, process managers, package managers, module loaders, state management libraries... are you still with me? To get the slightest idea about it if you haven't programmed in JavaScript before, take a look at this article (it's still relevant). For someone who is just starting out, this is frightening. What's even more frightening is that we have many people today who are sure they know JavaScript very well. And these are the people who are working on web apps we're going to use. The goal of this article is to prepare you for JavaScript of today if you're beginner and to remind you about things you should know if you're experienced JavaScript developer.

So, where do we start?

Fact #1: JavaScript today is not the same as it has been 10 years ago. Currently, most used standard is ES6 (or ES2015). There are ES7 and ES8 too, but ES6 made a huge difference in JavaScript language with lots of new features such as constants, generators, arrow functions, array matching, class definition, reflection etc. To work with ES6 (and newer standards) efficiently, you should learn JavaScript from the ground up. When I say from the ground up, I mean you should look under the hood.

meme-under-the-hood-yep-that-s-the-engine.png

Best way to do this is to look at the series of books You Don't Know JS by Kyle Simpson. Trust me, you will never look at your JavaScript code in the same way. While you're there, you should check the blog of Dmitry Soshinkov. There are some amazing articles on it which are going to help you with understanding language at fundamental level. Douglas Crockford is a man who got involved in development of JavaScript which means he's your next station on this journey.

Wait, I don't understand anything you wrote here. Where should I start as a complete beginner?

If you never programmed in JavaScript before, I warmly recommend you Mozilla Development Network. It's probably the best source on the Internet for learning web technologies today. I'm going to list all of the topics you should learn from there as a beginner;

Basic level

Intermediate level

Advanced level

Who thought such toy-looking language could be so big, huh? Feel free to check YouTube videos if you don't understand some of this concepts from the articles. After you do few projects with it and you feel you're ready to go to the next level, start with this playlist which explains ES6 pretty well.

Why JavaScript became so complicated?

I would say it's because we're trying to escape from it. Let's be honest; JavaScript is quirky language full of weird stuff dangerous for production environments. There are countless articles and videos explaining this much better so I'm going to post one of them to explain my point better (although you would understand it pretty well if you ever worked with JavaScript on more serious level than building website for your neighbor).

We're trying to abstract it away and minimize it's usage while we paradoxically add even more frameworks and libraries into our workflow. There are three major front-end frameworks for building JavaScript applications currently; Angular, React and Vue. Each of them has it's own ecosystem and each does things in a different way, incorporating it's own philosophy. We have different languages which are compiled to JavaScript (TypeScript, Dart, Elm...). We had bower, but npm became more popular and then came Yarn which is like improved version of npm. I'm not even going to start with newer language standards.

The best way to deal with whole mess in JavaScript ecosystem is to sit down before every project and check what you really need and what you don't need. If your app could be written efficiently without using Redux, don't introduce it to the codebase for the God's sake. Don't make your life more complicated than it is. If you don't know which process manager you want to add, try few of them and choose one which works best for you. Experiment. That's the only way to survive this period (I hope it's not going to last long). Don't lose the track of new things in JavaScript community, but don't use every new framework which describes itself as the "chosen one" either.

![1_kE61MPPrgy4u3GnDEcW6CA.jpeg]
()


*I hope you enjoyed this article. If you did, upvote and follow me for more content like this, and comment if you have questions or something to add. Cheers! * 🍻
@originalworks

Sort:  

Congratulations @purest! You received a personal award!

Happy Birthday! - You are on the Steem blockchain for 1 year!

Click here to view your Board

Do not miss the last post from @steemitboard:

Carnival Challenge - Collect badge and win 5 STEEM
Vote for @Steemitboard as a witness and get one more award and increased upvotes!

Congratulations @purest! You received a personal award!

Happy Birthday! - You are on the Steem blockchain for 2 years!

You can view your badges on your Steem Board and compare to others on the Steem Ranking

Do not miss the last post from @steemitboard:

Use your witness votes and get the Community Badge
Vote for @Steemitboard as a witness to get one more award and increased upvotes!

Coin Marketplace

STEEM 0.17
TRX 0.16
JST 0.029
BTC 74831.10
ETH 2823.14
USDT 1.00
SBD 2.52