Javascript: A case for fake it until you make it

Any application that can be written in JavaScript, will eventually be written in JavaScript.
— Jeff Atwood

The widely quoted Atwood´s Law seems to still hold true on the aftermath of the FullStack 2015 Conference in London (Oct 26th - 28th) which despite its somewhat misleading name, is a conference on JavaScript, NodeJS and the Internet of Things.

JavaScript has arguably acquired a bad reputation among the developer community which has been struggling all these years with the language’s multiple design flaws. Never meant for production, JavaScript was “hacked” together during the early ages of the World Wide Web as we know it and would conquer a very solid ground in the booming world of Web development, to the point that it became virtually irreplaceable. The reality in 2015 is that JavaScript is still very much in the game and it seems that it is going to stick around for a lot longer that it was initially meant to.


Blurring the line between front-end and back-end development

The revolutionary platform NodeJS which famously brought JavaScript into main stream server-side development boosted the language with a much needed stamina fuelled by a massive injection of developer force. These developers, however, were no longer acting like hostages from the “only tool for the job” kind of language. Instead, these were extremely passionate - if not eccentric, as someone from the audience shouted during Danese Cooper’s keynote - developers with a very strong sense of community which have been contributing greatly to the maturity and relevance of JavaScript.

This very strong momentum is most evident with the impressive amount of code being written in JavaScript today. Very complex applications like Gmail or Slack are written in JavaScript. Everyday we see new libraries popping up one npm install away.


Generation clash

The conference itself was a very representative sample of the bipolarism of the community these days.  Old school programmers see themselves being inevitably dragged in one way or another into the JavaScript world and they are now working together with the 17-year old kids whose introduction to programming was sponsored by WordPress. This creates obvious tensions, though not necessarily bad ones. The kids bring the stamina while the “grown ups” assure quality. Discussions like “end user focus vs developer ergonomics”, “code performance vs code abstraction”, “quality vs speed” were very present in the conference’s program.


A more mature javascript

Another hot topic was the latest update to JavaScript, ES6 or EcmaScript 2015. ES6 has been ratified this year and it features a significant set of improvements that will make JavaScript a more robust and pleasurable language to work with. Among the new features I would highlight the arrow operator and support for classes and modules.

Now, none of us would expect the browsers to keep up with such momentum, and indeed we’ve been observing a rather slow browser adoption. However, the community is determined in setting the pace here and very smartly, it is creating tools that let developers use the latest versions of JavaScript today without worrying about what features are supported by any particular browser. Babel is probably the most common of these tools but others like TypeScript are attracting attention. TypeScript is particularly interesting for its object oriented idiosyncrasies. The support for static typing and type inference, generics, classes, interfaces, modules or namespaces will surely please the more structured developers.

All code is sh*t
— Matteo Collina

Obviously there are many valid trends and reasonings and not everyone is interested in making an OOP language out of JavaScript. That was precisely Matteo Collina’s point with his talk “We are not Object-Oriented anymore, or why the node callback style is awesome”. In this talk he argued against the bloated and over designed object oriented systems and proposed a message oriented alternative. Take a look at his slides here.

Despite all its issues, JavaScript has always been the default language that every programmer is acquainted to. As a programmer myself, I see JavaScript converging to a working tool I would use gladly rather than a tool I would get up to speed reasonably fast if needed to. If JavaScript maintains this awareness to the community’s needs by attending to the countless wrappers, supersets and extensions around the language that helped “faking” the language along the way, perhaps someday its legitimacy will match its popularity and JavaScript will make it to the programming language it was never meant be.