Do you hate JavaScript?

If you follow me on Twitter 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.

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 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, AngularJS, Vue.js, or one of [insert very large number] of frameworks. You can build mobile apps with Cordova, Sencha, Ionic, NativeScript, or tabris.js. You can build desktop apps with Electron or NW.js. You can build robots with Johnny Five or Cylon.js.

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, Firefox, Safari. Modern web browsers have excellent developer tools built-in.
  2. Get yourself a good editor. Visual Studio Code 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.
  3. Install Node.js. Not only is it a great way to play with JavaScript, you get npm, which is an essential tool for installing other JS utilities and frameworks.
  4. Use npm to install 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

Site Cost Description
JavaScript30 Free! 30-day JavaScript Coding Challenge from Wes Bos
ES6 for Everyone! $ Awesome video-based introduction to the JavaScript language using the latest version of JavaScript, from Wes Bos
Eloquent JavaScript Free! "A Modern Introduction to Programming." Book you can read online for free, or get the paperback version.
You Don't Know JS Free! Excellent series of books from Kyle Simpson. Read online for free, or get the paperback books: Up & Going, Scopes & Closures, Async & Performance, this & Object Prototypes, ES6 & Beyond. By the way, Kyle is working on a new book, Functional-Light JavaScript.
MDN JavaScript Guide Free! Mozilla Developer Network is an excellent guide and reference.
Professor Frisby's Mostly Adequate Guide to Functional Programming Free! Online book for learning functional programming concepts using the JavaScript language
Effective JavaScript $ "68 Specific Ways to Harness the Power of JavaScript." A great book.
WatchMeCode $ Excellent video-based training from Derick Bailey on JavaScript, Node.js, Express, MongoDB, jQuery, Docker, Babel, RabbitMQ, and more
Safari Books Online $$ Thousands of books (and videos), including titles from O'Reilly, Apress, Manning, Microsoft Press, and Packt.
Pluralsight $$ Massive library of training videos on practically every programming topic. High-quality videos on JavaScript and related technologies from great authors such as Cory House, Elijah Manor, Kyle Simpson, Jonathan Mills, and Shawn Wildermuth
EggHead $$ High-quality video training on mostly web-based technologies, including JavaScript, React, Angular, Node.js, and TypeScript

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:

In case of emergency...