There will always be people that will be attracted by technologies like Clojurescript, Elm or whatever is up on Hacker News — and we need these people! But for the large mass of developers that just want to get sh*t done in a rightish manner the cutting edge is irrelevant. In fact, it can be downright harmful for creating projects that need to be maintained for years to come.
The language and ecosystem have come of age
- Build tools: There are a number of build toolchains out there, these do everything from transpiling, linting to minifying the code. Grunt, Gulp and WebPack are not direct equivalents but are the big three of this genre. If a project already has one of these, changing it will likely yield little results. For new projects I’d use the default one your library or framework suggests.
- Asynchronicity**: For async handling this there are a number of methods like Callbacks, Promises, Generators, Observables and Async/Await. Out of these Callbacks are now obsoleted and it’s widely agreed that Generators are powerful and necessary for library development, but other options are more accessible in higher level development. Async/await superb, but not yet widely supported.
On top of these there are heated discussions on superiority of frameworks and libraries. It’s worth noting that these are all higher level issues than the common conventions used at a lower level. Comparing to the PHP world — there are still developers working with Laravel, Zend of Symfony. But all of them have standardised on low level recommendations (PSRs) for autoloading and Composer for package management.
Choosing between Babel and TypeScript for transpiling or preferring between an opinionated framework like Angular2 or a collection of libraries like React*** is continues to be a matter of taste. But which ever one of these you choose now all build on the ES6 syntax that is compiled down to ES5.
** Asynchronous programming is essentially just programming with no guarantee that the code will execute in the order it is on the screen. This is harder to reason about than synchronous programming where code is logically executed line after line.
*** The once volatile React ecosystem is now largely standardising on Redux and React Router for core requirements needed for any complete application. There are sensible boilerplates like https://github.com/pekkis/react-broilerplate available.
Originally published at www.symfony.fi.