Developing in JavaScript in 2017

This is a bit of a rant…

Many people will be familiar with the funny article How it feels to learn JavaScript in 2016. The thing is, I don’t find it that funny anymore, because it’s pretty much the truth, and I’ve been through it.

In 2017 I’ve done a fair bit of JavaScript development, lots of learning and researching and coding too. You know what, after stepping back and looking at it - the JavaScript ecosystem is nuts. There’s no nice way of putting it, it’s a f**king mess. We’re not talking obscure stuff here, basic things you’d take for granted in any other language like just importing a library into your code can be a horrific journey into conflicting standards, syntaxes & systems.

Here’s just some of the stuff I had to learn, use & research in 2017…

Server Side

  • Node.js & migrating to v8
  • Express
  • Koa

Package Management

  • Yarn vs NPM

Client Side Frameworks

  • Angular 2/4/5
  • Angular.js
  • React
  • JSX
  • Vue.js
  • Ember.js

Framework Tooling

  • Angular CLI
  • Vue CLI
  • Create React App
  • React Starter Kit
  • ngX

Bundling / Building

  • Webpack
  • Browserify
  • Gulp
  • Grunt
  • Vueify
  • Vue-Loader

State Management

  • RxJS
  • Redux
  • Redux-Thunk

JS Core Language

  • Fetch vs XHR vs superagent
  • async / await vs Promises
  • Promises vs Observables
  • Features in ES6 / ECMA2015
  • Features in ES7 / ECMA2016
  • ECMA2016+
  • Features in ESNext
  • Polyfils

Modules & Packages

  • CommonJS vs RequireJS
  • AMD vs ES6 native modules
  • SystemJS
  • Using import vs require
  • .mjs
  • ES6 native modules

Transpiling and Linting

  • Typescript
  • Babel
  • JSlint
  • TSlint

View Templating

  • EJS
  • Mustache
  • Pug / Jade
  • Jinja

UI Frameworks and CSS

  • Bootstrap 3
  • Bootstrap 4
  • Semantic UI
  • Angular Material
  • Sass vs Less

Phew… I hope it gets better, but it shows no signs of slowing down or standardizing. I’m crossing fingers that adoption of EC6 native modules will do away with the CommonJS/AMD/RequireJS insanity.
There’s also hope that WebComponents could do away with the React/Vue/Angular religious war, but I doubt it.

It’s strange, despite all this I still enjoy coding in JavaScript, but sometimes I spend longer Googling “ThingJS vs Blah.JS” than I do writing code.