Do you hate JavaScript?
Tags: javascript, node, programming, softwaredevelopment
Published: 2017-02-15 20:09:09

---
title: Do you hate JavaScript?
published: true
description: 
cover_image: 
tags: javascript,nodejs,programming,software-development
---

![NAAAAAAAN!](//cdn-images-1.medium.com/max/1600/0*GRB7pnGaz3Uiz9sr.jpg)

If you follow me on [Twitter](https://twitter.com/reverentgeek) you know that I poke fun at JavaScript quite a bit. Someone recently asked me,

_"Do you hate JavaScript?"_

No! I genuinely enjoy using JavaScript to build applications. 

## But, I like a good laugh.

Every programming language I know has its own challenges and peculiarities. JavaScript has a reputation for being exceptionally quirky. And, at times, a bit frustrating and confusing.

Since I use JavaScript a lot, I'm qualified to poke fun at its warts. It would _not_ be cool for me to poke fun at other languages I don't know.

![](//cdn-images-1.medium.com/max/1600/0*-QcXOsYe-ssnF2AO.jpg)

In reality, the JavaScript language itself has gotten _much_ better since ES2015 (ES6). It's a joy to work with. The struggles we face today have more to do with challenges beyond the language. Things like the explosion of libraries to choose from, complexity of frameworks, packaging and build tools, and supporting older browsers.

## There's a JavaScript for that.

There's never been a better time to be a JavaScript developer.

[Atwood's Law](https://blog.codinghorror.com/the-principle-of-least-power/) states: 

> Any application that _can_ be written in JavaScript, _will_ eventually be written in JavaScript.

This is true now more than ever. You can build web sites with [React](https://facebook.github.io/react/), [AngularJS](https://angularjs.org/), [Vue.js](https://vuejs.org/), or one of [insert very large number] of frameworks. You can build mobile apps with [Cordova](https://cordova.apache.org/), [Sencha](https://www.sencha.com/products/touch/), [Ionic](https://ionicframework.com/), [NativeScript](http://www.telerik.com/nativescript), or [tabris.js](https://tabrisjs.com/). You can build desktop apps with [Electron](http://electron.atom.io/) or [NW.js](https://nwjs.io/). You can build robots with [Johnny Five](https://www.sparkfun.com/j5ik) or [Cylon.js](https://cylonjs.com/).

## Want to learn more about JavaScript?

Know nothing about programming? JavaScript is a great place to start! 

Use JavaScript every day? There's always more to learn! That's why I love being a programmer!


### Get some tools.

Here are a few tools you might want to have nearby.

1. Open the JavaScript Console in your favorite browser: [Chrome](https://developers.google.com/web/tools/chrome-devtools/console/), [Firefox](https://developer.mozilla.org/en-US/docs/Tools/Browser_Console), [Safari](). Modern web browsers have excellent developer tools built-in.
1. Get yourself a good editor. [Visual Studio Code](https://code.visualstudio.com/) is currently my favorite for JavaScript. It's free. It works on Mac, Windows, and Linux. Debugging is top notch. And, it keeps getting better and better.
2. Install [Node.js](https://nodejs.org/). Not only is it a great way to play with JavaScript, you get [npm](https://www.npmjs.com/), which is an essential tool for installing other JS utilities and frameworks.
3. Use npm to install [live-server](https://www.npmjs.com/package/live-server). This is a great little web server you can use play with JavaScript, HTML and CSS. It monitors your files, and immediately refreshes your browser with the latest changes. 

Next, check out some learning material. This is _not_ an exhaustive list. If you have a favorite, please suggest it in the comments!

### Resources, books, and videos

<table>
<thead>
<tr>
<th style="text-align: left">Site</th>
<th style="text-align: left">Cost</th>
<th style="text-align: left">Description</th>
</tr>
</thead>

<tbody>
<tr>
<td style="text-align: left"><a href="https://javascript30.com/">JavaScript30</a></td>
<td style="text-align: left">Free!</td>
<td style="text-align: left">30-day JavaScript Coding Challenge from <a href="https://twitter.com/wesbos">Wes Bos</a></td>
</tr>
<tr>
<td style="text-align: left"><a href="https://es6.io/">ES6 for Everyone!</a></td>
<td style="text-align: left">$</td>
<td style="text-align: left">Awesome video-based introduction to the JavaScript language using the latest version of JavaScript, from <a href="https://twitter.com/wesbos">Wes Bos</a></td>
</tr>
<tr>
<td style="text-align: left"><a href="http://eloquentjavascript.net/">Eloquent JavaScript</a></td>
<td style="text-align: left">Free!</td>
<td style="text-align: left">&quot;A Modern Introduction to Programming.&quot; Book you can read online for free, or get the <a href="http://amzn.to/2lIgEEB">paperback</a> version.</td>
</tr>
<tr>
<td style="text-align: left"><a href="https://github.com/getify/You-Dont-Know-JS">You Don&#39;t Know JS</a></td>
<td style="text-align: left">Free!</td>
<td style="text-align: left">Excellent series of books from <a href="https://github.com/getify">Kyle Simpson</a>. Read online for free, or get the paperback books: <a href="http://amzn.to/2kjJRbz">Up &amp; Going</a>, <a href="http://amzn.to/2lc3Ect">Scopes &amp; Closures</a>, <a href="http://amzn.to/2lIpFxp">Async &amp; Performance</a>, <a href="http://amzn.to/2lbSDYx">this &amp; Object Prototypes</a>, <a href="http://amzn.to/2koVKsb">ES6 &amp; Beyond</a>. By the way, Kyle is working on a new book, <a href="https://github.com/getify/Functional-Light-JS">Functional-Light JavaScript</a>.</td>
</tr>
<tr>
<td style="text-align: left"><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide">MDN JavaScript Guide</a></td>
<td style="text-align: left">Free!</td>
<td style="text-align: left">Mozilla Developer Network is an excellent guide and reference.</td>
</tr>
<tr>
<td style="text-align: left"><a href="https://drboolean.gitbooks.io/mostly-adequate-guide/content/">Professor Frisby&#39;s Mostly Adequate Guide to Functional Programming</a></td>
<td style="text-align: left">Free!</td>
<td style="text-align: left">Online book for learning functional programming concepts using the JavaScript language</td>
</tr>
<tr>
<td style="text-align: left"><a href="http://amzn.to/2kL6ggF">Effective JavaScript</a></td>
<td style="text-align: left">$</td>
<td style="text-align: left">&quot;68 Specific Ways to Harness the Power of JavaScript.&quot; A great book.</td>
</tr>
<tr>
<td style="text-align: left"><a href="https://sub.watchmecode.net/">WatchMeCode</a></td>
<td style="text-align: left">$</td>
<td style="text-align: left">Excellent video-based training from <a href="https://twitter.com/derickbailey">Derick Bailey</a> on JavaScript, Node.js, Express, MongoDB, jQuery, Docker, Babel, RabbitMQ, and more</td>
</tr>
<tr>
<td style="text-align: left"><a href="https://www.safaribooksonline.com/">Safari Books Online</a></td>
<td style="text-align: left">$$</td>
<td style="text-align: left">Thousands of books (and videos), including titles from O&#39;Reilly, Apress, Manning, Microsoft Press, and Packt.</td>
</tr>
<tr>
<td style="text-align: left"><a href="https://pluralsight.com">Pluralsight</a></td>
<td style="text-align: left">$$</td>
<td style="text-align: left">Massive library of training videos on practically every programming topic. High-quality videos on JavaScript and related technologies from great authors such as <a href="https://twitter.com/housecor">Cory House</a>, <a href="https://twitter.com/elijahmanor">Elijah Manor</a>, <a href="https://github.com/getify">Kyle Simpson</a>, <a href="https://twitter.com/jonathanfmills">Jonathan Mills</a>, and <a href="https://twitter.com/ShawnWildermuth">Shawn Wildermuth</a></td>
</tr>
<tr>
<td style="text-align: left"><a href="https://egghead.io">EggHead</a></td>
<td style="text-align: left">$$</td>
<td style="text-align: left">High-quality video training on mostly web-based technologies, including JavaScript, React, Angular, Node.js, and TypeScript</td>
</tr>
</tbody>
</table>

## Folks to Follow

I look to other experts to help me stay current with the latest and greatest. Here are a few you might consider following:

* Wes Bos [@wesbos](https://twitter.com/wesbos)
* Cory House [@housecor](https://twitter.com/housecor)
* Derick Bailey [@derickbailey](https://twitter.com/derickbailey)
* Kyle Simpson [@getify](https://github.com/getify)
* Jonathan Mills [@jonathanfmills](https://twitter.com/jonathanfmills)
* Shawn Wildermuth [@shawnwildermuth](https://twitter.com/ShawnWildermuth)
* Elijah Manor [@elijahmanor](https://twitter.com/elijahmanor)

## In case of emergency...

![](//cdn-images-1.medium.com/max/1600/0*YkFn7GkclLWWY4DA.png)